All skills
denoland avatar

/deno-frontend

@d5f6ace official
by Denodenoland/skills99 stars
8

Use when building a web frontend with Deno β€” running React, Vite, Astro, SvelteKit, Next.js, Nuxt or other npm frameworks under Deno, or working with Fresh, Deno's own island-architecture framework. Covers which path to pick, Fresh 2.x routes, handlers, islands, Preact signals, Tailwind, and Fresh 1.x to 2.x migration.

Use this Skill: https://skilld.dev/gh/denoland/skills/deno-frontend

This session only. Nothing lands on disk.

SKILL.md

β‰ˆ84 tokens always: the name and description. β‰ˆ682 when used: this file. β‰ˆ2.7k more on demand in 2 files.

Frontend development with Deno

Two paths. Pick by what the project already uses.

Regular npm frameworks β€” the usual choice

Deno runs the normal frontend ecosystem: React, Vue, Svelte, Solid, Vite, Astro, Next.js, Nuxt, SvelteKit, Remix, SolidStart. Nothing needs to be ported, and there is no Deno-specific way to write them.

deno create vite my-app     # or astro, next, nuxt, svelte…
cd my-app
deno install
deno task dev

deno create is npm create. deno install reads package.json. deno task <script> runs package.json scripts. That is the whole difference.

Follow the framework's own documentation for everything else β€” routing, components, data loading, and config are the framework's concern, not Deno's. Don't invent Deno-flavoured variants of their APIs, and don't reach for Fresh patterns in a React or Svelte project.

The only things worth knowing:

  • Some frameworks need "nodeModulesDir": "auto" in deno.json; Next.js does.
  • Permissions apply to the dev server too β€” framework tasks generally want -A.
  • Deploying: see the deno-deploy skill, which lists per-framework build commands and presets.

Fresh β€” Deno's own framework

Fresh suits a new Deno-first project that wants server rendering with minimal client JavaScript. It uses island architecture: pages render on the server, and only components in islands/ ship JavaScript.

deno run -Ar jsr:@fresh/init
cd my-project
deno task dev                # http://localhost:5173

A Fresh project is Vite-based: vite.config.ts for the build, main.ts for the server, file-based routes in routes/, islands in islands/, server-only components in components/. Preact supplies the component model, with signals for state.

// islands/Counter.tsx β€” interactive, ships JS
import { useSignal } from "@preact/signals";

export default function Counter() {
  const count = useSignal(0);
  return <button onClick={() => count.value++}>Count: {count.value}</button>;
}

Three rules carry most of the weight:

  1. Islands ship JavaScript β€” keep them small, leave everything else in components/.
  2. Island props must be serializable. Functions cannot be passed.
  3. Handlers take a single (ctx) parameter.

Load references/FRESH.md for routes, handlers, define helpers, middleware, islands, signals, and Tailwind.

Use Fresh 2.x, imported from "fresh". For an existing 1.x project, or one pinned to a 2.0.0-alpha.* release, see references/FRESH_MIGRATION.md.

Further reading

  • https://fresh.deno.dev/docs β€” Fresh documentation
  • references/FRESH.md β€” Fresh 2.x patterns in depth
  • references/FRESH_MIGRATION.md β€” Fresh 1.x and alpha migration

Source: SKILL.md on GitHub

1 warning16d5 checks Β· Risk SAFE
  • Gen Agent Trust Hub16d

    The skill provides instructions for frontend development using Deno and the Fresh framework. It includes standard commands for project initialization, dependency management, and local development. While it involves remote script execution and recommends granting broad permissions (-A flag), these are standard practices within the Deno/Fresh ecosystem and originate from the framework's official sources.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW Β· No issues

  • Runlayer7mo

    1/1 file flagged

  • ZeroLeaks5mo

    Score: 93/100 Β· 2 sections analyzed

Signed by skilld at d5f6ace. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 days ago.

Steadyupdated 2 months ago
metadata
{
  "author": "denoland",
  "version": "3.0"
}
  • TypeScript
  • fresh
  • deno
  • preact
  • tailwind
  • island-architecture
  • server-rendering
  • web-framework

README badge

README badge for denoland/skills/deno-frontend

Builds server-rendered web pages and interactive components in Deno using Fresh 2.x, Preact, and Tailwind CSS with island architecture. Covers Fresh 2.x project structure, routes, islands, handlers, data fetching patterns, and migration from Fresh 1.x.

Generated from the current SKILL.md.

Does this skill cover Fresh 1.x?
No. This skill covers Fresh 2.x only. Fresh 1.x is deprecated. The skill includes guidance on migrating from Fresh 1.x to 2.x, but all code examples use Fresh 2.x patterns.
Can I use this skill for other frameworks like Next.js or Vue?
No. This skill applies only to Fresh/Deno frontend questions. For Next.js, Vue, Svelte, Angular, or other frameworks, use framework-specific approaches instead.
What's the difference between islands and regular components in Fresh?
Islands are interactive components that hydrate on the client and ship JavaScript to the browser. Regular components are server-only and send no JavaScript. Use islands for interactive UI and components for static content.
Does this cover data fetching patterns?
Yes. The skill covers two patterns: handler with data object (recommended for type safety and auth checks) and async server components (for simple queries). It includes the `createDefine` helper for type-safe handlers.
Can I use Tailwind CSS with Fresh?
Yes. Tailwind CSS is integrated via `@tailwindcss/vite` in the vite.config.ts file, which is included in Fresh 2.x project initialization.

Generated from the current SKILL.md. These answers refresh after source changes.