The great thing about Transit is that I can extend the data layer with new types (like JodaTime). Even without that, I really like Transit&#x27;s builtin support for sets, keywords, symbols, lists and vectors (which really helps in a clojure environment).<p>Another great thing (again, for someone using functional languages) is that Transit can ensure identity for equal values.<p>When it comes to structural validation, that is something I use prismatic.schema for. Of course, it helps that I can share the validation code between backend and server (using Clojure and ClojureScript).<p>When using plain JSON, I had to convert types myself after decoding&#x2F;encoding, which was error-prone and gave a surprising amount of bugs (especially regarding dates).<p>Transit solves a big problem for me, while still retaining the easy to read syntax which JSON has, and also has great tooling in browsers.<p>Also, caching isn&#x27;t only about smaller size. It allows for faster parsing of the initial data, allowing Transit to be just as fast as plain JSON for certain payloads, even considering that it has to expand from cache and decode values.