Quick answer: Addressables → Build → Update a Previous Build, point at the addressables_content_state.bin from your shipped player. Never use New Build for live patches.
You shipped 1.0. You patch a level. You run a fresh build, upload bundles. Live players still load the old level. Their catalog points at hashes that don’t match the new uploads.
The Symptom
New bundle URLs return 404 in player logs. Old assets continue to load from cached catalog. Or assets load but show pre-patch state.
The Fix
Window → Asset Management → Addressables → Groups
Build → Update a Previous Build
Pick: ServerData/[Platform]/addressables_content_state.bin
(the .bin saved when 1.0 shipped)
Output:
Modified bundles get new hashes
Catalog references updated entries
Unchanged bundles keep their hash — cached players don't re-download
Upload the new ServerData folder. Players auto-fetch the updated catalog and only re-download changed bundles.
Workflow Rules
- Commit
addressables_content_state.binto source control with each shipped player build. - Tag bundles as Cannot Change Post Release for assets that must be embedded in the player.
- Run Check for Content Update Restrictions before building; it flags illegal modifications to non-updateable groups.
Verifying
Run a built player against the new catalog. Profile the loads: only modified bundles should be downloaded. Old install + new content = small delta, not full re-download.
“Update a Previous Build. Old .bin in hand. Live players patch cleanly.”
Related Issues
For IL2CPP reflection stripping, see link.xml. For shader variant stripping, see keyword strip.
Save the .bin. Update from it. Patches land.