Skip to content

Pilates

v@pilates/[email protected] Feature

This release adds 3 notable features for engineering teams evaluating rollout.

Published 23d CLI & Terminal
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

cli flex-layout flexbox headless layout-engine nodejs
+4 more
performance react tui typescript

Summary

AI summary

Updates Highlights, See also, and dirty across a mixed release.

Full changelog

Pilates 1.0 — Layout engine GA

Three packages promoted in this cycle:

Highlights

  • Pure TypeScript, zero runtime dependencies. No WASM, no bridge, no init cost. Runs anywhere Node / Bun / Deno / browsers run.
  • Faster than WASM Yoga on every benchmarked workload. 7-10× across build-then-layout (10 → 10000 nodes), 7× on the relayout-boundary headline scenario.
  • Validated cell-for-cell against WASM Yoga across 33 oracle fixtures, plus a 500-runs-per-CI property fuzzer comparing cached vs cold layout paths byte-for-byte.

Headline perf win (Phase 3 — relayout boundaries)

A node with explicit width AND height (the idiomatic TUI pattern — fixed-height rows, sidebars) acts as a Flutter-style relayout boundary. Leaf mutations dirty the container but don't propagate to root, so the root layout cache stays valid. Combined with _hasDirtyDescendant subtree-skip, the cache-hit path is O(dirty), not O(N).

| Scenario | Pilates core | yoga-layout (WASM) | Speedup |
|---|---:|---:|---:|
| 10 nodes | 1.5µs | 15.1µs | 10× |
| 100 nodes | 29µs | 263µs | |
| 1k nodes | 0.17ms | 1.52ms | |
| 10k nodes | 2.16ms | 14.6ms | |
| 1k, mutate one leaf/frame | 129µs | 56µs | Yoga wins ~2.3× |
| Same + explicit-sized boundaries | 7.1µs | 51µs | |

Mean per-pass on darwin/arm64, Node 26. Reproduce: git clone github.com/pilatesjs/pilates && pnpm install && pnpm bench

What's also in this release line

  • @pilates/[email protected] — React 19 reconciler driving the engine; useFocus, useInput with bracketed paste, mouse + scroll, <ScrollView>, <ErrorBoundary>, <ThemeProvider>.
  • @pilates/[email protected]<TextInput>, <TextArea>, <Select>, <MultiSelect>, <Tabs>, <Table>, <Spinner>, <ProgressBar>. Built on @pilates/react. 0.2.0 promotion next.

Install

npm install @pilates/core              # just the layout engine
npm install @pilates/render            # declarative tree → painted string
npm install @pilates/react @pilates/widgets   # the React stack

See also

  • README: https://github.com/pilatesjs/pilates
  • Launch announcement: https://github.com/pilatesjs/pilates/blob/main/docs/announcements/2026-05-09-faster-than-yoga.md
  • Per-package CHANGELOGs: core · render · diff · react · widgets

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Pilates

Get notified when new releases ship.

Sign up free

About Pilates

All releases →

Beta — feedback welcome: [email protected]