Point0by 1gr14
  • Меню
    • GitHub
    • Блог
  • Introduction
    • Overview
    • Getting Started
    • Full Overview
    • Benchmarks
    • Points
  • Points
    • Page
    • Layout
    • Component
    • Provider
    • Mountable
    • Query
    • Infinite Query
    • Mutation
    • Action
    • Root
    • Base
    • Plugin
  • Methods
    • Validation
    • Loader
    • Context
    • Middleware
    • Loading & error
    • .with
    • Mapper
    • Transformer
    • Stage Methods
  • Core
    • Navigation
    • SSR
    • RSC
    • Request
    • Response
    • Error handling
    • Env
    • Head
    • MDX
    • Assets
    • File upload
    • OpenAPI
    • Query client
    • Events
    • Infer
  • Engine
    • Engine Config
    • Engine Runtime
    • CLI
    • Dev
    • Build
    • Compiler
    • Generator
    • Project MCP
    • Docs MCP
    • Importer
    • Public dir
    • Testing
    • Deploy
    • Bun or Vite
  • Extra
    • SsrStore
    • CookieStore
    • Basic Auth
    • CORS
    • Cache-Control
    • Compress
  • Examples
    • Basic
    • Vite
    • Better Auth
    • Capacitor
    • Expo
  • 1gr14
    • Главная
    • Start0
    • Поддержать
    • Обучение
    • Группа
    • Блог
    • Автор
  • Сообщество
    • Discord
    • Telegram
  • Опенсорс
    • Point0
    • Route0
    • Error0
    • Flat
  • Аккаунт
    • Войти
    • Регистрация
Point0by 1gr14
Создаю опенсорс во славу Господа Иисуса Христа ☦️
С любовью ко всем разработчикам на свете ❤️
Условия использованияПолитика конфиденциальностиСергей Дмитриев 2026 😎

Benchmarks

  • Раздел: Introduction

On this page

  1. Summary
  2. Where Point0 wins: the edit loop
  3. Types at scale: two different questions
  4. Navigation ships data, never HTML
  5. Raw SSR: the price of not declaring data deps
  6. The DB reality check
  7. Reproduce

Every number on this page comes from the open benchmark repo: github.com/1gr14/point0-benchmarks. The setup: the same app — a small blog plus a SaaS-style dashboard — built three times (Point0, Next.js, TanStack Start), each in its framework's native idiom, rendering the same content from the same deterministic in-memory store. A 17-assertion Playwright parity gate must be green before any number counts; results are medians over repeated runs; raw per-run JSON is committed. This page is the short read — the repo README carries the full method and all tables.

Measured on an Apple M1 Pro (July 2026): Point0 0.1.7, Next.js 16.2.10, TanStack Start 1.168.27, React 19.2.7 everywhere. Each framework runs on its own supported runtime — Point0 on Bun 1.3.14, Next and TanStack on Node 22.21.1 — and every load number sits next to a bare Bun.serve / node:http floor, so runtime and framework tax stay separable.

Summary

Point0Next.jsTanStack Start
Runtime (as shipped)BunNodeNode
Prod build, S ↓3.35 s4.49 s4.96 s
Prod build, L (+500 pages) ↓9.59 s19.82 s22.10 s
HMR, edit → DOM ↓15 ms45 ms164 ms
Dev start, cold / warm ↓2,715 / 1,433 ms2,530 / 2,234 ms2,326 / 2,215 ms
Editor re-check, L ↓1.59 s3.94 s1.58 s
Cold type-check (CI), L · TS7 ↓6.13 s0.64 s1.38 s
First-load JS, /post (gzip) ↓133.4 kB147.7 kB103.8 kB
Nav payload, dashboard → dashboard ↓474 B1,355 B275 B
SSR /post, req/s c64 ↑ *1,0995212,921
Prod cold start ↓305 ms765 ms103 ms

↓ lower is better · ↑ higher is better. * Point0's SSR row is its warmed build (.onPrefetchPage, 0 re-renders) — the peer of Next/TanStack's eager loaders; the default lazy build does 944 req/s.

Where Point0 wins: the edit loop

  • Production build is the fastest at every size, and the lead widens with the app: at 500 pages Point0 builds in 9.6 s versus Next's 19.8 s and TanStack's 22.1 s — over 2× on both.
  • HMR lands in ~15 ms — within one frame — against Next's 45 ms and TanStack's 164 ms.
  • Dev start is the fastest where it matters: 1.4 s warm. The cold row (2.7 s, a few hundred ms behind the others) is the first run of a project ever — the compiler's first pass fills a persistent disk cache and pays once per project.

