Resource manifest entry reference
fxmanifest.lua runs in its own Lua runtime, separate from resource scripts. It describes metadata and loading; it does not share ordinary variables with client.lua or server.lua. Start with the practical manifest guide; this page supplies the complete built-in entry and version reference from the pinned upstream manifest manual .
Entries and downloaded files
| Entry | Meaning and constraints |
|---|---|
fx_version | Select a named feature level; cerulean is the current named level in this source. Later levels inherit earlier behavior except overrides. |
game / games | gta5 for FiveM, rdr3 for RedM, common for only CitizenFX APIs without game-specific APIs. Multiple games do not automatically make game-specific code portable. |
resource_manifest_version | Deprecated GUID feature level in __resource.lua; migrate to fxmanifest.lua and a named fx_version. |
client_script / client_scripts | Run on clients and implicitly include scripts in the client packfile; supports globs. |
server_script / server_scripts | Run on the server; supports globs. Do not separately put server-only scripts or secrets in files. |
shared_script / shared_scripts | Run separately on both sides and include in client downloads; supports globs. Shared is not private. |
export / exports | Export a client Lua/JS global function. Prefer runtime exports('name', fn) or C# Exports.Add where appropriate. |
server_export / server_exports | Equivalent manifest declaration for a server global. |
ui_page | Local NUI entry file or an absolute URL. Local HTML and its dependencies must also be packaged. |
before_level_meta | Load a level meta before the main level meta; deprecated in favor of data files when possible. |
after_level_meta | Load a level meta afterward; also deprecated in favor of data files. |
replace_level_meta | Replace the primary level meta; package the named .meta file. This is a map-authoring operation, not a general configuration fix. |
data_file | Register a typed content file. The filename supports globs; package the actual data. See data-file types. |
this_is_a_map | Marks a map resource and reloads map storage when loaded. The documented marker uses 'yes'; presence matters. |
server_only | Prevent clients from downloading the resource. Do not combine with a feature that needs client code. |
loadscreen | Select the loading-screen HTML; package its files. |
loadscreen_manual_shutdown | Keep the NUI loading screen open until ShutdownLoadingScreenNui; replaces the unsupported manual-shutdown native. |
file / files | Add files to the client packfile. Include assets actually referenced by the feature, not entire private directories. |
dependency / dependencies | Require earlier resource loading or one of the runtime constraints below. |
escrow_ignore | Leave selected supported files unencrypted during asset escrow processing; this is not a download exclusion. |
lua54 | Deprecated since all Lua scripts moved to 5.4 in June 2025; no longer necessary to enable the runtime. |
node_version | Server JavaScript runtime selection. This pinned manual lists 16 as default and 22 as the alternative: node_version '22'. It does not change client JS or NUI. |
provide | Advertise a resource as a replacement for another resource dependency. API compatibility is still your responsibility. |
use_experimental_fxv2_oal | Enable experimental Lua One Argument List native invocation; requires correct native types and explicit vector coordinates. |
clr_disable_task_scheduler | Disable the custom server C# scheduler; implied by bodacious and later. Resume on the game thread before native calls, for example with the documented await Delay(0) pattern. |
convar_category | Expose grouped configuration controls in FxDK Project Settings. |
The loader distinguishes .lua, .js and .net.dll. For compiled C# use the appropriate CitizenFX client or server assembly; a DLL referencing the wrong context is not corrected by changing the filename. author, description and version are useful metadata rather than application secrets.
Globs
*.lua matches Lua files in the current directory, not arbitrarily deep folders. dir/*.dll matches DLLs inside dir, not b.dll at the resource root. The latter distinction corrects an ambiguous example in the pinned table. **/*.lua and **.lua are recursive forms; **/cl_*.lua restricts matching filenames by prefix. Globbing support belongs to the entry type, not every arbitrary metadata field.
Do not depend on a broad glob to establish module initialization order. List startup files explicitly when one must run first, and exclude build tools, tests, private JSON and server code from client globs.
Custom metadata and exports
Plural declarations expand into repeated singular metadata. A custom declaration can have extra data serialized under an _extra key:
-- fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
version '1.0.0'
docs_feature 'preview' { limit = 20 }
server_script 'server.lua'-- server.lua
local resource = GetCurrentResourceName()
local count = GetNumResourceMetadata(resource, 'docs_feature')
for index = 0, count - 1 do
local name = GetResourceMetadata(resource, 'docs_feature', index)
local extra = GetResourceMetadata(resource, 'docs_feature_extra', index)
print(name, extra) -- extra is JSON text; validate before using decoded data.
endMetadata indexes are zero-based. A manifest declaration such as export 'readPreview' requires a corresponding global in client code. Runtime exports('readPreview', function() ... end) avoids the global declaration; consume on the same side with exports.resource_name:readPreview() in Lua or Exports["resource_name"].readPreview() in C#. Neither form crosses the client/server network boundary.
Runtime constraints
| Constraint | Example | Meaning |
|---|---|---|
server | /server:9500 | Minimum server artifact/build number. |
policy | /policy:subdir_file_mapping | Required server-key policy, such as the documented clothing-support policy. |
onesync | /onesync | State awareness must not be disabled. |
gameBuild | /gameBuild:h4 | Minimum game build; accepts the sv_enforceGameBuild values. h4 maps to 2189. |
native | /native:0xE27C97A0 | Specified server-side native must be available. |
A dependency failure is a startup diagnostic: fix the required environment or intentionally revise the requirement after testing. Deleting constraints to suppress an error can leave the resource executing unavailable APIs.
NUI, maps and experimental invocation
cerulean uses a secure NUI context; browser callback fetches must use https://, including local resource callbacks. An external ui_page is permitted, but brings network availability and content-trust concerns. Loading screens use a separate lifecycle from a normal NUI menu.
OAL does not unpack a vector3 into separate native coordinates. Supply coords.x, coords.y, coords.z explicitly along with every remaining native argument. Wrong or unknown native parameter types can fail unexpectedly under OAL. Treat it as a measured compatibility change rather than a universal performance flag.
FxDK ConVar descriptors
A category contains a description and a list of field descriptors. Each descriptor begins with display title and variable name, followed by its type and parameters.
| Type | Parameters after title and variable name |
|---|---|
CV_STRING | Type, default text. |
CV_BOOL | Type, default boolean, optional checkbox label. |
CV_INT | Type, default number, optional minimum and maximum. |
CV_SLIDER | Type, default, minimum, maximum. |
CV_COMBI | Type, default, minimum, maximum; slider plus manual input. |
CV_PASSWORD | Masked input. The pinned source labels this type but prints CV_SLIDER in its sample tuple; verify the FxDK implementation before relying on that inconsistent tuple. Masking does not make replicated data private. |
CV_MULTI | Type, list of name/value pairs; the first item is the default. |
Use $variable in the descriptor for replicated setr values and #variable for public-info sets values. Example:
convar_category 'Preview' {
'Local preview resource settings',
{
{ 'Theme', '$docs_theme', 'CV_STRING', 'dark' },
{ 'Items', 'docs_items', 'CV_INT', 20, 1, 100 },
{ 'Mode', 'docs_mode', 'CV_MULTI', {
{ 'Off', 'off' },
{ 'Preview', 'preview' }
}}
}
}Named FXv2 versions
| Version | Changes recorded by upstream |
|---|---|
adamant (2019-12) | Equivalent to the 44febabe FXv1 level; requires game and is mandatory for RedM. |
bodacious (2020-02) | Implies disabling the custom C# server task scheduler and stops defining browser-like window in JS script contexts. |
cerulean (2020-05) | Secure NUI context, WASM/fetch support and HTTPS callbacks. |
Historical GUID versions
These explain old resources; they are not recommended declarations for new work.
| GUID | Historical behavior |
|---|---|
00000000-0000-0000-0000-000000000000 | No-version behavior; client Lua used natives_21e43a33.lua. Upstream warns against relying on this legacy level. |
77731fab-63ca-442c-a67b-abc70f28dfa5 | December 2016 minimum FXServer operating level; no listed feature change. |
f15e72ec-3972-4fe4-9c7d-afc5394ae207 | April 2017 native snapshot through natives_0193d0af.lua. |
44febabe-d386-4d18-afbe-5e627f4af937 | Universal client native file natives_universal.lua and newer native snapshot. |
05cfa83c-a124-4cfa-a768-c24a5811d8f9 | Registers scripts as game network scripts, affecting entity creation with network flags. |
After migration, test startup, dependencies, exports, NUI callbacks and networked entity behavior on the actual target track. A syntactically valid manifest does not certify those behaviors.