PersistentPerPlayer mode will always stream if 1 child is set to Persistent

I have a model that is set to “PersistentPerPlayer”, but will always stream if one of it’s child models is set to “Persistent”. There are instances where I may want certain parts of the model to always stream while the rest of the model controlled through AddPersistentPlayer/RemovePersistentPlayer.

In the example video and repro file attached below, I have 2 castle models:
1 castle has it’s child set to “Persistent”, while the 2nd castle has all it’s children set to “Default”. Both castles are set to “PersistentPerPlayer” and both are being streamed in/out through the ServerScript located under Workspace. As you can see in the video, the castle with 1 persistent child is never streamed out, and will act Persistent if one of it’s child is set persistent.


CastleStreamTest.rbxl (124.8 KB)

Expected behavior

With “PersistentPerPlayer” mode, I would hope that only certain child parts set to “Persistent” will stay streamed, while the rest of the model can be controlled through AddPersistentPlayer/RemovePersistentPlayer.

A private message is associated with this bug report

A PersistentPerPlayer model is a type of Atomic model, it shares the atomicity characteristics of atomic models. This means that if we send any of a PersistentPerPlayer model we send the entire model. For this reason putting a Persistent model under an Atomic or PersistentPerPlayer model will always result in the ancestor model being persistent.

This behavior is by design.