Component variables at default instead of instance values when read in construction script?

While the above solution works and can be improved further by also listening to PostApplyToComponent and PostEditComponentMove, it’s not a good solution. The construction script will be called extremely often, which may become a performance problem if the construction script is non-trivial and/or the Blueprint is instanced often in the level. Editing a single variable value in the Blueprint Editor, while having the same Blueprint instanced 3 times in the level causes the construction script to be executed 30 times in total, with 13 different instances of the component, somehow. I don’t pretend to understand Unreal’s method of management, which seems a bit wasteful.

I experimented with using MarkForNeededEndOfFrameUpdate and call the ConstructionScript from that update, but that doesn’t appear work in the editor. Another attempt was made using FTSTicker::GetCoreTicker().AddTicker to get a single callback in the next frame no matter how often it was requested. I used a TWeakObjectPtr to ensure not updating, if the component was already deleted. That somewhat worked, but caused trouble when dragging the object as the component is destroyed and recreated every frame, so nothing is updated while moving.