If you look at why the bundles are so big, the frameworks are so large etc., you’ll realise it all comes down to fighting browser deficiencies:

- no declarative APIs for DOM updates

- no good APIs to do batch updates

- no native DOM diffing (so decisions on what to re-render have to be done in userland)

- no DOM lifecycle methods and hooks (you want to animate something before it’s removed from DOM, good luck)

- no built-in message queueing

- no built-in push and pull database/key-value store with sensible APIs (something akin to Datascript)

- no built-in observables and/or streaming

- no standard library to speak of

- no complex multi-layered layout which matters for things like animations (when animating a div doesn’t screw up the whole layout for the entire app/page)

etc. etc. etc.

As a result every single page/app has to carry around the whole world just to be barely useable.