All skills
onmax avatar

/nitro

@de09c7b official
by Maxonmax/nuxt-skills715 stars
38

Nitro is the framework-agnostic server toolkit (powering Nuxt) for building and deploying web servers anywhere. Use when working with nitro.config, server routes/event handlers, route rules, caching, storage, tasks, websockets, or deploying to Node/Bun/Deno/Cloudflare/Vercel.

Use this Skill: https://skilld.dev/gh/onmax/nuxt-skills/nitro

This session only. Nothing lands on disk.

referencesadvanced-migration.md

≈1.6k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Migration: Nitro v2 → v3

Nitro v3 has intentional breaking changes. This is the highest-value reference for agents whose training data assumes nitropack v2 / H3 v1 patterns.

Package & imports

The nitropack package is renamed to nitro.

- import { defineNitroConfig } from "nitropack/config"
+ import { defineConfig } from "nitro"

Runtime utils moved to dedicated nitro/* subpaths:

Capability v3 import
Handlers, config, plugins, errors nitro (defineHandler, defineConfig, definePlugin, HTTPError, defineWebSocketHandler, defineRouteMeta)
Storage nitro/storage (useStorage)
Cache nitro/cache (defineCachedHandler, defineCachedFunction)
Runtime config nitro/runtime-config (useRuntimeConfig)
Database nitro/database (useDatabase)
Tasks nitro/task (runTask)
H3 utilities nitro/h3
Types nitro/types
Vite plugin nitro/vite

Removed: nitropack/kit, nitropack/presets, nitropack/core (use nitro/builder). Use NitroModule from nitro/types instead of defineNitroModule.

Other renames:

  • defineNitroPlugin → definePlugin
  • defineNitroConfig → defineConfig
  • Node.js minimum is now 20.
  • App config (app.config.ts + useAppConfig()) was removed — import a regular .ts module instead.

H3 v2 API

H3 v2 is built on web standards (URL, Headers, Request, Response). All H3 utils import from nitro/h3.

Return / throw, don't send

- import { send, sendRedirect, sendStream } from "nitro/h3"
- send(event, value); sendStream(event, stream); sendRedirect(event, loc, code)
+ import { redirect } from "nitro/h3"
+ return value
+ return stream
+ return redirect(event, loc, code)

Also: sendError → throw createError/HTTPError; sendNoContent → return noContent(event); sendProxy → return proxy(event, target).

Event shape

event.web → event.req (a web Request). event.node.{req,res} only exists on Node.

- const body = await readBody(event)
+ const body = await event.req.json()   // or .text() / .formData(); event.req.body for the stream

Headers (always plain strings)

- getHeader(event, "x-foo"); setHeader(event, "x-foo", "bar"); getResponseStatus(event)
+ event.req.headers.get("x-foo")
+ event.res.headers.set("x-foo", "bar")
+ event.res.status

Handlers & errors

- import { eventHandler, defineEventHandler, createError } from "nitro/h3"
+ import { defineHandler, HTTPError } from "nitro"
+ throw new HTTPError({ status: 404, message: "Not found" })
+ HTTPError.isError(error)

lazyEventHandler → defineLazyEventHandler; useBase → withBase. Node utils: defineNodeListener/toNodeListener/fromNodeMiddleware → defineNodeHandler/toNodeHandler/fromNodeHandler.

defineEventHandler/createError still work in many places (re-exported), but prefer the v3 names: defineHandler and HTTPError.

Cloudflare bindings

- const binding = event.context.cloudflare.env.MY_BINDING
+ const { env } = event.req.runtime.cloudflare
+ const binding = env.MY_BINDING

Preset renames

v2 v3
node node_middleware (export is now middleware)
cloudflare, cloudflare_worker, cloudflare_module_legacy cloudflare_module
deno-server-legacy / deno deno_server (Deno v2) / deno_deploy
netlify-builder netlify or netlify_edge
vercel-edge vercel (Fluid compute)
azure, azure_functions azure_swa
firebase firebase_app_hosting
iis iis_handler
edgio, cli, service_worker removed/discontinued

Hooks

If you accessed useNitroApp().hooks outside a plugin it may be undefined — use useNitroHooks() to guarantee an instance.

Key Points

  • Replace nitropack with nitro and split imports into nitro/* subpaths.
  • Handlers return/throw; use event.req.json() and web Headers (no send*/readBody/getHeader).
  • Use HTTPError instead of createError; definePlugin/defineHandler/defineConfig instead of v2 names.
  • Cloudflare bindings moved to event.req.runtime.cloudflare.env.
  • Many presets were renamed/removed — update preset accordingly.
<!-- Source references: - https://nitro.build/docs/migration - https://h3.dev -->

Source: SKILL.md on GitHub

No alerts9d3 checks · Risk SAFE
  • Gen Agent Trust Hub9d

    The Nitro skill provides comprehensive documentation for building and deploying web servers using the Nitro framework. It covers routing, configuration, storage, caching, database integration, and deployment presets. The skill is informative and describes standard web framework features and best practices.

  • Socket9d

    No alerts

  • Snyk9d

    Risk: LOW · No issues

Signed by skilld at de09c7b. 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.

Activeupdated last week
Other metadata
metadata
{
  "author": "Anthony Fu",
  "version": "2026.6.22",
  "source": "Generated from https://github.com/nitrojs/nitro, scripts located at https://github.com/antfu/skills"
}

README badge

README badge for onmax/nuxt-skills/nitro