Addressables or Asset Bundles: A Straight Answer for Mobile Devs
Addressables is the right default for most new mobile projects, but not all of them. Here is what each system actually does, what migration really costs, and how to choose.

Addressables is the right default for new mobile projects. It manages loading, dependencies, and remote content for you, which is most of what teams build by hand on top of Asset Bundles. Bundles still make sense when you already have working tooling or need control the higher-level system does not expose.
Why this matters
This decision looks like a build setting and behaves like an architecture choice. It determines how content is loaded, how updates are shipped, and how hard it is to reduce install size later.
Choosing late is expensive. Retrofitting either system into a project that loads everything directly touches nearly every scene and script.
Choosing early is cheap, which is why it is worth an hour now.
What each system actually is
Asset Bundles are the lower-level mechanism. You group assets into archives, build them, ship or host them, then load them by name and manage their lifetime yourself. Unity gives you the archive format and the loading calls. Everything else is yours to write.
Addressables is a system built on top of that mechanism. You mark an asset as addressable, give it a key, and load it by key. The system decides which bundle it belongs to, resolves dependencies, tracks references, and handles whether it comes from the device or a server.
The choice is not really between two loading systems. It is between using content management somebody else wrote and writing your own.
The case for Addressables
For most teams, this is the shorter conversation.
- Dependency resolution is automatic. Load a prefab and everything it needs arrives with it. Hand-rolled bundle systems get this wrong constantly.
- Local and remote are the same call. You can move content to a server later without changing loading code.
- Reference counting is built in, which prevents the classic bundle bug of unloading something still in use.
- The profiler shows what is loaded, which turns memory debugging from guesswork into reading.
- Build layout is data, not code. Regrouping content is a configuration change rather than a refactor.
The practical consequence is that a small team gets content delivery without dedicating an engineer to owning it.
When Asset Bundles still make sense
There are real cases, and dismissing them is how teams end up fighting a system.
- You already have working bundle tooling. A pipeline that ships reliably is worth more than a cleaner abstraction.
- You need unusual control over exactly which assets land in which archive, for patch size reasons on a large title.
- You have an existing content pipeline outside Unity that produces bundles as part of a larger system.
- Your update mechanism is bespoke, for example driven by a backend that reasons about content at a level Addressables does not model.
None of these apply to a typical first mobile title. Most teams reaching for bundles are choosing familiarity, which is a reasonable but expensive preference.
Migration cost, honestly
Moving an existing project is real work, and it is usually underestimated by about half.
| Task | What it involves |
|---|---|
| Marking assets | Straightforward, but touches a lot of files |
| Replacing direct references | The bulk of the work, and the risky part |
| Rewriting load points | Loading becomes asynchronous, which changes call sites |
| Handling load failures | New code paths that did not exist before |
| Testing memory behaviour | Reference counting bugs surface late and look random |
The asynchronous point is the one that surprises people. Direct references resolve instantly; addressable loads do not. Every place that assumed an object was available immediately now needs a wait, and that ripples through initialisation code.
Budget a sprint for a small project and considerably more for a large one. Do it between milestones, not during a push.
Remote content and patching
This is where the system earns its cost, and it is worth understanding before you commit.
Remote content lets you ship a smaller initial download and fetch the rest on demand, which connects directly to the size work in Cut Your Unity Build Size in Half.
Three things to get right from the start.
- Version your content against your app. A build that fetches content made for a different version fails in confusing ways. Include a version in the path.
- Handle the offline case explicitly. Decide what a player sees when content cannot be fetched, and build it early rather than after a support ticket.
- Keep the first session local. Anything needed in the first minutes should ship in the build. Making a new player wait on a download is the most expensive possible place to save space.
Content updates without a store review are the headline benefit. Be careful with it. Both platforms have rules about changing an app's behaviour after review, and remote content that alters gameplay significantly is worth checking against them.
What we would do
Start new mobile projects on Addressables, configured simply. One or two groups, everything local, no remote content. That costs almost nothing and leaves the door open.
Move content remote only when you have a reason: install size crossing a threshold, or content volume that genuinely grows after launch. Adding remote delivery before you need it buys complexity and no benefit.
For an existing project loading everything directly, migrate when size or memory becomes a real problem, not before. And migrate in one deliberate pass rather than gradually, because a half-migrated project has the drawbacks of both systems.
The short version
- Addressables is the sensible default for new mobile projects.
- It provides dependency resolution, reference counting, and local or remote loading behind one call.
- Bundles remain reasonable when you have working tooling or need unusual control.
- Migration cost is mostly replacing direct references and handling asynchronous loading.
- Keep first-session content local, version remote content against the app, and handle offline explicitly.
- Start simple and local; go remote when size or content volume demands it.
Set up Addressables on your next project before you write the first load call. If you are weighing a migration on a live game, tell us about the project.
Related reading: Cut Your Unity Build Size in Half, Unity Mobile Performance, and Owning Your Backend.
Got a game idea? We build it.
You bring the concept. We design, build, test and launch it, and you own 100% of the finished game.
Share Your Game Idea →