When working with beam and ribbon effects in Niagara, Emitter.BeamID is used to fill Particles.RibbonID so that a looping emitter can spawn multiple discrete beams. Emitter.BeamID is assigned by module "Beam Emitter Setup" on the Emitter Update Stage, and later used by module "Spawn Beam" on the Particle Spawn Stage. The attribute is driven by Emitter.LoopCount, so that the group of particles spawned on each emitter loop gets a single unique ID.
In the current implementation, the last "Map Set" node of module "Beam Emitter Setup" does "BeamID = (LoopCount > BeamID) ? LoopCount : -1". As a result, while LoopCount does not increase, BeamID flips between LoopCount and -1 every frame. Its value is only really usable on the exact frame when LoopCount gets incremented, which can have unexpected consequences. For example, attempting to spawn a beam with "Spawn Burst Instantaneous" at any "Spawn Time" other than 0.0 can have odd results.
In the linked EPS case, it was suggested that "Beam Emitter Setup" could do "BeamID = (LoopCount > BeamID) ? LoopCount : BeamID" (BeamID tracks LoopCount as long as it is increasing), which means that "Spawn Burst Instantaneous" would work correctly at any "Spawn Time". However, the effects of this should still be verified with different combinations of "Loop Behavior" and "Loop Duration" on the "Emitter State" module. Another possibility could be making BeamID track LoopCount as long as it was not reset to zero.
Note: This was reproed in UE 5.3-5.7 and source, using all available versions of the "Beam Emitter Setup" Niagara Module.
1. Create a new Niagara System/Emitter based on the "Static Beam" emitter
2. On the "Particle Spawn" Stage:
2.1. Delete the "Beam Width" Module
3. On the "Emitter Update" Stage:
3.1. On the "Emitter State" Module, set "Loop Duration" to 0.5
3.2. On the "Beam Emitter Setup" Module, set "Beam End" to "Random Vector" with (Vector Scale = 100, Recalculate Random Each Loop = true)
3.3. On the "Spawn Burst Instantaneous" Module, set "Spawn Time" to multiples of a frame: 1/60, 2/60, 3/60, 4/60...
4. Note how, on step 3.3, the result is correct for an even number of frames, but incorrect for an odd number of frames
5. Edit the "Beam Emitter Setup" Module
5.1. Before the last "Map Set", link "BeamID" to the "False" pin of the If condition
5.2. Apply
5.3. Repeat step 3.3 and note how the behavior is not correct for all cases
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-368844 in the post.