Quick answer: Unreal Niagara pooled systems carrying state from previous spawn? PoolingMethod = Auto reuses without reset - call Activate(true) or ResetSystem before reuse.

Pooled hit-spark VFX shows the previous hit's color for one frame on reuse.

Reset on activate

Niagara->ResetSystem();
Niagara->Activate(true);

Activate's bReset = true argument forces parameter and emitter reset.

Use Manual pooling

PoolingMethod = ManualRelease gives you control over the lifecycle. Pay for it in code; gain predictability.

Set parameters before activate

Always set User Parameters before calling Activate. If you set them after, the first frame uses the previous spawn's values.

“Pooling trades allocation cost for state hygiene. The hygiene is your job.”

For pooled VFX, build a SpawnAndConfigure helper that resets, sets parameters, then activates. Reusable across the project.