Getting started
Where to learn FiveM development
The resources FiveM developers actually use: the official Cfx.re documentation and natives reference, the Cfx.re forum, framework documentation for ESX, QBCore, Qbox and Overextended, the Lua 5.4 manual and Programming in Lua, reading open-source resources on GitHub, and how to learn efficiently.
Overview
FiveM knowledge is scattered across official docs, framework sites, forum threads and a lot of outdated video tutorials. Knowing which sources to trust — and in which order to use them — saves beginners weeks of copying code that no longer works.
Official Cfx.re sources
| Resource | Use it for |
|---|---|
| docs.fivem.net/docs | Scripting and server manuals, runtimes, resource manifest |
| docs.fivem.net/natives | Every native with parameters and notes |
| forum.cfx.re | Releases, help threads, announcements |
Lua itself
FiveM uses a modified Lua 5.4. The official Lua 5.4 reference manual (lua.org/manual/5.4) and the book Programming in Lua (lua.org/pil) teach the language properly; our Lua basics and Lua tables guides cover the FiveM-specific parts.
Framework documentation
| Framework / library | Docs |
|---|---|
| ESX Legacy | docs.esx-framework.org |
| QBCore | docs.qbcore.org |
| Qbox | docs.qbox.re |
| ox_lib, ox_inventory, ox_target, oxmysql, ox_core | overextended.dev |
Framework comparisons: ESX vs QBCore vs Qbox.
Reading real code
The fastest way to learn patterns is reading code that many servers run: ox_lib, ox_inventory, qbx_core and the framework repositories on GitHub. Look at how they validate events, structure configs and clean up — then compare with our code review checklist.
Learning efficiently
- Build tiny resources that do one thing — see your first script.
- Read the native’s documentation before copying code that uses it.
- Check the date on tutorials; prefer current framework versions.
- Follow a staged plan — see the developer roadmap.
Frequently asked questions
Where is the official FiveM documentation?
At docs.fivem.net, with the natives reference at docs.fivem.net/natives.
Where can I learn Lua for FiveM?
The Lua 5.4 manual and Programming in Lua for the language, plus FiveM-specific guides for natives, events and resources.
Where are the ox_lib docs?
At overextended.dev, together with ox_inventory, ox_target, oxmysql and ox_core.
Are YouTube tutorials reliable?
Some are, but many are outdated. Check the date and compare with official and framework docs.
Need this built, not just explained?
Ten years of FiveM work, from Lua to NUI
Custom resources, React NUI, ESX / QBCore / Qbox integration, OneSync performance audits and security reviews — plus the websites and SEO around your server brand.
Related guides
- Getting startedA roadmap for becoming a FiveM developerStage 1: Lua basics and your first resource. Stage 2: client vs server, events, natives and threads. Stage 3: a framework (ESX, QBCore or Qbox), ox_lib and the database with oxmysql. Stage 4: NUI interfaces. Stage 5: performance (resmon, profiler) and security (validated events, SQL placeholders). Stage 6: tooling (VS Code, Git, local server). Stage 7: documentation, selling on Tebex, freelancing and a portfolio.
- Getting startedWrite your first FiveM script, step by stepCreate a folder resources/my_first, add an fxmanifest.lua with fx_version 'cerulean', game 'gta5', a client_script and a server_script, then write a client command that loads a model with RequestModel, waits for HasModelLoaded, spawns it with CreateVehicle and seats the player with SetPedIntoVehicle. Add ensure my_first to server.cfg, restart, and type /car adder in game.
- Getting startedThe Lua you need for FiveM, from zeroAlways declare variables with local. Lua has nil, booleans, numbers, strings, tables and functions; only nil and false are falsy (0 and empty strings are true). Use if/elseif/else, numeric for i = 1, 10, for k, v in pairs(t) and while. Concatenate strings with .. and format with string.format. CfxLua adds vector3, backtick hashes, CreateThread and Wait.
- EngineeringNatives: the game functions behind every FiveM scriptNatives are the game’s built-in functions. The Cfx native reference lists them by namespace (PLAYER, ENTITY, VEHICLE…) with parameters and notes. In Lua and JS you call them in PascalCase — GET_ENTITY_COORDS becomes GetEntityCoords. Some are client-only, some server-only (the CFX namespace), and out-parameters come back as extra return values.