Title: Fresh - The simple, approachable, productive web framework.
Open Graph Title: Fresh - The simple, approachable, productive web framework.
Description: Fresh features just-in-time edge rendering, island based interactivity, and zero-configuration TypeScript support. Fast to write; fast to run.
Open Graph Description: Fresh features just-in-time edge rendering, island based interactivity, and zero-configuration TypeScript support. Fast to write; fast to run.
Opengraph URL: https://usefresh.dev/
Domain: usefresh.dev
| og:type | website |
| og:image | https://usefresh.dev/og-image.webp?__frsh_c=xgy2x0824p5j |
| color-scheme | light dark |
| traceparent | 00-0d4493e1cb655a0f6abcfb76be2a7aec-9b83953030a61b2b-01 |
Links:
| Fresh 2.3 is here!—WebSockets, View Transitions, Temporal API, and more → | https://deno.com/blog/fresh-2.3 |
| Docs | https://usefresh.dev/docs |
| Blog | https://deno.com/blog?tag=fresh |
| https://github.com/denoland/fresh | |
| https://discord.com/invite/deno | |
| Get started | https://usefresh.dev/docs/getting-started |
| Preact | https://preactjs.com/ |
| Preact | https://preactjs.com/ |
| Signals | https://preactjs.com/guide/v10/signals/ |
| Learn more about islands | https://usefresh.dev/docs/concepts/islands |
| Forms in Fresh | https://usefresh.dev/docs/advanced/forms |
| Learn more about Partials | https://usefresh.dev/docs/advanced/partials |
| View TransitionsNative-feeling page transitions with a single config flag. Customize per-element with plain CSS.const app = new App({ viewTransition: true, }); | https://usefresh.dev/docs/advanced/view-transitions |
| Route HandlersDefine GET, POST, DELETE, or any HTTP method as a named handler on your route, with full type safety.export const handlers = define.handlers({ GET(ctx) { /* ... */ }, POST(ctx) { /* ... */ }, DELETE(ctx) { /* ... */ }, }); | https://usefresh.dev/docs/concepts/routing |
| WebSocketsAdd real-time endpoints with app.ws(). Define open, message, and close handlers in a single object.app.ws("/chat", { open(socket) { /* ... */ }, message(socket, event) { socket.send(event.data); }, }); | https://usefresh.dev/docs/advanced/websockets |
| ComponentSet titles, meta tags, stylesheets, and scripts from any page or island. No hoisting hacks needed.
| https://usefresh.dev/docs/advanced/head |
| OpenTelemetryAuto-injects a traceparent meta tag into every page, connecting browser traces to server spans.const app = new App({ otel: true, }); | https://usefresh.dev/docs/advanced/opentelemetry |
| Content Security PolicyAutomatic nonce injection for inline scripts and styles. Strong security defaults with zero boilerplate.app.use(csp({ directives: { scriptSrc: ["'nonce'"], }, })); | https://usefresh.dev/docs/plugins/csp |
| File-based routingDrop a file in routes/, get a URL. Dynamic params via [id].tsx. | https://usefresh.dev/docs/concepts/file-routing |
| MiddlewareChain auth, logging, or any logic before your routes run. | https://usefresh.dev/docs/concepts/middleware |
| Zero-config TypeScriptJust write .tsx. No tsconfig, no build step, it just works. | https://usefresh.dev/docs/concepts/routing |
| Deploy anywhereDeno Deploy, Docker, Cloudflare Workers, or a single binary with deno compile. | https://usefresh.dev/docs/deployment/deno-deploy |
| LayoutsNested layouts that compose automatically from the file system. | https://usefresh.dev/docs/concepts/layouts |
| Built-in pluginsCORS, CSRF, IP filtering, and trailing slashes out of the box. | https://usefresh.dev/docs/plugins/cors |
| Deco.cx | https://deco.cx |
| https://deno.com/blog/deco-cx-subhosting-serve-their-clients-storefronts-fast | |
| Read the case study | https://deno.com/blog/deco-cx-subhosting-serve-their-clients-storefronts-fast |
| Learn more about Deno | https://deno.com |
| Get started | https://usefresh.dev/docs/getting-started |
| Source | https://github.com/denoland/fresh |
| License | https://github.com/denoland/fresh/blob/main/LICENSE |
| Code of Conduct | https://github.com/denoland/fresh/blob/main/.github/CODE_OF_CONDUCT.md |
Viewport: width=device-width, initial-scale=1.0