Every FiveM resource starts with a small file that does a very big job: fxmanifest.lua. Whether you are building a lightweight command, a custom vehicle system, a map add-on, or a full roleplay job, the manifest tells FiveM what the resource contains and how it should load.
It is not the flashiest part of development, but it is one of the first places to look when a resource will not start, a script cannot find a shared file, or an NUI interface loads as a blank screen. Get the manifest right early and your project becomes easier to install, debug, share, and maintain.
This guide is aimed at new FiveM creators, while still covering a few habits that experienced server developers use to keep resource folders tidy.
What is fxmanifest.lua in FiveM?
An fxmanifest.lua file is the metadata and loading configuration for a FiveM resource. FiveM reads it to identify the resource and determine which scripts, assets, interfaces, and dependencies belong to it.
In practical terms, it answers questions such as:
- Which Lua, JavaScript, or C# files run on the client?
- Which files run only on the server?
- Which files are shared by both sides?
- Does the resource include a browser-based NUI interface?
- Does it require another resource to start first?
- Which game build or compatibility settings does it expect?
The manifest lives in the root folder of the resource. If your folder is named my_delivery_job, the usual structure begins with a folder containing fxmanifest.lua, followed by script folders and any assets the resource needs.
FiveM previously used an older manifest format called __resource.lua. You may still encounter it in archived releases or older tutorials, but fxmanifest.lua is the modern format developers should use for new work.
The core entries most resources need
A manifest can be extremely small or fairly detailed. A simple server-side utility may need only a few declarations, while a polished resource with an interface, streamed assets, localization, and framework integration can have many more.
fx_version and game
Most manifests begin by declaring an fx_version and the target game. These settings tell FiveM which manifest feature set is being used and that the resource targets GTA V.
Use a current, documented fx version rather than copying a random value from an old resource. Manifest options can evolve, so the official FiveM documentation is the best place to verify syntax when beginning a new project or updating an older one.
Client scripts
Client scripts run on each player’s game client. They are appropriate for tasks such as drawing markers, displaying notifications, handling local input, opening UI, and reacting to client-side game events.
A client script does not automatically have authority over server data. For example, a client may request to buy an item, but the server should verify the player’s money, inventory, permissions, and the requested price before completing the transaction.
Server scripts
Server scripts run on the server and should handle decisions that matter to fairness, persistence, or security. This includes database operations, permission checks, economy updates, logging, and validation of events received from players.
Keeping important logic server-side is not just a style preference. Players control their own client environment, so client-provided information should be treated as a request to validate rather than a fact to trust.
Shared scripts
Shared scripts are loaded by both the client and server. They are useful for constants, configuration data, helper functions designed for both environments, and event names.
Be deliberate here. A shared file is sent to clients, so it should not contain database credentials, admin-only logic, sensitive webhook URLs, or server-only implementation details.
How to organize scripts without creating a maintenance mess
It is tempting to place every file directly in the resource root when a project is new. That works for a ten-line experiment. It becomes painful once the script grows.
A clear folder layout gives future-you—and anyone collaborating with you—a fighting chance. Many creators separate files into folders for client code, server code, shared configuration, UI files, and streamed assets. The exact names are less important than being consistent.
When declaring multiple files in the manifest, load order matters. If one file defines a function, configuration table, or framework object that another file immediately uses, make sure the defining file is listed first. A surprising number of “attempt to index a nil value” errors are really load-order problems wearing a fake moustache.
A sensible loading workflow
- Load shared configuration or shared utilities first when other scripts depend on them.
- Load framework bridge or initialization files next, if your resource uses them.
- Load feature-specific client and server files after their dependencies.
- Keep optional integrations separate so they can be enabled, removed, or replaced without rewriting the whole resource.
For larger projects, avoid one enormous client file and one enormous server file. Breaking features into focused modules makes debugging faster and reduces merge conflicts when multiple developers work on the same resource.
Adding NUI files correctly
FiveM’s NUI system lets resources present HTML-based interfaces, from a simple menu to a phone, inventory, CAD, or dealership screen. A resource with NUI usually needs two key pieces in its manifest: an ui_page declaration that points to the interface entry page, plus a files list containing the HTML, JavaScript, CSS, fonts, images, and other browser assets required by that interface.
The browser files must be included correctly. If the HTML page references an image, stylesheet, or bundled JavaScript file that is missing from the resource package or omitted from the files list where required, the interface may partially load or fail altogether.
When troubleshooting NUI, check these basics before rewriting your UI:
- Confirm the ui_page path matches the actual entry HTML file.
- Confirm every referenced asset is packaged in the resource and declared as needed.
- Check browser console output through FiveM’s development tools for missing-file or JavaScript errors.
- Verify that your client script sends UI messages only after the resource has initialized.
- Test the UI at more than one resolution and aspect ratio.
Do not rely on a UI file existing somewhere on your computer. If it is not included in the resource distributed to the server, players will not magically receive it.
Dependencies: declare what your resource actually needs
A dependency declaration tells FiveM that another resource or required component must be available before yours can run. This is useful when your project relies on a framework, library, map asset, or another local resource.
Dependencies make installation clearer, but they are not a substitute for good error handling. A dependency may be installed but configured incorrectly, outdated, or missing a required export. Your resource should still fail gracefully where possible and provide an understandable console message.
Also be cautious about assuming every server uses the same framework version or inventory, targeting, dispatch, and database resource. If you publish a script for others, document exactly what it supports. If you offer optional support for multiple ecosystems, isolate those integrations instead of scattering framework-specific checks throughout every file.
Common fxmanifest.lua mistakes and how to fix them
The resource will not start
First, check the server console for the exact error. Common causes include a misspelled manifest filename, an invalid declaration, a malformed file path, or the resource folder sitting one level too deep in the server’s resources directory.
Make sure the resource is also started in your server configuration using the correct folder name. A perfect manifest cannot load a resource the server was never instructed to start.
A script file is not running
Confirm that the file is listed under the correct category: client, server, or shared. Then verify its path and capitalization. Path behavior can differ across operating systems, so a filename that appears to work on one development machine may fail on a Linux server if letter case does not match exactly.
Players can see UI problems but the server console looks fine
This is often a client-side or NUI packaging issue rather than a server error. Check the F8 console, verify asset paths, and make sure your resource has included every required front-end build file. If you use a front-end build tool, deploy its output folder rather than only the source files.
The resource works after restart but not on first join
Look for initialization timing problems. A framework object, player data object, database connection, or another resource export may not be ready at the moment your code tries to use it. Design initialization code around the events and lifecycle methods provided by the dependencies you support.
Testing habits that save time
Test resources on a local development server before installing them on a live community server. Use separate test data where possible, turn on useful logging during development, and read the first error rather than chasing the tenth error it causes downstream.
Before publishing or sharing a resource, run through a short checklist:
- Start the resource from a clean server restart.
- Join with a normal player account and test the main flow.
- Test denied permissions and invalid inputs, not just the happy path.
- Confirm server-side validation protects important actions.
- Verify that all NUI and streamed assets are included.
- Remove development-only debug commands, test credentials, and unnecessary logs.
- Write a short installation guide listing dependencies, configuration steps, and known limitations.
That final point matters more than many creators expect. A well-documented resource earns more useful feedback and fewer support messages that begin with “it does not work.”
What this means for the GTA VI modding future
FiveM development practices are highly valuable for today’s GTA V servers, and the discipline of building modular, validated, well-documented resources will remain useful for creators wherever multiplayer modding goes next.
However, any direct assumptions about GTA VI modding tools, server frameworks, manifests, or FiveM compatibility are speculative and might not accurately represent current or future events. Rockstar, Cfx.re, and other platform stakeholders may introduce different tooling, policies, technical limits, or supported workflows. Build for the platform available now, and wait for official documentation before treating a GTA VI development pattern as confirmed.
Start small, then make it dependable
Your first manifest does not need to be complicated. Start with the files your resource genuinely needs, keep client and server responsibilities clear, and add interfaces and dependencies only when they serve the project. The result is a resource that is easier to test locally and far easier for another server owner to install.
If you are troubleshooting a manifest, comparing approaches, or looking for feedback on your next resource, join the conversation in the SixMods Community Forums. And when you are ready to see what other creators are building, check out the available mod downloads or create a free SixMods account to join the community.
Responses