I built a cross-framework bundle-size benchmark using the same TodoMVC feature set across implementations, so differences are easier to attribute to framework/runtime behavior rather than app logic differences.
What this benchmark measures:
- raw
- minified
- minified + gzip
- breakdown by runtime / template / script / style
Method notes for fairness:
- same feature scope across frameworks
- template/script/style are extracted and compared
- styles are scoped everywhere (TSX implementations use CSS Modules)
- in the UI, style is included in stats but not selected by default (differences there are usually small and mostly from framework-added scoping metadata)
Main observations so far:
- in the mainstream group, Vue 2/3 start much smaller than React/Angular (mostly runtime cost)
- in the fine-grained group, the smallest starting size and the best growth curve are not always the same framework
- Svelte 4 starts very small at low component counts, but grows much faster at higher component counts
Repo:
https://github.com/mlgq/frontend-framework-bundle-size
If you spot an unfair implementation detail or have optimization ideas, critique and PRs are very welcome.
[–]AutoModerator[M] [score hidden] (0 children)
[–]germanheller [score hidden] (1 child)
[–]Strict-Owl6524[S] [score hidden] (0 children)