This is just me sharing my experiences after having worked with Napkin for a while and after merging the app structure of Aura and the 4D engine.
Whenever Napkin is used to modify the app structure’s json file, it writes out all members known to rtti. While somewhat useful as a form of documentation inside the json of all the available properties for editing, there are a few problems with this,
It pollutes the json file. I see a lot of “ClipRect” entries for instance, in which I have zero interest of editing and being aware of,
It makes versioning more difficult. Since there is no distinction between properties left to their default, initial values or properties that were explicitly set to something else, it makes changing/upgrading property defaults more impossible. This is also a feature I guess, but can also come back to bite you’re setting up an archive of json data (as 4D probably will in the future),
It writes out auto-generated instance IDs for components. This is annoying when copy-pasting stuff from one app structure to another, as I had to do when merging the 4D engine’s app structure (for its resources) with Aura. There were A LOT of duplicate component IDs which I had to resolve manually. None of the IDs were actually set explicitly because they are used within the app, so the experience would’ve been much easier had they not been serialized. It would be nice if auto-generated IDs weren’t serialized by Napkin when saving.