Home › Compare
Benchmark
AngeLite against Preact, Vue, React and Angular with the same app: size, startup, memory and speed measured in Chromium.
Size#
JavaScript of the complete application (framework + the table), minified. It is what the browser downloads.
Startup and memory#
Startup: time from the start of navigation until the app is mounted (it includes downloading, parsing and running the JS, on localhost). Memory: JavaScript heap after forcing a GC.
Speed#
Median in milliseconds of each operation (less is better): from the moment it is triggered until the DOM reflects the change and layout has been computed.
An honest reading#
Method and limits#
- Same app, same DOM:
table > tbody > trwith 3 cells, one click handler per row and the selected row with thedangerclass. The data comes from the same deterministic generator (benchmarks/apps/shared.js). - Idiomatic implementations: React 19 with
memo+useCallback; Preact (core + hooks only,shouldComponentUpdateon the row); Vue 3 with a compiled template andshallowRef; Angular 20 with signals,OnPush,@for … trackand no Zone.js (provideZonelessChangeDetection); AngeLite with signals and@for … track. - What is measured:
performance.now()until a DOM condition is met (e.g. "there are 1,000 rows") and style + layout is forced. It does not include painting (paint/composite). 2 discarded warm-up iterations per operation; rounds alternate the order of the frameworks. - Environment: . It is a shared container, with no CPU throttling: use it to compare between frameworks in the same run, not as absolute figures. Differences of a few ms are within the noise; the p10–p90 is shown when you hover each cell.
- Two AngeLite modes: "in the browser" compiles templates on load (no build). "Precompiled" uses
tools/aot.mjsto turn the template into JS at build time and ships only the runtime, as JSX (React/Preact), Vue or Angular do. AngeLite's built-in pipes are opt-in and do not count in these bundles because the app does not use them. - Size: production bundle of each app with the usual bundler (esbuild for React, Preact and AngeLite; Vite for Vue;
ng buildfor Angular). It includes the table code, identical in all five. Preact does not includepreact/compat. - What it does not measure: SSR, hydration, ecosystem, DevTools, accessibility, performance on mobile or real long-term memory use. Angular and React offer much more than AngeLite; this compares only the rendering core.
Reproduce#
cd benchmarks
npm install
npm run build # builds the 5 apps → benchmarks/dist
npm run bench # runs the suite → benchmarks/results.json
ROUNDS=3 ITER=7 npm run bench # (default values)Data generated: . Versions: .