Quick answer: Mark groups containing assets that reference your scripts as Cannot Change Post Release. Those go in the next player build, not in Content Updates. Asset-only groups (textures, audio) stay Can Change Post Release and ship via Content Update.

Patch goes out via Content Update CDN. Players crash on load. The culprit: a MonoBehaviour got a new field, the bundle still references the old layout, deserialization breaks.

The Symptom

After running Build For Content Update following script changes, deployed builds throw deserialization errors or have null references where serialized fields should be set. Original player builds work fine.

What Causes This

Addressables Content Update relies on assembly-stable deserialization. Scripts compile into the player assembly; bundles serialize references to types in those assemblies by GUID + offset. Editing the script changes the offset; old bundles can’t deserialize.

The fix is to never put script-referencing assets in Content Update groups. Force them into the next full player build.

The Fix

Step 1: Set group update restriction. Open Addressables Groups window. For each group, Inspector → Schema → Update Restriction:

Step 2: Build For Content Update. Window → Asset Management → Addressables → Build → Update a Previous Build. Pick the addressables_content_state.bin from the previous player build. Unity rebuilds only the Can Change groups.

Step 3: Snapshot the state. The state file lives in Assets/AddressableAssetsData/<Profile>/addressables_content_state.bin by default. Commit it after each player release; Content Updates diff against it.

Workflow

// On player release
1. Build > New Build > Default Build Script
2. Commit addressables_content_state.bin
3. Ship player build + initial bundles

// On content update
1. Edit only Can Change Post Release groups
2. Build > Update a Previous Build
3. Upload only the new bundles + updated catalog

Verifying

Run the player build with the Content Update bundles deployed. Profiler → Addressables Profiler shows which catalog version is in use. Loads should succeed without deserialization errors.

“Cannot Change Post Release for script-touching groups. Build For Content Update for art-only patches.”

Related Issues

For Addressables handle leak, see handle leak. For remote cache stale, see cache stale.

Lock the script bundles. Update the safe ones.