Features
- Islands architecture for selective hydration
- No build step — just-in-time rendering
- Built on Deno with TypeScript-first design
- Preact under the hood for UI components
- File-based routing with middleware support
Pros
- Zero config — no bundler, no build step
- Ships minimal JavaScript by default
- Deno's security model and TypeScript support
Cons
- Locked to Deno runtime (no Node.js support)
- Small ecosystem compared to Node.js frameworks
- Limited community and third-party resources
Overview
Fresh is a next-generation web framework built for Deno, featuring islands-based architecture and just-in-time rendering. It sends zero JavaScript to the client by default — interactive components (islands) are explicitly opted in, similar to Astro’s approach, but using Preact as the rendering engine.
Fresh requires no build step. Pages are rendered on the server just-in-time, and the framework leverages Deno’s built-in TypeScript support, URL imports, and security model. The result is a development experience with minimal configuration and fast iteration.
When to Use
Fresh is the right choice when you’re building on Deno and want an islands-based framework with minimal configuration. It’s well-suited for content-heavy sites, server-rendered applications, and projects where you want the benefits of Deno’s runtime (security, TypeScript, modern APIs).
Getting Started
deno run -A -r https://fresh.deno.dev my-app
cd my-app && deno task start
// routes/index.tsx
import Counter from "../islands/Counter.tsx";
export default function Home() {
return (
<div>
<h1>Hello, Fresh!</h1>
<Counter start={0} />
</div>
);
}