Quick answer: Cap the cache with Caching.currentCacheForWriting.maximumAvailableStorageSpace and call Addressables.CleanBundleCache after updates to evict bundles no longer in the catalog.

A live-content mobile game ships updates regularly. After months of use, disk usage balloons — old bundle versions are still cached.

Set a Cache Cap

Caching.currentCacheForWriting.maximumAvailableStorageSpace =
    200L * 1024L * 1024L;   // 200 MB cap

Above the cap, the LRU-evicts least-recently-used bundles. Picks the cap with a margin over your actual content size.

Clean After Catalog Update

var updates = await Addressables.CheckForCatalogUpdates().Task;
if (updates.Count > 0)
{
    await Addressables.UpdateCatalogs(updates).Task;
    await Addressables.CleanBundleCache().Task;   // evict old versions
}

CleanBundleCache compares cached bundles against the current catalog and deletes ones no longer referenced. Without this, every new release leaves the old bundles behind.

Pre-Cache Strategically

If you preload heavy content, do it on Wi-Fi only and respect the cache cap — users with small phones won’t let you eat 5 GB silently.

Verifying

Push several content updates; disk usage stays around the cap, not unbounded. CleanBundleCache logs how many bundles it removed. Players don’t complain about storage.

“Set the cap and clean after catalog updates. Without both, the cache only grows.”

For console targets, the cap matters less — storage is fixed. For mobile, treat it as a first-class budget alongside memory.