I'm playing around with a prototype of fully immutable (HAMT) optional data structures in squint. So no copy on write (like squint's default ones and e.g. cljs-lite). for an app already using squint, you'd pay 3kb gzip more. a minimal HAMT using example is ~5.7kb gzip. Compare to Immutabe.js: 18.5kb gzip
There isn't a downside to shipping this with squint since it has no impact when not used, on DCE. I just need a nice way to annotate when you want to use it instead of a COW one. Perhaps ^clj {:a 1} but not sure if ^clj is used a lot in normal CLJS programs and if in that case squint always want the HAMT one.
what implementation are you using? some existing or did you build new?