Ezh is a frontend framework focused on extreme performance and minimal surface area, without sacrificing developer ergonomics.
In practice, it consistently outperforms React in runtime performance, while remaining surprisingly easy to use. One warning though: after using it for a while, going back to React can feel… uncomfortable.
Some concrete numbers
Core implementation: ~2,500 lines of code
Production minified bundle: 21KB
Public API surface: 11 APIs
Learning curve: effectively flat
The Splendor demo above has fairly complex UI interactions, yet the entire game page is implemented in under 1,000 lines of code.
For a more minimal example, please visit https://github.com/foreverflying/ezh-demo Readme page. It shows a tiny interactive example implemented in ~40 lines. It’s meant to be readable at a glance—no documentation required.
Design highlights
Quick self-intro first: my name is Ezh (pronounced like “edge”).
Some technical choices that define the framework:
TypeScript-only
Ezh supports only TypeScript—both for authoring and compilation. No JavaScript mode.
Every HTML element and every component is statically typed. Typos in attributes are caught immediately.
TSX-first, React-compatible syntax
TSX is a first-class citizen. Existing React TSX codebases can often be partially reused. In many cases, removing framework-specific glue code is enough to migrate.
O(1) DOM updates without Virtual DOM diffing
DOM updates are driven by an original, field-level dependency mechanism.
A single state field change triggers the minimal necessary update set—nothing else.
No virtual DOM trees, no diffing passes.
Configurable delayed disposal & reuse
DOM subtrees can be retained briefly after unmount.
If a user switches tabs away from a complex 1,000+ node subtree and returns shortly after, the rebuild cost is close to zero.
Batteries included, but small
React’s core package is ~172KB, and routing, state management, and TypeScript types are all separate concerns.
Ezh ships as a single npm package (~41.5KB unpacked), including ~18KB of type definitions.
Routing, state management, and lifecycle control are all included in the remaining ~21KB of runtime code.
Status
The ezh npm package is already usable today.
You can learn it directly from the demo source code; about an hour is enough.
The core source code will be open-sourced. That has always been the plan, though it may take a bit more time.
foreverflying•1h ago
What is Ezh?
Ezh is a frontend framework focused on extreme performance and minimal surface area, without sacrificing developer ergonomics.
In practice, it consistently outperforms React in runtime performance, while remaining surprisingly easy to use. One warning though: after using it for a while, going back to React can feel… uncomfortable.
Some concrete numbers
Core implementation: ~2,500 lines of code
Production minified bundle: 21KB
Public API surface: 11 APIs
Learning curve: effectively flat
The Splendor demo above has fairly complex UI interactions, yet the entire game page is implemented in under 1,000 lines of code.
For a more minimal example, please visit https://github.com/foreverflying/ezh-demo Readme page. It shows a tiny interactive example implemented in ~40 lines. It’s meant to be readable at a glance—no documentation required.
Design highlights
Quick self-intro first: my name is Ezh (pronounced like “edge”).
Some technical choices that define the framework:
TypeScript-only Ezh supports only TypeScript—both for authoring and compilation. No JavaScript mode. Every HTML element and every component is statically typed. Typos in attributes are caught immediately.
TSX-first, React-compatible syntax TSX is a first-class citizen. Existing React TSX codebases can often be partially reused. In many cases, removing framework-specific glue code is enough to migrate.
O(1) DOM updates without Virtual DOM diffing DOM updates are driven by an original, field-level dependency mechanism. A single state field change triggers the minimal necessary update set—nothing else. No virtual DOM trees, no diffing passes.
Configurable delayed disposal & reuse DOM subtrees can be retained briefly after unmount. If a user switches tabs away from a complex 1,000+ node subtree and returns shortly after, the rebuild cost is close to zero.
Batteries included, but small React’s core package is ~172KB, and routing, state management, and TypeScript types are all separate concerns. Ezh ships as a single npm package (~41.5KB unpacked), including ~18KB of type definitions. Routing, state management, and lifecycle control are all included in the remaining ~21KB of runtime code.
Status
The ezh npm package is already usable today. You can learn it directly from the demo source code; about an hour is enough.
The core source code will be open-sourced. That has always been the plan, though it may take a bit more time.