Skip to content

v4.0.0

Choose a tag to compare

@childrentime childrentime released this 01 Apr 04:02
· 13 commits to main since this release

Pareto 4.0.0

Highlights

  • NDJSON streaming navigation — Client navigations now receive loader data via NDJSON streams, enabling progressive delivery with Suspense during navigation
  • head.tsx component convention — Per-route head management via React components with automatic merge and deduplication
  • document.tsx convention — Customize <html> attributes per-request (lang, dir, className)
  • 9x faster data loading than Next.jsBenchmark results show Pareto handles 2,733 req/s vs Next.js 293/s for data-loading pages
  • 6.5x higher streaming throughput — Sustains 2,022 req/s under load vs Next.js 310/s
  • 62 KB client JS (gzipped) — 1/4 of Next.js (233 KB)

Performance (CI benchmarks, Node 22, 4 CPUs)

Scenario Pareto Next.js React Router TanStack Start
Data Loading 2,733/s 293/s 955/s 1,386/s
Streaming SSR 247/s 236/s 247/s 247/s
API / JSON 3,675/s 2,212/s 1,950/s
Static SSR 2,224/s 3,328/s 997/s 2,009/s

Breaking Changes

  • HeadDescriptor / HeadFunction replaced by head.tsx components
  • hydrateApp() removed — use startClient()
  • RouterProvider no longer exported
  • createStoreApi() removed — use defineStore() from @paretojs/core/store
  • dehydrate() / getHydrationData() / hydrateStores() removed — hydration is automatic
  • Barrel files removed — import directly from source modules

New

  • startProductionServer() from @paretojs/core/node
  • SECURITY_HEADERS constant exported
  • Default error fallback component
  • Client-side head management during navigation
  • Route pattern caching for faster client navigation
  • wkWebViewFlushHint config option for iOS WKWebView

Full changelog: https://github.com/childrentime/pareto/blob/main/CHANGELOG.md

npm: @paretojs/core@4.0.0 · create-pareto@4.0.0