Fresh (framework)
A Deno-native full-stack web framework built around islands architecture and zero-config TypeScript
Fresh is a full-stack web framework for the Deno runtime that renders pages on the server by default and ships JavaScript to the browser only for interactive 'islands', with no build step required.
Definition
Fresh is a full-stack web framework for the Deno runtime that renders pages on the server by default and ships JavaScript to the browser only for interactive 'islands', with no build step required.
Overview
Fresh was created by the Deno team to demonstrate what a web framework looks like when it is designed around Deno's runtime primitives instead of being ported from a Node.js-first framework. Routes are plain TypeScript or JSX files placed in a `routes/` directory and are matched to URLs by file-system convention, similar to Next.js's pages router, but every route runs through Deno directly rather than a bundler-driven build pipeline. There is no `npm install` step and no webpack or Vite configuration to maintain; dependencies are fetched on demand from URLs or npm specifiers and cached by the Deno runtime itself. Fresh's defining architectural choice is islands architecture: every page is rendered to static HTML on the server, and only components explicitly marked as islands (placed in an `islands/` directory) are hydrated with JavaScript in the browser. This means a content-heavy page with one interactive widget — a search box, a counter, a form — ships only the JavaScript for that widget, not for the whole page, which keeps the client-side bundle close to zero for mostly static sites. This approach, sometimes called 'partial hydration,' predates Fresh but Fresh was one of the frameworks that made it a default rather than an opt-in optimization. Because Fresh runs on Deno, it inherits Deno's built-in TypeScript support, secure-by-default permissions model, and first-class support for edge deployment platforms like Deno Deploy, where Fresh applications can run globally distributed with no separate build artifact to manage. Fresh is used mostly for content sites, dashboards, and small-to-medium web applications where fast time-to-interactive and minimal client JavaScript matter more than the extensive plugin ecosystem that older, more established frameworks like Next.js offer. It remains a smaller, more opinionated project than its Node.js counterparts, with a correspondingly smaller ecosystem of third-party integrations.
Key Features
- Islands architecture: server-rendered HTML with JavaScript shipped only for interactive components
- Zero-config, no build step — routes run directly on the Deno runtime
- File-system based routing under a routes/ directory
- Native TypeScript support with no separate compilation step
- Just-in-time (JIT) rendering per request rather than static site generation by default
- First-class integration with Deno Deploy for globally distributed edge hosting
- Preact under the hood, keeping the client runtime small
- Secure-by-default execution inherited from Deno's permissions model
Use Cases
Alternatives
History
Fresh is a full-stack web framework for the Deno runtime, notable for having no build step and for shipping zero JavaScript to the client by default. Introduced by the Deno team in 2021, it is built on web-standard APIs, uses Preact for rendering, and popularized the "islands architecture": pages are rendered to static HTML on the server, with small, independently hydrated "islands" of interactivity added only where needed. This keeps client JavaScript minimal and pages fast. Fresh powers Deno's own website and, in its 2.x generation, added a programmatic App API and optional Vite integration while remaining an edge-native, progressive-enhancement-first framework.
Sources
- Fresh — official website · as of 2026-07-17
- Deno — "A Gentle Introduction to Islands" · as of 2026-07-17