Quick answer: Unreal soft class pointer loaded async returning null in cooked builds? Soft refs require Async Loading Thread - enable in Project Settings or fall back to sync.
PIE works. Cooked iOS build: AsyncLoadClass on a soft class ptr returns null.
Enable Async Loading Thread
Project Settings > Engine > Streaming > Async Loading Thread Enabled. Required for soft pointer async loads on cooked builds.
Fall back to sync
If async fails, LoadClass<UObject>(...) blocks. Cleaner UX with a loading spinner during the block.
Audit per-platform
Mobile cooks strip more aggressively. Test soft ref resolution on every target platform.
“Async loading needs the async thread. Default-off in some templates is the trap.”
Enable async loading thread at project creation. Defaults to true in 5.4+, but legacy projects need the manual flip.