wren

Familiar, feather-light meta-framework

Get Started

Familiar

Integrates well with libraries you love.

Intuitive features and API, and a few new ones to explore.

Hosts

Tools

UI

SSXMore to come!

Features

File-based routing

Use the file system to define routes, layouts, and more.

Config-based routing

Use a config file for more control and flexibility.

Layered Middleware

Define middleware at the route, layout, or app level and compose them together.

Layered Loaders

Define data loaders at the route, layout, or app level, and share the results.

"use" directives

Continue using file or function-level directives for client-server boundaries (in applicable frameworks)

vite plugins

Continue using familiar Vite plugins.

UI Frameworks

Choose between React or Preact (more to come).

SSG

Static site generation for pre-rendered content.

SSR

Server-side rendering for dynamic content.

Client-side Routing

Optionally navigate between pages on the client side without full page reloads.

Vanilla-JS component script

Create dynamic components with a script tag and JSX, without bundling frameworks.

And more

Check our documentation for more features.

Feather-light

Built on vite for swift developments and builds.

Configurable route-based caching. Competitive SSR performance.

Competitive Performance

Routing to Catch-all /a/b/c

p50 response latency

Wren (Preact)~3.00 ms
Wren (SSX)~3.00 ms
Wren (React)~11.00 ms
SvelteKit~17.00 ms
Astro~25.00 ms
NextJS~148.00 ms

node v26.10.0, autocannon v8.0.0, 50 connections, 10 pipelining, 15s duration, M4 Pro. Minimal routes. Attempted to not include any client assets per app. Take these results with a grain of salt!

Thoughtful Enhancements

Minimal API

Wren tries to keep features minimal and focused on essentials, but flexible enough to let you build what you need.

Zero JS

Ship HTML without a client runtime by default. Use vanilla JS scripts without importing a framework.

Vanilla JS scripts

Add lightweight behavior with standard script tags. Create web components.

Minimal Dependencies

Our packages make an effort to use the least amount of dependencies possible.

Client routing

Navigate without full page reloads when you need it.

Custom ISR

Tune revalidation for each route (planned!).