Feedback wanted - Addressables Survey

Hello everyone,

If you’ve been using the Addressables package, we’d love to hear from you. We’re running a short 5–10 minute survey to better understand the community’s experience with Addressables, especially around overall satisfaction and usability.

Whether you use Addressables a lot or only from time to time, your perspective is valuable to us. Hearing from people across different backgrounds and workflows helps us build a clearer picture of how Addressables is being experienced in practice.

If you have a few minutes to spare, we’d really appreciate your participation! The survey will be open until August 20th, 2026.

Thank you in advance for your time and support!

:right_arrow: Link to Survey

9 Likes

It was about time, happy to share my thoughts but I forgot one thing to say:

My game is using Addressable for everything, from scenes to assets and one annoying thing is:

I had to make a system for checking if I entered playmode correctly (which means using “asset database” or “existing build” when clicking play);

This because when loading other scenes it was very easy to make the error of entering playmode with the editor scene and then loading another scene as addressable instead, which breaks everything expecially with shared scriptableobject.

Is just these things that makes working with addressable so much more frustrating than normal scenes. But I would also say that I fully recognise the usefulness of this system to be able to REALLY loading and unloading asset from memory and that’s basically why I use it.

1 Like

A few feature requests, to perfectly integrate addressables, so it will be way less pain to use (please correct me if the feature is already planned or implemented).

Auto-De-Duplication at build time
Instead of manually creating the duplicate asset isolation group with a rule (that you need to execute every time anything is changed), automatically de-duplicate asset groups at build time. Never save those groups directly on the disk (other than maybe a temp folder), as we don’t want clutter in our projects / source control.

Duplication Clusters:

  • A single local duplicate-asset-isolation group (de-duplicating the local bundles)
  • Multiple remote duplicate-asset-isolation groups (de-duplicating the remote bundles into clusters)

Clustering Rules
Bundles that are close together (i.e. levels in ascending order, such as Level 3-6), should be clustered, and a de-duplication group should be created for those clusters. This is only meaningful when we can set clear rules for de-duplication (i.e. only deduplicate if more than 5mb of download size are saved by the de-duplicaiton)

A simpler de-duplication clustering rule would be - only de-duplicate local assets, and keep remote assets duplicated (which is fine for most games)

Build Report
Currently the addressable-build-report is slow and annoying to navigate. Please include the build-report in the normal build-report txt file, so we can easily see how much space is used up by the bundles and also local usage + remote usage

Build Size Preview
There should be a clear preview of how large each bundle will be at build-time. This should include an preview all de-duplications. (It’s fine if de-duplication preview only works once a build-report was generated)
My Suggestion: write the size of each bundle beside the bundle name in the bundle explorer window.

Large Asset Warnings
Add warnings for unusually large assets or uncompressed assets. I.e. when a texture with 50mb is included in the build. Make them easy to discover. This could be a significant improvement when included into the build size preview

Addressable Versioning
In terms of bundle versioning - the default should be based on the current version number set for the output application (i.e. build number for Android / iOS)

Improve the API
Allow all apis to be called without async code (this is especially useful in the beginning to avoid async-explosion)
Allow all apis to be called in edit time (very important for lots of editor tools, that re-use or test the functionality)

Fix issues with level loading
When unloading a level and loading a new main level (i.e. LoadMode.Single), the existing level is unloaded in a bad fashion - thus code is still running, but resources are already unloaded. You need to halt all scripts and async methods.
Imagine a loading screen is loaded and downloads remote resources, then the main screen is loaded - now once the await finishes for the remote resource, the loading screen might already be unloaded again.

Fix Misc. Bugs
Sometimes the addressable build can take way longer than usual (especially when the cache is used) - i.e. up to 10x longer than usual.
The Addressable Build only works the first time a project is built, afterwards the addressable are built, but the lookup file is not included in the build (only a Unity Editor Restart resolves the problem + a new build afterwards)

8 Likes

@AndreaGalet That’s exactly the feedback we need to hear on the form. Anita’s working with us to smooth the UX for Addressables out - these kind of comments really help!

@RaventurnPatrick TLDR; yes. We’re investing fairly heavily in improving Addressables / Reporting - reading through your list, you’ll see some improvements start to land over the next year that I think will make you happy, though there are definitely some we’re not tackling yet so thank you!

4 Likes

Is there a plan to unify Addressables with ECS Content Management?

8 Likes

For me current Addressanles form is very far from production usable :frowning:

Not Universally usable from protortype to production
Small project or prototypes where they just big overkill to support, but if I dont use them then when project grows there will be big pain to move to Addresables from resources.

To fix that, idea Of AssetReference must be separated out of Addresables package. May be new Unity UnityObjectRef< T > and RuntimeContentManager will solve that when ECSForAll comes to unity core.
.

