So I have been working around GUIs for some time, and I noticed that ScreenGuis (and SurfaceGuis) have a ResetOnSpawn property. I know what it does.
When I work with GUIs, I always first reference all the PlayerGui contents and then work with the references. It's much quicker and cleaner than having to use playerGui:WaitForChild("ResultsGui") or something like that at the start of every function, so I always set the ResetOnSpawn property to false.
However, I noticed that the property is set to true by default. I'm asking what the reasoning behind this is; why is it set to true by default if it makes it less convenient? Is there some performance-related reasoning as to why this is? What am I missing? Have I been scripting GUIs wrong all this time?

3 comments
Hmm I see. I still don't see the point of it being set to true by default - I bet much more GUIs actually do not need to reset on spawn...
It's true by default because of what BlackOrange said about updating variables. Quite a few scripts will need to update their variables and listeners when the player respawns. Such as the health bar he mentioned. But also since it generally won't hurt most other scripts. So it's overall less work for developers so they don't have to turn it on for every script that it's necessary.
@RiskoZoSlovenska the reason it's on by default is probably because if isn't, most local scripts will break for new beginners (since they do not know to update their variables upon respawn) and will make starting things harder by giving them errors. Then again, it has to be set to some value to start so Roblox may have just randomly chose one or one that is more convenient for the users.