Nitro

Nitro v3 ships with a built-in Zephyr deploy target, so a standalone Nitro app does not need a separate Zephyr adapter package. Set the preset, build, and Nitro will prepare the output Zephyr expects.

For Nitro’s upstream deploy guide, see Deploy to Zephyr.

Availability

Nitro SSR deployments on Zephyr currently work only on Zephyr’s default (managed) Cloudflare integration.

If you need Nitro support on another integration or deployment target, send us a DM on Discord.

Prerequisites

Configure Nitro

Set Nitro to use the built-in Zephyr preset:

import { defineNitroConfig } from 'nitro/config';

export default defineNitroConfig({
  compatibilityDate: '2026-03-16',
  preset: 'zephyr',
});
Compatibility date

Nitro v3 expects a compatibilityDate. Keep it current and align it with your Nitro version and rollout window.

Build

Run your production build:

npx nitro build

If your app already exposes a build script, use that instead:

npm run build

On the first run, you’ll be prompted to authenticate:

Info

The first time you initiate a build with Zephyr, it will prompt you to log in by directing you to the Zephyr website. This login is required only on your first build; subsequent builds will not require a login.

We may require you to log in again if you removed your Zephyr configuration file ~/.zephyr locally.

What Zephyr gets

With the zephyr preset enabled, Nitro handles the Zephyr-specific deploy output for you.

  • No extra Zephyr adapter package in the Nitro app
  • Nitro owns the runtime-specific output
  • Your Zephyr deployment flow stays in the normal Nitro build step

Next step

If you are using Nuxt, use the dedicated Nuxt guide instead of configuring Nitro by hand.