Skip to content
Instant download after checkout
Join The Discord Today
discord.gg/EskoKustomz
Instant download after checkout
Join The Discord Today
discord.gg/EskoKustomz
Instant download after checkout
Join The Discord Today
discord.gg/EskoKustomz
Esko Kustomz
All posts
Tutorials6 min read

fxmanifest.lua Reference: Every Documented Field, Plain English

Every FiveM resource starts with an fxmanifest.lua. Here is what the official Cfx.re docs say each field actually does, in the order you usually need them.

#fxmanifest#fivem#resource manifest#tutorial#fivem dev

Every FiveM and RedM resource has an fxmanifest.lua at its root. The file tells the platform what version of the runtime to use, what scripts to load, what files to ship to clients, and which game-data files to register. This post covers each documented field with its official purpose, sourced from the Cfx.re documentation at docs.fivem.net.

Required: fx_version and game

fx_version defines which version of the resource manifest spec your resource uses. The official docs list three valid values:

  • cerulean (2020-05) - the current FXv2 resource version. The docs describe it as "loads NUI resources in a 'secure context' to support WASM and fetch APIs."
  • bodacious (2020-02) - older FXv2 version. "Implies task scheduler disabling and removes window from JS contexts."
  • adamant (2019-12) - "the mandatory version for RedM; equivalent to the legacy manifest GUID."

For new GTA V resources in 2026, use cerulean.

game specifies which game API the resource targets. Documented values are gta5 (FiveM), rdr3 (RedM), and common for resources that work in both.

Script loading: client / server / shared

Three directives load Lua, JS, or .NET scripts:

  • client_script - "Defines a script to be loaded on the client." Supports globbing patterns. File extension determines the runtime (.lua, .net.dll, .js).
  • server_script - "Defines a script to be loaded on the server."
  • shared_script - "Defines a script to be loaded on both sides." Useful for shared types or constants that need to exist on both client and server.

UI: ui_page

ui_page "sets the resource's NUI page to the defined file or URL." Both local files ('html/index.html') and absolute URLs are supported. NUI is FiveM's CEF-based UI layer.

Files shipped to clients

file "adds the specified file to the resource packfile, to be downloaded by clients upon loading." Use this for any HTML/CSS/JS asset, image, or auxiliary file your client-side scripts or NUI page references. shared_script implicitly adds the script to the packfile, but standalone HTML/CSS/etc. files need explicit file entries.

Game data files

data_file "adds a data file of a specified type to the game extra content system." This is how custom vehicles, handling tables, audio packs, and other GTA V data files get registered with the engine.

The official docs explicitly demonstrate three types but note the system supports more:

  • VEHICLE_METADATA_FILE - your vehicles.meta
  • HANDLING_FILE - your handling.meta
  • AUDIO_WAVEPACK - audio asset registration

Vehicle resources commonly also use CARCOLS_FILE and VEHICLE_VARIATION_FILE for carcols.meta and carvariations.meta respectively, though these are not in the official examples.

Dependencies

dependency (and the plural dependencies form for multiple) "requires the specified resource to load before the current resource." This is what lets you depend on es_extended, oxmysql, ox_lib, etc. Cfx documents that the directive also supports runtime constraints, including specific server build versions and server policies.

Exports

export "defines a global function to be exported by a client script for Lua/JS." server_export does the same for server scripts. Exports are how cross-resource calls (the exports['resource']:func() pattern) get registered.

Less commonly used directives

  • server_only - "Marks the resource as being server-only. This stops clients from downloading anything of this resource." Useful for admin tooling, database glue, etc.
  • this_is_a_map - "Marks this resource as being a GTA map, and reloads the map storage when the resource gets loaded."
  • provide - "Marks the current resource as a replacement for the specified resource." Used when shipping drop-in replacements for stock resources.
  • node_version - lets you select a Node.js version for server-side JS scripts. Default is 16; the docs note version 22 is available.

What about lua54?

Older tutorials still tell you to add lua54 'yes'. The official documentation notes this directive is now deprecated - "Lua 5.4 is default as of June 2025." For new resources you can omit it. Existing resources will not break by keeping it, but newly written manifests do not need it.

Minimal example

A minimum-viable manifest for a vehicle pack looks like:

fx_version 'cerulean'
game 'gta5'

files {
  'data/handling.meta',
  'data/vehicles.meta',
  'data/carcols.meta',
  'data/carvariations.meta',
}

data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'CARCOLS_FILE' 'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'

Stream files (stream/*.yft, stream/*.ytd) auto-load without explicit declaration.

Sources

Browse the lot

Drag, drop, drive. Lore-friendly originals and curated real-vehicle conversions for FiveM.

Related field notes