Overview
Fresh is Deno's full-stack web framework, built on web standards (Request, Response) and designed for primarily server-rendered sites. Pages render to HTML on the server and only islands, interactive Preact components, ship JavaScript. The docs list typical uses as web APIs, e-commerce shops, portfolios, landing pages, documentation and CRUD apps, and say plainly that Fresh is not the right choice for a single-page app.
Fresh 2.0 was released on 9 September 2025 after a long alpha. It rewrote the core engine so middlewares and whole Fresh apps compose with an App API (app.get, app.listen), became a Vite plugin with hot module reloading in islands, lazily loads routes for faster cold starts, adds built-in OpenTelemetry, and moved distribution to JSR. Rendering is fast thanks to Deno's precompile JSX transform.
For production you run deno task build, which runs vite build and writes optimised assets to a _fresh folder, then deno task start, which serves the build with deno serve. Fresh runs anywhere Deno runs: one-click on Deno Deploy, or in a Docker container on any cloud or your own server.
Pricing and plans
What it does
- Islands architecture
- Only interactive Preact components ship JavaScript; the rest is server HTML.
- Composable App API
- Routes and middleware defined on an App object; whole Fresh apps can be mounted inside others.
- Vite plugin
- Since Fresh 2, access to Vite plugins and hot module reloading in islands.
- Built-in OpenTelemetry
- Traces for middleware and rendering, viewable in Deno Deploy.
- File-based routes
- File conventions for routes plus programmatic routes.
Strengths and limitations
Strengths
- Very little client JavaScript for server-rendered pages.
- Small API that is quick to learn.
- Maintained and used in production by Deno itself.
- TypeScript and JSX work with no config under Deno.
Limitations
- Not for single-page apps, per the Fresh docs.
- Requires the Deno runtime rather than Node.js.
- Islands use Preact, not React, so some React libraries need compatibility work.
- Fresh 1.x apps need a migration to 2.0 (new core API, Vite, JSR).
Who it suits
Good for
- Server-rendered sites and stores on Deno
- Landing pages, docs and CRUD apps
- Teams already using Deno Deploy
Look elsewhere if
- Single-page applications
- Teams tied to the Node.js ecosystem
Pricing history
-
Fresh 2.0 released as a Vite plugin
Released 9 September 2025: Fresh 2 rewrote its core around a composable App API, became a Vite plugin with island HMR, added built-in OpenTelemetry and moved to JSR. Fresh 1.x apps need a migration. Source ↗
Alternatives to Fresh
| Tool | From | Free option | Stages |
|---|---|---|---|
| Nuxt Full-stack Vue framework | — | ||
| SvelteKit Full-stack Svelte framework | — | ||
| TanStack Start Full-stack React (and Solid) framework | — | ||
| Eleventy (Build Awesome) Static site generator | — | ||
| React UI library | — | ||
| Vue Progressive UI framework | — |
Questions
Is Fresh 2 stable?
Yes. Fresh 2.0.0 was released on 9 September 2025.
Does Fresh work without Deno Deploy?
Yes. Fresh runs anywhere Deno runs, including Docker containers on any cloud or your own server.
Does Fresh use React?
It uses Preact for rendering and islands.
Sources read for this page