Hi [mention removed],
After digging a bit deeper into this, the behavior we’re seeing actually matches how Unreal handles archetypes and instanced properties.
In this setup, BP_Outer is a class/archetype, not an instance. When we assign it to the variable inside DA_MyConfigAsset (the UMyConfigAsset DataAsset), the engine creates a new instance whose class is BP_Outer_C, initialized from that Blueprint’s default values (its CDO).
Because that property is marked Instanced (and the type uses DefaultToInstanced), the DataAsset now owns its own copy of the settings rather than referencing BP_Outer directly.
When you edit values in the DataAsset, you’re modifying the DataAsset’s owned instance, not the Blueprint asset. Those changes do not and cannot propagate back into BP_Outer, the Blueprint remains the archetype, and the object inside the DataAsset is just an instance created from it.
On the other hand, changing variables on the Blueprint asset (BP_Outer) will propagate down to the DataAsset as long as that property hasn’t been overridden in the instance. As soon as you modify a given property in the DataAsset, Unreal considers that property overridden relative to the archetype, and further changes made in the Blueprint’s defaults for that property will stop updating the instance.
This is the same inheritance/override behavior you see between parent and child Blueprints or between a Blueprint and its placed instances in a level.
If you want changes in the DataAsset to also apply back to the Blueprint, that would mean updating the archetype’s defaults directly and reconstructing existing instances derived from BP_Outer. That’s not something the engine does automatically and isn’t really how the system is designed to work.
For your use case, the most robust approach is to put the shared configuration into a dedicated DataAsset and reference that asset from both the Blueprint and UMyConfigAsset. This way, both consumers point to the same underlying object, and any changes to that shared DataAsset are reflected consistently in both places.
It’s also worth noting that any property marked as Instanced is always created inline and owned by its outer object. By design, those instanced subobjects do not share state with other objects of the same type; they’re intentionally unique per owner.
From what I’ve been able to see, there have already been multiple reports regarding the behavior of the Instanced keyword. Similar issues have been encountered by other developers, but most of these reports have been backlogged or marked as “Won’t Fix” by Epic, as the current behavior aligns with the intended design of the property system.
This topic often causes a lot of confusion across different areas of the engine, as the distinction between archetype defaults, instanced subobjects, and shared assets isn’t always intuitive at first glance.
Best,
Joan