[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-deno-deno-frontend":3,"mdc-u6zj8s-key":38,"related-org-deno-deno-frontend":808,"related-repo-deno-deno-frontend":877},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":33,"sourceUrl":36,"mdContent":37},"deno-frontend","build Deno frontend apps with Fresh","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"deno","Deno","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdeno.png","denoland",[13,15,18,21,24],{"name":9,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Tailwind CSS","tailwind-css",{"name":19,"slug":20,"type":14},"Preact","preact",{"name":22,"slug":23,"type":14},"Frontend","frontend",{"name":25,"slug":26,"type":14},"Fresh","fresh",89,"https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fskills","2026-07-31T05:52:44.546078","MIT",8,[],{"repoUrl":28,"stars":27,"forks":31,"topics":34,"description":35},[],"Modern Deno skills for AI coding assistants. Covers Deno, JSR imports, Fresh, Deno Deploy, and best practices.","https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fdeno-frontend","---\nname: deno-frontend\ndescription: 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.\nlicense: MIT\nmetadata:\n  author: denoland\n  version: \"3.0\"\n---\n\n# Frontend development with Deno\n\nTwo paths. Pick by what the project already uses.\n\n## Regular npm frameworks — the usual choice\n\nDeno runs the normal frontend ecosystem: React, Vue, Svelte, Solid, Vite, Astro,\nNext.js, Nuxt, SvelteKit, Remix, SolidStart. Nothing needs to be ported, and\nthere is no Deno-specific way to write them.\n\n```bash\ndeno create vite my-app     # or astro, next, nuxt, svelte…\ncd my-app\ndeno install\ndeno task dev\n```\n\n`deno create` is `npm create`. `deno install` reads `package.json`.\n`deno task \u003Cscript>` runs `package.json` scripts. That is the whole difference.\n\n**Follow the framework's own documentation for everything else** — routing,\ncomponents, data loading, and config are the framework's concern, not Deno's.\nDon't invent Deno-flavoured variants of their APIs, and don't reach for Fresh\npatterns in a React or Svelte project.\n\nThe only things worth knowing:\n\n- Some frameworks need `\"nodeModulesDir\": \"auto\"` in `deno.json`; Next.js does.\n- Permissions apply to the dev server too — framework tasks generally want `-A`.\n- Deploying: see the `deno-deploy` skill, which lists per-framework build\n  commands and presets.\n\n## Fresh — Deno's own framework\n\nFresh suits a new Deno-first project that wants server rendering with minimal\nclient JavaScript. It uses **island architecture**: pages render on the server,\nand only components in `islands\u002F` ship JavaScript.\n\n```bash\ndeno run -Ar jsr:@fresh\u002Finit\ncd my-project\ndeno task dev                # http:\u002F\u002Flocalhost:5173\n```\n\nA Fresh project is Vite-based: `vite.config.ts` for the build, `main.ts` for the\nserver, file-based routes in `routes\u002F`, islands in `islands\u002F`, server-only\ncomponents in `components\u002F`. Preact supplies the component model, with signals\nfor state.\n\n```tsx\n\u002F\u002F islands\u002FCounter.tsx — interactive, ships JS\nimport { useSignal } from \"@preact\u002Fsignals\";\n\nexport default function Counter() {\n  const count = useSignal(0);\n  return \u003Cbutton onClick={() => count.value++}>Count: {count.value}\u003C\u002Fbutton>;\n}\n```\n\nThree rules carry most of the weight:\n\n1. Islands ship JavaScript — keep them small, leave everything else in\n   `components\u002F`.\n2. Island props must be serializable. Functions cannot be passed.\n3. Handlers take a single `(ctx)` parameter.\n\nLoad `references\u002FFRESH.md` for routes, handlers, `define` helpers, middleware,\nislands, signals, and Tailwind.\n\nUse **Fresh 2.x**, imported from `\"fresh\"`. For an existing 1.x project, or one\npinned to a `2.0.0-alpha.*` release, see `references\u002FFRESH_MIGRATION.md`.\n\n## Further reading\n\n- \u003Chttps:\u002F\u002Ffresh.deno.dev\u002Fdocs> — Fresh documentation\n- `references\u002FFRESH.md` — Fresh 2.x patterns in depth\n- `references\u002FFRESH_MIGRATION.md` — Fresh 1.x and alpha migration\n",{"data":39,"body":42},{"name":4,"description":6,"license":30,"metadata":40},{"author":11,"version":41},"3.0",{"type":43,"children":44},"root",[45,54,60,67,72,163,213,224,229,281,287,307,369,413,666,671,704,725,760,766,802],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"frontend-development-with-deno",[51],{"type":52,"value":53},"text","Frontend development with Deno",{"type":46,"tag":55,"props":56,"children":57},"p",{},[58],{"type":52,"value":59},"Two paths. Pick by what the project already uses.",{"type":46,"tag":61,"props":62,"children":64},"h2",{"id":63},"regular-npm-frameworks-the-usual-choice",[65],{"type":52,"value":66},"Regular npm frameworks — the usual choice",{"type":46,"tag":55,"props":68,"children":69},{},[70],{"type":52,"value":71},"Deno runs the normal frontend ecosystem: React, Vue, Svelte, Solid, Vite, Astro,\nNext.js, Nuxt, SvelteKit, Remix, SolidStart. Nothing needs to be ported, and\nthere is no Deno-specific way to write them.",{"type":46,"tag":73,"props":74,"children":79},"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","deno create vite my-app     # or astro, next, nuxt, svelte…\ncd my-app\ndeno install\ndeno task dev\n","bash","",[80],{"type":46,"tag":81,"props":82,"children":83},"code",{"__ignoreMap":78},[84,117,132,145],{"type":46,"tag":85,"props":86,"children":89},"span",{"class":87,"line":88},"line",1,[90,95,101,106,111],{"type":46,"tag":85,"props":91,"children":93},{"style":92},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[94],{"type":52,"value":8},{"type":46,"tag":85,"props":96,"children":98},{"style":97},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[99],{"type":52,"value":100}," create",{"type":46,"tag":85,"props":102,"children":103},{"style":97},[104],{"type":52,"value":105}," vite",{"type":46,"tag":85,"props":107,"children":108},{"style":97},[109],{"type":52,"value":110}," my-app",{"type":46,"tag":85,"props":112,"children":114},{"style":113},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[115],{"type":52,"value":116},"     # or astro, next, nuxt, svelte…\n",{"type":46,"tag":85,"props":118,"children":120},{"class":87,"line":119},2,[121,127],{"type":46,"tag":85,"props":122,"children":124},{"style":123},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[125],{"type":52,"value":126},"cd",{"type":46,"tag":85,"props":128,"children":129},{"style":97},[130],{"type":52,"value":131}," my-app\n",{"type":46,"tag":85,"props":133,"children":135},{"class":87,"line":134},3,[136,140],{"type":46,"tag":85,"props":137,"children":138},{"style":92},[139],{"type":52,"value":8},{"type":46,"tag":85,"props":141,"children":142},{"style":97},[143],{"type":52,"value":144}," install\n",{"type":46,"tag":85,"props":146,"children":148},{"class":87,"line":147},4,[149,153,158],{"type":46,"tag":85,"props":150,"children":151},{"style":92},[152],{"type":52,"value":8},{"type":46,"tag":85,"props":154,"children":155},{"style":97},[156],{"type":52,"value":157}," task",{"type":46,"tag":85,"props":159,"children":160},{"style":97},[161],{"type":52,"value":162}," dev\n",{"type":46,"tag":55,"props":164,"children":165},{},[166,172,174,180,182,188,190,196,198,204,206,211],{"type":46,"tag":81,"props":167,"children":169},{"className":168},[],[170],{"type":52,"value":171},"deno create",{"type":52,"value":173}," is ",{"type":46,"tag":81,"props":175,"children":177},{"className":176},[],[178],{"type":52,"value":179},"npm create",{"type":52,"value":181},". ",{"type":46,"tag":81,"props":183,"children":185},{"className":184},[],[186],{"type":52,"value":187},"deno install",{"type":52,"value":189}," reads ",{"type":46,"tag":81,"props":191,"children":193},{"className":192},[],[194],{"type":52,"value":195},"package.json",{"type":52,"value":197},".\n",{"type":46,"tag":81,"props":199,"children":201},{"className":200},[],[202],{"type":52,"value":203},"deno task \u003Cscript>",{"type":52,"value":205}," runs ",{"type":46,"tag":81,"props":207,"children":209},{"className":208},[],[210],{"type":52,"value":195},{"type":52,"value":212}," scripts. That is the whole difference.",{"type":46,"tag":55,"props":214,"children":215},{},[216,222],{"type":46,"tag":217,"props":218,"children":219},"strong",{},[220],{"type":52,"value":221},"Follow the framework's own documentation for everything else",{"type":52,"value":223}," — routing,\ncomponents, data loading, and config are the framework's concern, not Deno's.\nDon't invent Deno-flavoured variants of their APIs, and don't reach for Fresh\npatterns in a React or Svelte project.",{"type":46,"tag":55,"props":225,"children":226},{},[227],{"type":52,"value":228},"The only things worth knowing:",{"type":46,"tag":230,"props":231,"children":232},"ul",{},[233,255,268],{"type":46,"tag":234,"props":235,"children":236},"li",{},[237,239,245,247,253],{"type":52,"value":238},"Some frameworks need ",{"type":46,"tag":81,"props":240,"children":242},{"className":241},[],[243],{"type":52,"value":244},"\"nodeModulesDir\": \"auto\"",{"type":52,"value":246}," in ",{"type":46,"tag":81,"props":248,"children":250},{"className":249},[],[251],{"type":52,"value":252},"deno.json",{"type":52,"value":254},"; Next.js does.",{"type":46,"tag":234,"props":256,"children":257},{},[258,260,266],{"type":52,"value":259},"Permissions apply to the dev server too — framework tasks generally want ",{"type":46,"tag":81,"props":261,"children":263},{"className":262},[],[264],{"type":52,"value":265},"-A",{"type":52,"value":267},".",{"type":46,"tag":234,"props":269,"children":270},{},[271,273,279],{"type":52,"value":272},"Deploying: see the ",{"type":46,"tag":81,"props":274,"children":276},{"className":275},[],[277],{"type":52,"value":278},"deno-deploy",{"type":52,"value":280}," skill, which lists per-framework build\ncommands and presets.",{"type":46,"tag":61,"props":282,"children":284},{"id":283},"fresh-denos-own-framework",[285],{"type":52,"value":286},"Fresh — Deno's own framework",{"type":46,"tag":55,"props":288,"children":289},{},[290,292,297,299,305],{"type":52,"value":291},"Fresh suits a new Deno-first project that wants server rendering with minimal\nclient JavaScript. It uses ",{"type":46,"tag":217,"props":293,"children":294},{},[295],{"type":52,"value":296},"island architecture",{"type":52,"value":298},": pages render on the server,\nand only components in ",{"type":46,"tag":81,"props":300,"children":302},{"className":301},[],[303],{"type":52,"value":304},"islands\u002F",{"type":52,"value":306}," ship JavaScript.",{"type":46,"tag":73,"props":308,"children":310},{"className":75,"code":309,"language":77,"meta":78,"style":78},"deno run -Ar jsr:@fresh\u002Finit\ncd my-project\ndeno task dev                # http:\u002F\u002Flocalhost:5173\n",[311],{"type":46,"tag":81,"props":312,"children":313},{"__ignoreMap":78},[314,336,348],{"type":46,"tag":85,"props":315,"children":316},{"class":87,"line":88},[317,321,326,331],{"type":46,"tag":85,"props":318,"children":319},{"style":92},[320],{"type":52,"value":8},{"type":46,"tag":85,"props":322,"children":323},{"style":97},[324],{"type":52,"value":325}," run",{"type":46,"tag":85,"props":327,"children":328},{"style":97},[329],{"type":52,"value":330}," -Ar",{"type":46,"tag":85,"props":332,"children":333},{"style":97},[334],{"type":52,"value":335}," jsr:@fresh\u002Finit\n",{"type":46,"tag":85,"props":337,"children":338},{"class":87,"line":119},[339,343],{"type":46,"tag":85,"props":340,"children":341},{"style":123},[342],{"type":52,"value":126},{"type":46,"tag":85,"props":344,"children":345},{"style":97},[346],{"type":52,"value":347}," my-project\n",{"type":46,"tag":85,"props":349,"children":350},{"class":87,"line":134},[351,355,359,364],{"type":46,"tag":85,"props":352,"children":353},{"style":92},[354],{"type":52,"value":8},{"type":46,"tag":85,"props":356,"children":357},{"style":97},[358],{"type":52,"value":157},{"type":46,"tag":85,"props":360,"children":361},{"style":97},[362],{"type":52,"value":363}," dev",{"type":46,"tag":85,"props":365,"children":366},{"style":113},[367],{"type":52,"value":368},"                # http:\u002F\u002Flocalhost:5173\n",{"type":46,"tag":55,"props":370,"children":371},{},[372,374,380,382,388,390,396,398,403,405,411],{"type":52,"value":373},"A Fresh project is Vite-based: ",{"type":46,"tag":81,"props":375,"children":377},{"className":376},[],[378],{"type":52,"value":379},"vite.config.ts",{"type":52,"value":381}," for the build, ",{"type":46,"tag":81,"props":383,"children":385},{"className":384},[],[386],{"type":52,"value":387},"main.ts",{"type":52,"value":389}," for the\nserver, file-based routes in ",{"type":46,"tag":81,"props":391,"children":393},{"className":392},[],[394],{"type":52,"value":395},"routes\u002F",{"type":52,"value":397},", islands in ",{"type":46,"tag":81,"props":399,"children":401},{"className":400},[],[402],{"type":52,"value":304},{"type":52,"value":404},", server-only\ncomponents in ",{"type":46,"tag":81,"props":406,"children":408},{"className":407},[],[409],{"type":52,"value":410},"components\u002F",{"type":52,"value":412},". Preact supplies the component model, with signals\nfor state.",{"type":46,"tag":73,"props":414,"children":418},{"className":415,"code":416,"language":417,"meta":78,"style":78},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F islands\u002FCounter.tsx — interactive, ships JS\nimport { useSignal } from \"@preact\u002Fsignals\";\n\nexport default function Counter() {\n  const count = useSignal(0);\n  return \u003Cbutton onClick={() => count.value++}>Count: {count.value}\u003C\u002Fbutton>;\n}\n","tsx",[419],{"type":46,"tag":81,"props":420,"children":421},{"__ignoreMap":78},[422,430,481,490,524,568,657],{"type":46,"tag":85,"props":423,"children":424},{"class":87,"line":88},[425],{"type":46,"tag":85,"props":426,"children":427},{"style":113},[428],{"type":52,"value":429},"\u002F\u002F islands\u002FCounter.tsx — interactive, ships JS\n",{"type":46,"tag":85,"props":431,"children":432},{"class":87,"line":119},[433,439,445,451,456,461,466,471,476],{"type":46,"tag":85,"props":434,"children":436},{"style":435},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[437],{"type":52,"value":438},"import",{"type":46,"tag":85,"props":440,"children":442},{"style":441},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[443],{"type":52,"value":444}," {",{"type":46,"tag":85,"props":446,"children":448},{"style":447},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[449],{"type":52,"value":450}," useSignal",{"type":46,"tag":85,"props":452,"children":453},{"style":441},[454],{"type":52,"value":455}," }",{"type":46,"tag":85,"props":457,"children":458},{"style":435},[459],{"type":52,"value":460}," from",{"type":46,"tag":85,"props":462,"children":463},{"style":441},[464],{"type":52,"value":465}," \"",{"type":46,"tag":85,"props":467,"children":468},{"style":97},[469],{"type":52,"value":470},"@preact\u002Fsignals",{"type":46,"tag":85,"props":472,"children":473},{"style":441},[474],{"type":52,"value":475},"\"",{"type":46,"tag":85,"props":477,"children":478},{"style":441},[479],{"type":52,"value":480},";\n",{"type":46,"tag":85,"props":482,"children":483},{"class":87,"line":134},[484],{"type":46,"tag":85,"props":485,"children":487},{"emptyLinePlaceholder":486},true,[488],{"type":52,"value":489},"\n",{"type":46,"tag":85,"props":491,"children":492},{"class":87,"line":147},[493,498,503,509,514,519],{"type":46,"tag":85,"props":494,"children":495},{"style":435},[496],{"type":52,"value":497},"export",{"type":46,"tag":85,"props":499,"children":500},{"style":435},[501],{"type":52,"value":502}," default",{"type":46,"tag":85,"props":504,"children":506},{"style":505},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[507],{"type":52,"value":508}," function",{"type":46,"tag":85,"props":510,"children":511},{"style":123},[512],{"type":52,"value":513}," Counter",{"type":46,"tag":85,"props":515,"children":516},{"style":441},[517],{"type":52,"value":518},"()",{"type":46,"tag":85,"props":520,"children":521},{"style":441},[522],{"type":52,"value":523}," {\n",{"type":46,"tag":85,"props":525,"children":527},{"class":87,"line":526},5,[528,533,538,543,547,553,559,564],{"type":46,"tag":85,"props":529,"children":530},{"style":505},[531],{"type":52,"value":532},"  const",{"type":46,"tag":85,"props":534,"children":535},{"style":447},[536],{"type":52,"value":537}," count",{"type":46,"tag":85,"props":539,"children":540},{"style":441},[541],{"type":52,"value":542}," =",{"type":46,"tag":85,"props":544,"children":545},{"style":123},[546],{"type":52,"value":450},{"type":46,"tag":85,"props":548,"children":550},{"style":549},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[551],{"type":52,"value":552},"(",{"type":46,"tag":85,"props":554,"children":556},{"style":555},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[557],{"type":52,"value":558},"0",{"type":46,"tag":85,"props":560,"children":561},{"style":549},[562],{"type":52,"value":563},")",{"type":46,"tag":85,"props":565,"children":566},{"style":441},[567],{"type":52,"value":480},{"type":46,"tag":85,"props":569,"children":571},{"class":87,"line":570},6,[572,577,582,587,592,597,602,606,610,615,620,625,630,635,639,643,648,652],{"type":46,"tag":85,"props":573,"children":574},{"style":435},[575],{"type":52,"value":576},"  return",{"type":46,"tag":85,"props":578,"children":579},{"style":441},[580],{"type":52,"value":581}," \u003C",{"type":46,"tag":85,"props":583,"children":584},{"style":549},[585],{"type":52,"value":586},"button",{"type":46,"tag":85,"props":588,"children":589},{"style":505},[590],{"type":52,"value":591}," onClick",{"type":46,"tag":85,"props":593,"children":594},{"style":441},[595],{"type":52,"value":596},"={()",{"type":46,"tag":85,"props":598,"children":599},{"style":505},[600],{"type":52,"value":601}," =>",{"type":46,"tag":85,"props":603,"children":604},{"style":447},[605],{"type":52,"value":537},{"type":46,"tag":85,"props":607,"children":608},{"style":441},[609],{"type":52,"value":267},{"type":46,"tag":85,"props":611,"children":612},{"style":447},[613],{"type":52,"value":614},"value",{"type":46,"tag":85,"props":616,"children":617},{"style":441},[618],{"type":52,"value":619},"++}>",{"type":46,"tag":85,"props":621,"children":622},{"style":447},[623],{"type":52,"value":624},"Count: ",{"type":46,"tag":85,"props":626,"children":627},{"style":441},[628],{"type":52,"value":629},"{",{"type":46,"tag":85,"props":631,"children":632},{"style":447},[633],{"type":52,"value":634},"count",{"type":46,"tag":85,"props":636,"children":637},{"style":441},[638],{"type":52,"value":267},{"type":46,"tag":85,"props":640,"children":641},{"style":447},[642],{"type":52,"value":614},{"type":46,"tag":85,"props":644,"children":645},{"style":441},[646],{"type":52,"value":647},"}\u003C\u002F",{"type":46,"tag":85,"props":649,"children":650},{"style":549},[651],{"type":52,"value":586},{"type":46,"tag":85,"props":653,"children":654},{"style":441},[655],{"type":52,"value":656},">;\n",{"type":46,"tag":85,"props":658,"children":660},{"class":87,"line":659},7,[661],{"type":46,"tag":85,"props":662,"children":663},{"style":441},[664],{"type":52,"value":665},"}\n",{"type":46,"tag":55,"props":667,"children":668},{},[669],{"type":52,"value":670},"Three rules carry most of the weight:",{"type":46,"tag":672,"props":673,"children":674},"ol",{},[675,686,691],{"type":46,"tag":234,"props":676,"children":677},{},[678,680,685],{"type":52,"value":679},"Islands ship JavaScript — keep them small, leave everything else in\n",{"type":46,"tag":81,"props":681,"children":683},{"className":682},[],[684],{"type":52,"value":410},{"type":52,"value":267},{"type":46,"tag":234,"props":687,"children":688},{},[689],{"type":52,"value":690},"Island props must be serializable. Functions cannot be passed.",{"type":46,"tag":234,"props":692,"children":693},{},[694,696,702],{"type":52,"value":695},"Handlers take a single ",{"type":46,"tag":81,"props":697,"children":699},{"className":698},[],[700],{"type":52,"value":701},"(ctx)",{"type":52,"value":703}," parameter.",{"type":46,"tag":55,"props":705,"children":706},{},[707,709,715,717,723],{"type":52,"value":708},"Load ",{"type":46,"tag":81,"props":710,"children":712},{"className":711},[],[713],{"type":52,"value":714},"references\u002FFRESH.md",{"type":52,"value":716}," for routes, handlers, ",{"type":46,"tag":81,"props":718,"children":720},{"className":719},[],[721],{"type":52,"value":722},"define",{"type":52,"value":724}," helpers, middleware,\nislands, signals, and Tailwind.",{"type":46,"tag":55,"props":726,"children":727},{},[728,730,735,737,743,745,751,753,759],{"type":52,"value":729},"Use ",{"type":46,"tag":217,"props":731,"children":732},{},[733],{"type":52,"value":734},"Fresh 2.x",{"type":52,"value":736},", imported from ",{"type":46,"tag":81,"props":738,"children":740},{"className":739},[],[741],{"type":52,"value":742},"\"fresh\"",{"type":52,"value":744},". For an existing 1.x project, or one\npinned to a ",{"type":46,"tag":81,"props":746,"children":748},{"className":747},[],[749],{"type":52,"value":750},"2.0.0-alpha.*",{"type":52,"value":752}," release, see ",{"type":46,"tag":81,"props":754,"children":756},{"className":755},[],[757],{"type":52,"value":758},"references\u002FFRESH_MIGRATION.md",{"type":52,"value":267},{"type":46,"tag":61,"props":761,"children":763},{"id":762},"further-reading",[764],{"type":52,"value":765},"Further reading",{"type":46,"tag":230,"props":767,"children":768},{},[769,782,792],{"type":46,"tag":234,"props":770,"children":771},{},[772,780],{"type":46,"tag":773,"props":774,"children":778},"a",{"href":775,"rel":776},"https:\u002F\u002Ffresh.deno.dev\u002Fdocs",[777],"nofollow",[779],{"type":52,"value":775},{"type":52,"value":781}," — Fresh documentation",{"type":46,"tag":234,"props":783,"children":784},{},[785,790],{"type":46,"tag":81,"props":786,"children":788},{"className":787},[],[789],{"type":52,"value":714},{"type":52,"value":791}," — Fresh 2.x patterns in depth",{"type":46,"tag":234,"props":793,"children":794},{},[795,800],{"type":46,"tag":81,"props":796,"children":798},{"className":797},[],[799],{"type":52,"value":758},{"type":52,"value":801}," — Fresh 1.x and alpha migration",{"type":46,"tag":803,"props":804,"children":805},"style",{},[806],{"type":52,"value":807},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":809,"total":526},[810,826,839,847,861],{"slug":8,"name":8,"fn":811,"description":812,"org":813,"tags":814,"stars":27,"repoUrl":28,"updatedAt":825},"build and manage Deno applications","Use when writing, running, configuring, reviewing, or debugging code in a Deno project, or when scaffolding a new one. Covers dependency management with deno install and deno add, package.json and node_modules support, npm and JSR packages, permissions, where configuration belongs across package.json, tsconfig.json and deno.json, workspaces, the built-in toolchain (fmt, lint, test, check, bench, compile), and publishing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[815,818,819,822],{"name":816,"slug":817,"type":14},"CLI","cli",{"name":9,"slug":8,"type":14},{"name":820,"slug":821,"type":14},"JavaScript","javascript",{"name":823,"slug":824,"type":14},"TypeScript","typescript","2026-07-31T06:23:32.095122",{"slug":278,"name":278,"fn":827,"description":828,"org":829,"tags":830,"stars":27,"repoUrl":28,"updatedAt":838},"deploy apps to Deno Deploy","Use when deploying Deno apps to production, asking about Deno Deploy, or working with `deno deploy` CLI commands. Covers deployment workflows, environment variables, KV database access, custom domains, the --tunnel flag for local development, and the `deno deploy` command reference.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[831,832,835],{"name":9,"slug":8,"type":14},{"name":833,"slug":834,"type":14},"Deployment","deployment",{"name":836,"slug":837,"type":14},"Serverless","serverless","2026-07-31T05:52:43.564231",{"slug":4,"name":4,"fn":5,"description":6,"org":840,"tags":841,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[842,843,844,845,846],{"name":9,"slug":8,"type":14},{"name":25,"slug":26,"type":14},{"name":22,"slug":23,"type":14},{"name":19,"slug":20,"type":14},{"name":16,"slug":17,"type":14},{"slug":848,"name":848,"fn":849,"description":850,"org":851,"tags":852,"stars":27,"repoUrl":28,"updatedAt":860},"deno-sandbox","sandbox untrusted code with Deno","Use when building features that execute untrusted user code, AI-generated code, or need isolated code execution environments. Covers the @deno\u002Fsandbox SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[853,856,857],{"name":854,"slug":855,"type":14},"Code Execution","code-execution",{"name":9,"slug":8,"type":14},{"name":858,"slug":859,"type":14},"Sandboxing","sandboxing","2026-07-31T05:52:42.5755",{"slug":862,"name":862,"fn":863,"description":864,"org":865,"tags":866,"stars":27,"repoUrl":28,"updatedAt":876},"migrate-to-deno","migrate Node.js projects to Deno","Use when moving a Node.js, npm, Yarn, pnpm, or Bun project to Deno, or when adopting Deno incrementally in an existing JavaScript or TypeScript codebase. Covers using Deno as a drop-in package manager, running existing package.json scripts, CommonJS versus ESM, node_modules layout, lockfile migration, permissions, whether to adopt the built-in toolchain, and per-tool command equivalents.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[867,868,869,872,875],{"name":9,"slug":8,"type":14},{"name":820,"slug":821,"type":14},{"name":870,"slug":871,"type":14},"Migration","migration",{"name":873,"slug":874,"type":14},"Node.js","node-js",{"name":823,"slug":824,"type":14},"2026-07-31T06:23:32.78688",{"items":878,"total":526},[879,886,892,900,906],{"slug":8,"name":8,"fn":811,"description":812,"org":880,"tags":881,"stars":27,"repoUrl":28,"updatedAt":825},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[882,883,884,885],{"name":816,"slug":817,"type":14},{"name":9,"slug":8,"type":14},{"name":820,"slug":821,"type":14},{"name":823,"slug":824,"type":14},{"slug":278,"name":278,"fn":827,"description":828,"org":887,"tags":888,"stars":27,"repoUrl":28,"updatedAt":838},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[889,890,891],{"name":9,"slug":8,"type":14},{"name":833,"slug":834,"type":14},{"name":836,"slug":837,"type":14},{"slug":4,"name":4,"fn":5,"description":6,"org":893,"tags":894,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[895,896,897,898,899],{"name":9,"slug":8,"type":14},{"name":25,"slug":26,"type":14},{"name":22,"slug":23,"type":14},{"name":19,"slug":20,"type":14},{"name":16,"slug":17,"type":14},{"slug":848,"name":848,"fn":849,"description":850,"org":901,"tags":902,"stars":27,"repoUrl":28,"updatedAt":860},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[903,904,905],{"name":854,"slug":855,"type":14},{"name":9,"slug":8,"type":14},{"name":858,"slug":859,"type":14},{"slug":862,"name":862,"fn":863,"description":864,"org":907,"tags":908,"stars":27,"repoUrl":28,"updatedAt":876},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[909,910,911,912,913],{"name":9,"slug":8,"type":14},{"name":820,"slug":821,"type":14},{"name":870,"slug":871,"type":14},{"name":873,"slug":874,"type":14},{"name":823,"slug":824,"type":14}]