Angelitedocs ENES

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 > tr with 3 cells, one click handler per row and the selected row with the danger class. The data comes from the same deterministic generator (benchmarks/apps/shared.js).
    • Idiomatic implementations: React 19 with memo + useCallback; Preact (core + hooks only, shouldComponentUpdate on the row); Vue 3 with a compiled template and shallowRef; Angular 20 with signals, OnPush, @for … track and 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.mjs to 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 build for Angular). It includes the table code, identical in all five. Preact does not include preact/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: .