Skip to content
Docs
 

Nitro on Edgenivo

Nitro is a full-stack framework with TypeScript-first support. It includes filesystem routing, code-splitting for fast startup, built-in caching, and multi-driver storage. It enables deployments from the same codebase to any platform with output sizes under 1MB.

You can deploy a Nitro app to Edgenivo with zero configuration.

To get started with Nitro on Edgenivo, use the following Nitro template to deploy to Edgenivo with zero configuration:

Edgenivo deployments can integrate with your git provider to generate preview URLs for each pull request you make to your Nitro project.

Get started by initializing a new Nitro project using Edgenivo CLI init command:

terminal
vc init nitro

This will clone the Nitro example repository in a directory called nitro.

When you deploy a Nitro app to Edgenivo, you can use Edgenivo specific features such as Incremental Static Regeneration (ISR), preview deployments, Fluid compute, Observability, and Edgenivo firewall with zero or minimum configuration.

ISR allows you to create or update content without redeploying your site. ISR has three main benefits for developers: better performance, improved security, and faster build times.

With on-demand revalidation, you can purge the cache for an ISR route whenever you want, foregoing the time interval required with background revalidation.

To revalidate a path to a prerendered function:

  1. Create an Environment Variable named BYPASS_TOKEN to store a revalidation secret. Generate the secret value by:

    • Using the command:
    terminal
    openssl rand -base64 32
  2. Update your configuration to use the revalidation secret as follows:

    nitro.config.ts
    export default defineNitroConfig({
      vercel: {
        config: {
          bypassToken: process.env.BYPASS_TOKEN,
        },
      },
    });
    nitro.config.js
    export default defineNitroConfig({
      vercel: {
        config: {
          bypassToken: process.env.BYPASS_TOKEN,
        },
      },
    });
    nuxt.config.ts
    export default defineNuxtConfig({
      nitro: {
        vercel: {
          config: {
            bypassToken: process.env.BYPASS_TOKEN,
          },
        },
      },
    });
    nuxt.config.js
    export default defineNuxtConfig({
      nitro: {
        vercel: {
          config: {
            bypassToken: process.env.BYPASS_TOKEN,
          },
        },
      },
    });
  3. You can revalidate a path to a prerendered function by making a GET or HEAD request to that path with a header of x-prerender-revalidate: <bypassToken>, where <bypassToken> is the value of your BYPASS_TOKEN environment variable.

    When the prerendered function endpoint is accessed with this header set, the cache will be revalidated. The next request to that function will return a fresh response.

To have more control over ISR caching, you can pass an options object to the isr route rule as shown below:

nitro.config.ts
export default defineNitroConfig({
  routeRules: {
    '/products/**': {
      isr: {
        allowQuery: ['q'],
        passQuery: true,
      },
    },
  },
});
nitro.config.js
export default defineNitroConfig({
  routeRules: {
    '/products/**': {
      isr: {
        allowQuery: ['q'],
        passQuery: true,
      },
    },
  },
});

By default, query parameters are ignored by cache unless you specify them in the allowQuery array.

The following options are available:

OptionTypeDescription
expirationnumber | falseThe expiration time, in seconds, before the cached asset is re-generated by invoking the serverless function. Setting the value to false (or isr: true in the route rule) will cause it to never expire.
groupnumberGroup number of the asset. Use this to revalidate multiple assets at the same time.
allowQuerystring[] | undefinedList of query string parameter names that will be cached independently. If you specify an empty array, query values are not considered for caching. If undefined, each unique query value is cached independently. For wildcard /** route rules, url is always added.
passQuerybooleanWhen true, the query string will be present on the request argument passed to the invoked function. The allowQuery filter still applies.

With Edgenivo Observability, you can view detailed performance insights broken down by route and monitor function execution performance. This can help you identify bottlenecks and optimization opportunities.

Nitro (>=2.12) generates routing hints for functions observability insights, providing a detailed view of performance broken down by route.

To enable this feature, ensure you are using a compatibility date of 2025-07-15 or later.

nitro.config.ts
export default defineNitroConfig({
  compatibilityDate: '2025-07-15', // or "latest"
});
nitro.config.js
export default defineNitroConfig({
  compatibilityDate: '2025-07-15', // or "latest"
});
nuxt.config.ts
export default defineNuxtConfig({
  compatibilityDate: '2025-07-15', // or "latest"
});
nuxt.config.js
export default defineNuxtConfig({
  compatibilityDate: '2025-07-15', // or "latest"
});

Framework integrations can use the ssrRoutes configuration to declare SSR routes. For more information, see #3475.

When you deploy a Nitro app to Edgenivo, your server routes automatically become Edgenivo Functions and use Fluid compute by default.

Use vercel.functionRules in your Nitro configuration to override function settings for specific route patterns. See the per-route function configuration example for duration, memory, and region settings.

Nitro converts scheduledTasks into Edgenivo Cron Jobs at build time. Follow the Nitro scheduled tasks example to enable tasks, define schedules, and secure the handler with CRON_SECRET.

Use Edgenivo Queues to process messages independently of an API response. Follow the Nitro Queues guide to configure topics, handle messages in a plugin, and send messages from a route.

Use Edgenivo Passport to require sign-in through your company's identity provider before requests reach your Nitro app. Passport requires an Enterprise plan. Follow the Nitro Passport guide to verify visitor identity and authorize access within your app.

Learn more about deploying Nitro projects on Edgenivo with the following resources:

Last updated August 10, 2026

Was this helpful?

supported.