Key takeaway: This is the default web framework once you have decided to run Deno, and close to pointless if you have not. Fresh renders on the server and hydrates only islands, which is the Astro shape, but the ecosystem around it is a fraction of the size. Filing it beside pure static generators flatters the category more than it describes the tool.
Quick facts
- LanguageTypeScript
- CategoryDeno
- LicenseMIT
- Created2022
- GitHub stars12.6k
- Statusactive
Templating: JSX Preact Markdown
What it is
Fresh is Deno's flagship full-stack framework. Islands architecture by default (Astro-like), Preact-based, deployed to Deno Deploy or self-hosted. Static generation supported alongside server rendering.
Best for
- Deno-first teams
- Projects that want Astro-style islands but on Deno
When not to pick it
For non-Deno teams the ecosystem is smaller than Astro's.
My take
Fresh is good. If you have decided on Deno, this is the default. If not, Astro will serve a similar shape with a bigger community.
Server-first with Preact islands
Fresh renders routes on the server and ships JavaScript only for components placed in the islands directory, which is the same architectural bet Astro made and it holds up well. Routes are files that export a handler and a component, so data fetching and rendering sit together without a separate data-loading convention to learn. Because Deno runs TypeScript natively and resolves dependencies through URLs or an import map, there is very little build configuration to own: no bundler config to maintain, no transpile step to babysit, no node_modules directory to reason about. Preact rather than React keeps the client payload small, and for most interactive widgets the API difference is invisible in daily work. The developer loop is genuinely pleasant, and if you have already accepted Deno as your runtime, this is the least friction you will find on it.
A running process is the assumption
Every documented deployment path assumes a live Deno process: one-click Deno Deploy, a compiled binary, a Docker container, or Cloudflare Workers. If what you actually want is a folder of HTML you can drop on a CDN with nothing running behind it, Lume is the Deno-native tool built for that job and Astro is the cross-runtime one. The other honest constraint is ecosystem. Deno's npm compatibility has improved a great deal, but component libraries written for React sometimes need aliasing to work against Preact, and the pool of Fresh-specific plugins, themes, and worked examples is small enough that you will read source code instead of search results. The documentation is also blunt that Fresh is the wrong shape for a single-page application, so do not arrive expecting a client-side router. Reasonable for a Deno shop, odd for anybody else.
Frequently asked questions
Is Fresh a static site generator?
Not primarily. Fresh is a server-rendered framework with islands for client interactivity, and its documented deployment targets all assume a running Deno process rather than a folder of files. If you want plain HTML on a CDN with nothing behind it, Lume on Deno or Astro on anything will fit the brief more directly.
Fresh or Astro?
Astro unless Deno is already a decision you have made. The architecture is similar, but Astro has a far larger ecosystem, multi-framework islands, a stronger image pipeline, and more hosting options. Fresh wins when your team is committed to Deno and values a single runtime with native TypeScript and no bundler configuration to maintain.
Do I need Deno Deploy to host Fresh?
No, but it is the path of least resistance. The documentation covers Docker containers, Cloudflare Workers, and compiling to a binary, so anywhere Deno runs will do. Expect the examples and integrations to assume Deno Deploy, which means self-hosting leaves more of the wiring to you.
Links
Compare Fresh side-by-side
Similar tools you should also consider
If Fresh is your pick, the next conversation is short
The 30-min call is where your project gets a real architecture, an SEO transport plan, and a price range you can take to your team. Describe your site, your timeline, your existing content. I tell you whether Fresh is genuinely the right call for you, and what the build actually looks like.