For those confused about the "29 MB": that's the size of the compiler itself. A compiled Svelte app is tiny . Taking the TodoMVC demo app as an example: React [1] : 289 KiB over the wire (decompresses to 1,255 KiB) Svelte [2] : 28 KiB over the wire (decompresses to 41 KiB) --- [1] http://todomvc.com/examples/react/ [2] https://github.com/sveltejs/svelte-todomvc
- It's using an ancient version of React (0.13.3)
- It's a debug build of "React with addons", not a minified prod build
- It appears to include `JSXTransformer.js` as a separate script to handle in-browser JSX compilation
If you were to redo this using a modern version of React and a standard CRA build, I guarantee it would be _much_ smaller.
edit
Just for kicks, I did a quick search and dug up a pre-existing React "TodoMVC" app based on CRA ( https://github.com/ChrisWiles/React-todoMVC ). It's 3 years old, but it was trivial to bump the requirements up to the latest versions of React and react-scripts.
From there, running `yarn build` says that:
File sizes after gzip:
39.22 KB build\static\js\2.3ec0f98b.chunk.js
2.14 KB build\static\js\main.4514f0a8.chunk.js
1.73 KB build\static\css\2.bc2ff3bb.chunk.css
782 B build\static\js\runtime~main.0ff4d30b.js
The actual sizes on disk are: 2.3ec0f98b.chunk.js : 128435b
main.4514f0a8.chunk.js: 7259b
2.bc2ff3bb.chunk.css: 5423b
runtime~main.0ff4d30b.js: 1577b
So yeah, Svelte is certainly going to result in much smaller bundles than a React app, but you have to use a legitimate fair production comparison.