Alpha

The native-first framework for modern web apps.

A high-performance full-stack web framework that compiles JSX to native Web Components, with signals for reactive state updates.

React

19 · DOM renderer

Build time

JSX components
React Compiler (optional)
JSX transform

On state change

State update
Component render
Reconciliation (VDOM)
DOM commit

React Compiler adds build-time memoization. React renders affected components and commits necessary DOM changes.

Official docs →
AFW

Custom elements + signals

Build time

JSX components
afwc compiler
Custom elements + bindings

On state change

Signal change
Dependent DOM bindings
DOM updates

Custom elements manage component lifecycles; signals rerun dependent bindings. No virtual DOM.

Reactivity docs →

Runtime performance

Our runtime against the React, Solid and Svelte 5 libraries. Median ms over 3 pooled runs, 4× throttled; lower is better. Recorded 2026-08-01 with the earlier toolchain.

Operationafwreactsolidsvelte
create 1,000 rows261.1274.1244.3257.6
create 10,000 rows2627.83338.62542.22548.8
append 1,000 to 1,000295.8286.1270.1267.4
update every 10th (1k)91.893.8108.992.5
swap 2 rows (1k)33246.431.131.3
select row (1k)26.127.33029
remove row (1k)40.439.937.536.1
clear 10,000 rows178.6260.9164165.3
Bold beats the ~8.3 ms timing resolution; the rest are ties. Method & caveats →

Build cost

Building a static site, not serving one — against Astro, Next.js, TanStack Start and Vite. Peak memory and wall time; lower is better.

Metricafwastronexttanstackvite
Peak build memory (MB)1404161226510260
Build time (s)0.31.23.820.8
Historical measurements from July–August 2026; the columns do not represent equal work. Method & caveats →

Capabilities & roadmap

What ships today, and what is planned next.

Client Rendering (CSR)Supported

Compiler-driven SPA engine.

Core
Zero-VDOM updatesSupported

Direct DOM bindings without a virtual DOM tree.

Core
Reactive macrosSupported

$state, $derived, $effect, $context on fine-grained signals.

Core
Refs & exposeSupported

$ref to elements; imperative $expose.

Core
Context APISupported

Scoped DI with createContext, ContextProvider, and $context — no prop drilling.

Core
PortalSupported

Render a subtree into another DOM target; context resolves across the boundary.

Core
File-based routerSupported

Directory routing with client-side navigation.

Routing
Nested layoutsSupported

Shared layouts composed around matching routes.

Routing
Route guardsSupported

Client navigation checks and redirects; server auth uses middleware.

Routing
Code splittingSupported

Dynamic route imports bundled and split by esdev.

Routing
Route prefetchPlanned

Preload route chunks on hover or when a link enters the viewport.

Routing
Static generation (SSG)Supported

Pre-render routes to HTML at build time.

Rendering
MDXSupported

MDX pages and components; docs theme included.

Rendering
Server rendering (SSR)Supported

String renderers for an app-owned request server; shares the SSG render path.

Rendering
HydrationSupported

First paint adopts the server DOM — pages, layouts, lists, conditionals, and islands with rich props.

Rendering
esdev templatesPartial

Native plugin setup is available; embedded AFW templates await their upstream migration.

Tooling & DX
Dev server + reload on saveSupported

esdev watches and rebuilds configured targets, refreshing accepted modules or reloading the page.

Tooling & DX
CSS hot updatesSupported

Global stylesheet edits update in place and keep page state.

Tooling & DX
JavaScript module HMRSupported

esdev hot-swaps JavaScript modules that explicitly accept updates.

Tooling & DX
Component HMRPartial

Compatible component edits retain state and recover after a compile error; page/layout edits remount route views.

Tooling & DX
Compiler diagnosticsSupported

Located compile errors and source maps; runtime errors report through the framework API.

Tooling & DX
Testing librarySupported

Component testing utilities.

Tooling & DX
TypeScript / TSXBeta

Compile TSX components with macro typings; full editor tooling is in progress.

Tooling & DX
Devtools extensionPlanned

Component, state, and network inspection.

Tooling & DX
Tailwind CSSSupported

Processed by esdev from your CSS import; install Tailwind in the app.

Styling
Scoped CSS ModulesSupported

Component-scoped class names.

Styling
MiddlewareSupported

Server middleware for pages, APIs and loader data when included in the request pipeline.

Full-stack
Cookie helpersSupported

getCookie / setCookie / deleteCookie on @opentf/afw/server — RFC 6265 helpers for middleware, API routes, and loaders.

Full-stack
Reactive formsBeta

@opentf/afw-form — nested reactive values, validation and submit state.

Full-stack
API routesSupported

File-based route.js / route.ts endpoints — standard Request/Response and dynamic params.

Full-stack
Data fetchingSupported

Route loaders (loader.js → router.data across SSR/SSG/SPA) + client-side resource(); queries and actions planned.

Full-stack
InternationalizationBeta

@opentf/afw-i18n — URL-prefix locale routing, ICU messages, and Intl formatters (Phase 1).

Full-stack
Accessibility helpersPlanned

ARIA helpers and a11y defaults.

Full-stack

Start building

Follow the setup guide to configure and build your first app.