I wrote a system to replace tags that is pretty simple - scriptable objects behave as “groups” and consist essentially of just a list. A script resides on a game object that keeps track of which “groups” that object belongs to and adds itself to the list in each of those groups (scriptable objects).
In 2018.2 I was able to add the script that goes on each object to prefabs directly in the inspector with a prefab selected in the project folder. In 2018.3 this is also done in the inspector, but in prefab mode. In 2018.2 the references to prefabs residing in the project folder from the lists residing in the scriptable objects persisted without a problem. In 2018.3, when exiting prefab mode, I can see that the changes I’m making are indeed being saved (I wrote a custom editor and eventually found Undo.RegisterCompleteObjectUndo and PrefabUtility.RecordPrefabInstancePropertyModifications) but the reference in the scriptable object list is broken as if the prefab was deleted. It’s as if I’m not editing the prefab directly, but a temporary instance of it.
It seems I can easily get around this by keeping a copy of every prefab in the scene. Is this a recommended workflow? It seems counter to the intention of prefab mode. Any guidance is appreciated.