Quick answer: Persist runtime entity state yourself (save spawn data keyed by cell) and respawn on cell load, or attach spawns to a persistent always-loaded data layer that does not stream out.
Spawned actors vanishing on reload means they were never persisted with the cell. Saving their state and respawning, or keeping them on a persistent layer, fixes it. Here is how.
How to fix it
1. Save spawn data per cell
Record each runtime spawn's class, transform, and state in your save system keyed to the owning cell, then respawn from that record when the cell streams back in.
2. Use a persistent data layer
Place actors that must survive streaming on an always-loaded persistent data layer or in the persistent level so they are not bound to a streaming cell's lifecycle.
3. Hook cell load/unload events
Bind to World Partition streaming delegates so you serialize an actor's current state on unload and restore it on load, avoiding loss of in-progress changes.
Catching the ones you can't reproduce
The hardest version of this to fix is the one you can't reproduce — it only happens on a player's hardware, OS, driver, or save state, under conditions that simply aren't present on your machine. A report that says “it crashed” or “it froze” gives you nothing to act on, so the bug survives release after release while quietly costing you players.
Automatic error capture closes that gap. Each failure arrives with its full stack trace, the device and OS, the build number, and a breadcrumb trail of what the player did right before it broke, so even a failure you have never seen becomes a specific, reproducible issue. Fold identical failures into one signature ranked by how many players each hits, and your worklist sorts itself worst-first instead of arriving as a stream of vague complaints.
This is where a tool like Bugnet earns its place. Its SDK captures every Unreal Engine error automatically with the full stack trace plus device, OS, memory, build, and game-state context, folds duplicates into one grouped issue with an occurrence count, and ties each to the build it first appeared on — so you fix the problem that hurts the most players first and confirm it is gone when its signature disappears from the next release.
Ship the fix, watch the signature disappear from the next build. That's how you know it's really gone.