Types at scale: two different questions

Cold whole-project tsc and editor responsiveness are different metrics, and conflating them is the usual mistake.

The cold check is Point0's slow axis. Inferring everything end-to-end with zero annotations costs ~2,300 type instantiations per page: at 500 pages that's 6.1 s on native TS7 (17.3 s on the JS tsc) versus Next's 0.6 s and TanStack's 1.4 s. You pay that in CI.

The per-edit re-check — the lag you feel while typing — stays flat. Point0 pages are isolated exports: there is no monolithic AppRouter type to re-instantiate on each keystroke (the tRPC trap), and the generated route map is just path strings.

Per-edit re-checkPoint0Next.jsTanStack Start
4 pages1.50 s1.62 s1.44 s
504 pages1.59 s3.94 s1.58 s

Point0 and TanStack hold flat; Next degrades to ~3.9 s per edit at 500 pages — 2.5× Point0.

Navigation ships data, never HTML

After the first document, a Point0 navigation ships only query data. On a post→post click that's ~0.86 kB against Next's ~1.27 kB RSC payload (TanStack: ~0.63 kB). The dashboard case — rich markup, tiny data, the shape of a real SaaS page — makes the split sharp: Point0 moves 474 B per click and TanStack 275 B, while Next re-sends the rendered markup as its flight payload — 1,355 B, roughly 3× Point0. First-load JS: TanStack 104 kB, Point0 133 kB, Next 148 kB (gzip).

Raw SSR: the price of not declaring data deps

On raw SSR throughput with in-memory data, TanStack leads (2,921 req/s), Point0 is second (1,099 warmed), Next is behind (521). Point0's default is a render-to-discover loop: it renders, sees which queries the page needs, fetches, re-renders — so you never declare a page's data dependencies, which neither Next nor TanStack offers. That convenience costs ~14% (944 req/s); one opt-in hook (.onPrefetchPage(() => q.fetchQuery(...))) removes it.

Point0's SSR document carries data twice — markup plus the dehydrated React Query cache that makes every piece of data a live, cacheable query on the client. On a text-heavy post that's 5.4 kB raw vs TanStack's 3.8 kB — and gzip nearly erases it: 1.8 kB vs 1.7 kB (+6%). Next's document is the largest of the three (9.2 kB raw, 2.4 kB gzipped): RSC inlines its flight payload, duplicating the same data in a less compressible format.

Prod cold start is 305 ms — behind TanStack's 103 ms, 2.5× ahead of Next's 765 ms. Part of that 305 ms is deliberate: Point0 imports the whole app at boot, so a broken page fails the process at deploy time, not on a user's first request.

The DB reality check

The raw-SSR numbers above measure frameworks in a vacuum — the loader is trivial, so framework CPU is the whole latency. Add one realistic DB query and the gap collapses:

DB delayPoint0Next.jsTanStack Start
0 ms1.26 ms2.35 ms0.37 ms
20 ms26.38 ms24.63 ms23.28 ms

At 20 ms of DB latency all three land within 23–26 ms; the framework becomes a 14–24% slice that keeps shrinking as queries get heavier. That's why Point0 spends its budget on what a database can't erase: build, HMR, per-edit type-check, and navigation payloads.

Reproduce

git clone https://github.com/1gr14/point0-benchmarks
cd point0-benchmarks
bun run setup   # installs all three apps + Playwright
bun run parity  # the gate — 17/17 must pass
bun run bench:all
bun run render  # regenerates the README from results/

Numbers are machine-dependent (except type instantiations and byte sizes, which are deterministic); the repo's manifest records the exact machine and versions behind every published table. If you find a setup that treats any framework unfairly — open an issue.

НазадFull OverviewДалееPoints

Enjoying Point0?

Give it a star on GitHub, ask questions, and follow what's new

Star Point0

A star on GitHub helps more developers find Point0
Star on GitHub

Start0

Point0 integrated into the Start0 SaaS boilerplate — the best way to use it
Explore Start0

YouTube

Tutorials, walkthroughs, and updates
YouTube

Discord

Questions and chat in English
Join Discord

Telegram

News channel and chat in Russian
ChannelChat

Twitter

Posts and updates
Twitter