Does Firebase GZIP or do any other kind of compression/optimization before sending in either direction? I can't find any mention of this happening, and the REST API clearly doesn't do this, but for all I know there is some magic happening in client-side Firebase JS that compresses/decompresses when sending/receiving.
Some of the attribute names I use are pretty long, to make my code more readable, and I have large quantities of otherwise-small objects.
Gzipping all of the JSON in my Firebase reduces its size by 85%, though there are also a lot of large strings which probably account for plenty of this compression. I don't actually need very granular access to the data in my app, so now that I think of it I'm tempted to do some compression myself (JavaScript implementation of Gzip) on stringified JSON.
Related question: Is it worth the effort to try to reduce JSON size?, which references JSONH which looks interesting.