Deduplication
RaventurnPatrick wrote correctly I can add only that having those groups and manual setup of all assets and custom paths for them is bad design in first place
Thats why we have so many automatisation tools on store to create groups based on rules rather manually. Groups must be set of rules instead of set of final asset references. Rules like: add all prefabs from folder X; add those few direct links; and so on. It must be easy to add project specific rules.
And yes after gathering all assets based on rules run explicit deduplication step as RaventurnPatrick mentioned.
.

Separation of Concerns and Explicit Control

  • Asset building
  • Asset uploading
  • Asset downloading
  • Asset mounting to runtime FAT (Bundles mouting)
  • Asset Loading and Unloading into RAM (must )

Thay all different things and must be implemented independently as separate easy to reason about maangers that can be customized or replaced by user code for project needs. Each must be simple abstract class or interface with very few methods
Also nothing must be automatic like start download 5 Gig bundle because some script request material from it. Those things must be explicitly controllable and auto load only if I with that behavior otherwise error or just return null.
After Bundles downloaded and mounted to system any asset from them must be easily loadable synchronously without any issues or deadlocks.
.

Contextual Asset Load/Unload
Current addresable dont unload assets at all (becase unloading happend only when bundle unloads from memory) and even when unload happens it unload only assets loaded from exact unloaded bundle.
If asset A from bundle bA has dependency on asset B from bundle bB and asset B 100MB in size than unloading asset A will not unload asset B automatically. it will be unloaded only when entire bundle bB will be unloaded.

This way we can say that entire asset referencing thing of Addressables dont work in many cases in practice.

What we need is ContextualLoading like
New loaded scene create LoadContext and all assets loaded for that scene with scene file and dynamic ones will be unloaded when scene itself and created LoadContext will be unloaded. All assets and their dependencies. So if I load prefab that reference material that reference textures than unloading LoadContext must unload all materials and textures of prefab regardless of bundles they coming from.
.

Deterministic Asset References and Overrides
Runtime system must use deterministic asset references like AssetDatabase do
so if Asset has guid xxx and internal id yyy, system must be able to load it from any bundle regardless how it was build, even If I build small new bundle with only one asset xxx[yyy] and mount it to RuntimFAT than all assets from other bundles must see it like it work in editor

No any hardcoded paths or unique asset ids based on asset content or build version. This is exactly going against what we need in practice. We need to create new bundle with new version of my texture (christmas texture) without need to rebuild any other bundle. Just download that new bundle and mount to runtimeFAT so all loaded prefabs will use my new christnass texture because they just load asset xxx[yyy] and dont care where it come from.

Important notice is that mounting that new Christmus Bundle must override xxx[yyy] asset in runtime Fat from old bundle to new one. So new RuntimeFAT record must say they asset with key xxx[yyy] now must be loaded from ChristmassBundle[InternalBundleAddress] so all new load operations that try to load xxx[yyy] as dependency will load it from new place.

I argue that such system must use Editor asset Address directly in runtime
guid[inernalId] => 9c8d7e6f5a4b3c2d1e0f1234567890ab[9284517365129837461]
than in any time we can figure out what was wrong because we have same asset address in editor
.

Use asset bundles in Editor directly
Make it able to mount bundle into editor AssetDatabase so we can see all assets in it as readonly assets (same as assets from packages) and compose new assets and levels using them.
This is very useful for very big projects divided into pieces and also very handy for mod creation because modders can mount original game bundles to editor and create new content based on them easily. This is already possible with some ugly workflow. having streamlined one will be huge win for Unity and for Us.
.

Independent bundle building
Deterministic Asset References and Overrides will naturally allow use to build any bundle separately without building entire project and allow build small overrides for any part of project for hot updates and for mod support

We must be able to say that we dont need to collect dependencies automatically inside SBP we collect them beforehand and build only what asked to build. For Example we can use already builded bundles end remove all assets that already in them when building new ones. This way we can easily build DLCs or Mods that use content already shipped with game

Also there must be Api to correctly collect dependencies because for some reason SPB use different method to collect dependencies, not what we have in AssetDatabase Api
.

Scriptable Build Pipeline documentation
Write good documentation for Scriptable Build Pipeline package
We need to to be able to create our own customized vertions Asset building steps

4 Likes

There was a really good git amend video that explained how some devs used addressables for DLC delivery and even potential mod support.

I always thought addressables could be used in this way, but my game isn’t shipped yet and i haven’t really tesed it. But guide like this is what is much needed imo.

Especially when there’s a lot of advantages to this data driven approach.

2 Likes

Besides the inner workings (which JesOb already detailed)

The UX has been a mess since day one.

Groups window

The primary window and it explains nothing at a glance. It should be the dashboard that displays what’s local, how many bundles will produce, is it built, stale or not built, file size of the bundle and the assets inside. The list view doesn’t scale up with large projects you just get a wall of text instead of an overview.

