There is a bridge that makes QBCore-to-Qbox genuinely cheap, and there is no equivalent for ESX-to-anything. Knowing which migration you are attempting is the difference between a weekend and a rebuild.
Framework migration is the most expensive mistake in FiveM, and it is almost always made for the wrong reason: someone read that a newer framework has cleaner code, and decided to move a working community onto it.
Before you do anything, understand that you are not attempting one job. You are attempting one of two completely different jobs, and they differ by roughly an order of magnitude.
The two migrations are not comparable
QBCore to Qbox has a bridge. ESX to anything does not.
Qbox began as a fork of QBCore — its own documentation describes it as starting as a QBCore fork with the goal of improving on it while maintaining backwards compatibility. That compatibility is structural, not aspirational:
qbx_core's manifest contains provide 'qb-core'. In practical terms, a resource that declares a dependency on qb-core is satisfied by Qbox.
The bridge ships insideqbx_core, in a bridge/qb/ directory with its own client, server and shared layers.
Qbox's documentation states it has backwards compatibility for almost all QBCore scripts, with a few exceptions.
So QBCore to Qbox is, genuinely, a tractable job. You move to Qbox, the bridge satisfies most of your existing QB resources, and your work is testing each one and fixing the exceptions.
Every framework comparison on page one of Google was written by someone selling hosting, and not one of them contains a number. We run the crawler that polls every public FiveM server every five minutes. Here is what the fleet actually runs.
Everyone tells you MLO stands for Map Loading Object. There is no primary source for that, and it does not matter. Here is what an MLO actually is, and how to install one without breaking your server.
Now ESX. There is no equivalent. Qbox's bridge exists for QBCore resources — it is not an ESX compatibility layer, and there is no ESX bridge hiding in the core. ESX and QBCore are separate lineages with different core objects, different exports, different events, and different data models. An ESX-to-Qbox or ESX-to-QBCore migration means every resource that touches the framework gets reworked.
If you take one thing from this article: find out which of these two migrations you are actually proposing, because people routinely quote themselves the Qbox number for the ESX job.
What actually breaks
1. Every framework-touching resource
This is the bulk of the work, and the count is higher than you think. Go and grep your resources/ folder for your framework's core object. Every hit is a file that has to be reviewed. Jobs, shops, garages, housing, phone, dispatch, banking, admin menus — on a mature server that is dozens of resources, and each one needs testing, not just find-and-replace.
2. Paid and escrowed scripts
The one that stops migrations dead. If you bought a script that is escrowed (encrypted), you cannot rewrite it for a different framework. Your options collapse to: the author publishes a build for your target framework, or you buy a replacement, or you do not migrate.
Before you commit to anything, go through your paid resources one by one and check whether a version exists for the target framework. Do this first. It is the cheapest step and it is the one most likely to end the project — which, if it is going to end, you want to know on day one rather than after you have rewritten forty resources.
3. Player data
Frameworks model characters, money, jobs and inventories differently. There is no universal exporter. Your data has to be transformed, and the transformation is specific to your two frameworks and your own schema drift over the years.
The failure mode here is severe and public: you migrate, and a hundred people log in to find their money, cars and progress gone. If your community has years of accumulated player data, this is the risk that should keep you up at night — not code quality.
4. The dependency stack
The frameworks do not sit on the same foundations:
ESX depends on oxmysql, and now ships its own first-party esx_inventory inside the esx_core monorepo.
QBCore depends on oxmysql, and its official recipe deploys qb-inventory, qb-target and around seventy other resources. It does not install ox_lib or ox_inventory.
Qbox depends on oxmysql, ox_lib and ox_inventory, and its recipe installs the ox stack including ox_target.
Moving to Qbox therefore also means adopting the ox stack. And note the trap from the inventory side: ox_inventory supports ESX and Qbox, but not qb-core. Its documented framework list is ox_core, ESX, Qbox and ND Core. So "I will just move to ox_inventory and stay on QBCore" is not a plan that works.
5. Your own custom code
Whatever your developers wrote specifically for your server — the thing that actually makes it yours — has no bridge, no upstream, and nobody to ask. It is entirely your problem, and it is usually the least documented code on the server.
How to actually audit the damage before you commit
You do not have to guess at the size of this. Spend an evening and produce a real number, because the number is what decides whether this is a project or a fantasy.
Open your resources/ folder and grep it for your framework's core object — the ESX object, or the QBCore object, whichever you are on. Every file that matches is a file somebody has to open, understand, and rewrite. Put each resource the results point at into one of four buckets:
Free and open source — you can rewrite it, or the target framework may already have an equivalent. Annoying, tractable.
Paid but open — you can rewrite it, but check the licence before you redistribute anything.
Paid and escrowed — you cannot rewrite it. Either the author ships a build for your target framework or this resource dies. Count these carefully; they are the ones that kill migrations.
Custom, written for you — entirely yours, and probably the least documented code you own.
Now count the escrowed bucket. If your server depends on five escrowed resources with no build for your target framework, you do not have a migration plan — you have a shopping list, and you should price it before you write a single line of code.
When migration is actually justified
Migrate when:
The scripts you need do not exist for your framework. This is the only reason that reliably survives contact with the work. If your server's future depends on resources that only ship for the other framework, you have a real problem that migration solves.
You are on QBCore, you want Qbox, and you have checked your paid scripts. The bridge makes this genuinely reasonable.
You have not launched yet. Then it is not a migration at all. It is a decision, and it is nearly free. Make it now, deliberately, using what the live fleet actually runs rather than what is fashionable.
Do not migrate because:
The other framework has cleaner code. Your players cannot see your code. They can see a wiped economy.
A YouTuber said the new one is better. They are not maintaining your server.
You are bored. This is a more common reason than anyone admits, and it has killed communities that were doing fine.
If you are going to do it anyway
Inventory your resources. Every single one, in a list, marked free / paid / escrowed / custom.
Check every paid script for a target-framework build. Before anything else. This step alone will decide the project.
Stand up a second server. Never migrate in place. You want the old one running and untouched.
Migrate a copy of the database, not the database. Write the transformation, run it against a copy, and verify a real character comes out the other side with their money, job, vehicles and items intact.
Rebuild resource by resource, testing each one as it lands. Not all at once — when forty resources are broken you have forty suspects.
Run both servers in parallel with a group of trusted players hammering the new one before you cut over.
Have a rollback plan that you have actually tested, because you will need it at the worst possible moment.
And be honest with yourself about the scale before you start. QBCore to Qbox, with the bridge doing the heavy lifting, is a testing project. ESX to anything is a rebuild that happens to reuse your map and your Discord. If your community is happy and your scripts work, the correct migration is very often no migration at all.
You can check which frameworks the resources you depend on actually support on the FiveM scripts marketplace — every listing declares its framework, which is exactly the audit you need to do before committing to any of this.
Frequently asked questions
Is migrating from QBCore to Qbox easy?
Comparatively, yes — Qbox is a fork of QBCore and ships a compatibility bridge for it. Its manifest declares provide 'qb-core', so resources depending on qb-core are satisfied, and Qbox's own docs say it has backwards compatibility for almost all QBCore scripts, with a few exceptions. Expect to test everything, but not to rewrite everything.
Can I migrate from ESX to QBCore or Qbox?
You can, but there is no bridge for it. Qbox's compatibility layer targets QBCore resources, not ESX ones. An ESX-to-Qbox or ESX-to-QBCore move means every framework-touching resource is reworked and your player data is remodelled. Treat it as a rebuild with a data migration, not an upgrade.
Will my player data survive a framework migration?
Not automatically. Different frameworks model characters, money, jobs and inventories differently, so player data has to be transformed rather than copied. This is the part owners underestimate, and getting it wrong on a live server means wiping people's progress.
Should I migrate my live FiveM server to a new framework?
Usually no. The strongest reason to migrate is that you cannot get the scripts you need on your current framework. Code elegance is not a good enough reason to risk a working community. If you are still planning rather than running, choose carefully now instead.
How long does a FiveM framework migration take?
It depends entirely on which migration. QBCore to Qbox, with the bridge, is a testing exercise across your resource list. ESX to Qbox is a rebuild — the honest unit is months of evenings, not a weekend, and it scales with how many custom and paid scripts you run.
Half the performance advice in FiveM is wrong, including the famous one about Wait(0) — the official docs mandate exactly what the community tells you to avoid. Here is how to find the real culprit.