Hey, designing a file format or network protocol? Let me give you one tip that I keep hearing people call unnecessary, and I keep coming to projects and having to work around it:

Add a simple SemVer version number.

Somewhere right at the start of the file, in the first message, or included in every JSON endpoint's response.

Nothing fancy, just a major and minor number. If the major is bigger than your client's, tell the user to update. Remember to increment the minor with each change.

@uliwitness I see a lot of folks do this reflexively, and it often doesn’t work out the way they hope. You need to be clear whether it’s a protocol version or an implementation identifier. And then you need to make sure that folks use it correctly, which is really hard to do. I’ve seen plenty of servers just fall over when you start a connection with a version that’s beyond what they expect.
@uliwitness IMO a better option is to define an extension mechanism, where each extension carries a flag that means “If this is set and you don’t understand this type of extension, you need to stop immediately.”