Why I cannot make the prefabs in a folder the bundles themselves? I have to enable addressables on each and every object. Third party assets do this, but I get why Unity chose not to as it may break if group settings change on already built bundles. I think this is the most common use cases is loading individual prefabs and HD texture packs, large inventories and icons can be handled by referring them in prefabs or scriptable objects and then making bundles from those.

Settings exposed as ScriptableObjects

If the user is not meant to edit them then don’t show them eg: AddressablesAssetData/DefaultObject change that lonely value and who knows what breaks.

There’s no clear recommended defaults so beginners end up tweaking unkown parameters or just avoid them until things go wrong (android require UWR, out-of-box default group has cache enabled but new group don’t)

PlayMode Scripts and Build scripts

The retrieval of assets and building, to me sound like 2 different stages. In code those 2 come from the same base class.
The dropdown-of-dropdowns on the Build menu feels like legacy plumbing, it should be separate its own ‘Build/Packager’ section.

The Analyzers window

A really important tool to not end up with spaghetti dependencies yet the UI is awkward. Like it would work better with another interface than a hierarchy and with icons.
Also the naming “unfixable rules” lead me to think ‘cannot be fixed’ the first time, it just means you have to manually resolve it and fixable rules means there’s an automation available. As for the manually resolved, it needs concrete actions instead of letting the user hunt though online docs.

Optimize and Extract Binary Catalog functions

They ask for a .bin file but the first .bin file the user will see usually is content_state.bin and not the file under Library/com.addressables/aa/Platform/catalog.bin (btw what does aa mean?) so no clarity between the build state file and the runtime catalog.

Also there’s no buttons to open the build paths on the file explorer, I haven’t tried but I think there’s no error validation which may lead to failing down the line when testing.

Addressables Report is good

One of the better designed UI wise and also the newest addition. Although it still needs some tweaks:

  • Foldable “General Information” “Aggregate information” are unnecessary and don’t even fold properly btw.
  • The right panel is only needed on the Explore and Potential Issues tabs

I think the Explore tab is what Groups window should look like but it may still get crowed on projects with lots of bundles, maybe vertical lists (like mac OS finder or just the Unity project tab) would be a better fit.

Other features

After many years it still is not on par with AssetBundle Browser, with features like:

  • Being able to inspect built bundles (even from external projects).
  • A single window to check dependencies with possible actions.
  • Changing build target just to build the asset bundles.

These are not bugs but I argue it still needs to be addressed.
I think a good test would using Addressables as asset streaming in open world / sand box games, that may reveal the weakspots of the system when used in production.

3 Likes

Another thing that just came to mind, but is quite critical to fix:
Local Bundles/Assets should never automatically reference and download remote assets.
It happened way to often to us (until we built a custom rule for this), e.g. the first level that is included in the game has references to a sound file / texture file etc that is remote, thus every user will have to download this file, before being able to play the game. This causes a significant friction point, and should not happen without explicitily allowing this.

The problem is the addressable system does not care where the referenced asset lives, as it does not really know the difference between “local”/“included” and remote or downloaded assets. But in my opinion this needs to be restructured and included.

In an ideal world the addressable build will fail or an error / warning will automatically be shown, when a local asset references a remote asset.

1 Like

Addressables are really great, very awesome memory and storage management package. I use it a lot in my personal(non-production) projects…however there are a couple of things that I really wish could improve so I can use it more in my production projects:

  • Using addressables with textmeshpro fonts(and fallback fonts) while using the localization package. Not all fonts support all languages(think of an English font, Korean, Arabic, etc…). And packing the bundles create duplicate bundles and increases the build size even more! The workaround I have for it is extremely tedious - I pack the fonts as separate bundles and load them at runtime depending on the build. The tedious part is that I will have to setup a font listener on each text mesh pro component in the project to grab whatever font that was dynamically loaded.
  • Second thing: Using it on mobile, specifically android devices with googles asset pack system is difficult to test. I’d always have to deploy to an actual android phone to test. Trying to test the bundled packs on the editor results in pink-ish rendering. And it feels slower when loading on the android phone than when testing without(maybe my setup or something…?)

I really hope these things are addressed at the very least because there are some good potential to this package. I prefer its workflow over the old assetbundle system.

One thing that is cancerous that i’m dealing with right now, apparently if a shader isn’t included in a bundle and it’s needed the addressable build just compiles EVERY variant.

Now this is a shader that shouldn’t even be in the addressable build but keeps getting included anyway, I’m trying to track down why this is happening. But an option for like a strict shader include for addressable would be useful.

At the moment the number of variants generated is far too huge to finish the build so I haven’t even been able to finish the build to see the report and diagnose it that way.

One thing we’ve found annoying is no built-in way to flag Groups as platform-specific, e.g. this group only goes into mobile builds, this group only goes into Nintendo Switch builds, etc.

There used to be an addressable event viewer window that allowed for good monitoring of asset unloading, but now I can’t see the load/unload process as clearly in Profiler. Is anything being considered to address this?

1 Like