Azion and Next.js compatibility

Compatibility between different versions of Next.js and Azion Web Platform.


OpenNext

The @aziontech/opennextjs-azion adapter lets you deploy Next.js apps to Azion Functions using the Node.js โ€œruntimeโ€ from Next.js.

Get Started

New apps

To create a new Next.js app, pre-configured to run on Azion using @aziontech/opennextjs-azion, run:

Terminal window
npx create-next-app@14.2.4 my-next-app --use-npm && cd my-next-app && npm install @aziontech/opennextjs-azion@latest
Existing Next.js apps

Follow the guide here to use @aziontech/opennextjs-azion with an existing Next.js app.

Supported Next.js versions

All minor and patch versions of Next.js 15 and the latest minor of Next.js 14 are supported.

To help improve compatibility, we encourage you to report bugs and contribute code!

Supported Next.js features

FeatureSupportComments
App Router๐ŸŸข
Route Handlers๐ŸŸข
Dynamic routes๐ŸŸข
Static Site Generation (SSG)๐ŸŸข
Server-Side Rendering (SSR)๐ŸŸข
Middleware๐ŸŸข
Node Middleware๐ŸŸกintroduced in 15.2 are not yet supported
Image Optimization๐Ÿ”ด
Partial Prerendering (PPR)๐ŸŸข
Pages Router๐ŸŸข
Incremental Static Regeneration (ISR)๐ŸŸข
Support for after๐ŸŸข
Composable Caching๐Ÿ”ด(โ€˜use cacheโ€™)

Examples

To create a new Next.js app for Azion, you can use the following starter projects and templates:

Basic starter projects

You can use these repositories to understand how to configure your Next.js app to run on Azion, or as a starting point for your own projects.

Known issues

TS Config

  • Your tsconfig.json must include the following setting:
"moduleResolution": "bundler"

If this is not set, you may encounter issues during the build or runtime process.

  • There is a known issue with ESM and the open-next.config.ts file. If you have an older project or one that depends on a specific TypeScript version or custom configuration, you may need to:
    • Reconfigure your project (for example, by setting moduleResolution: bundler as above), or
    • Add the following to your tsconfig.json:
"exclude": ["node_modules", "open-next.config.ts"]

Whether this works depends on your project setup. In some cases, excluding open-next.config.ts allows the build to proceed, but you may still encounter errors, especially if your project uses features like _app.mdx or other advanced configurations. This is particularly relevant for projects that havenโ€™t been tested with these setups, and issues may also occur in other environments (such as the Cloudflare package).

Local Development

  • Some applications may use Node.js or Web Standard APIs that are not fully supported by Azionโ€™s local development environment. However, these features might be available in the actual Azion runtime.

Next.js 14.x.y

FeatureSupportComments
Static Pages๐ŸŸข
SSG๐ŸŸข

Azion Runtime

Versions: 12.2.x, 12.3.x

Pages Router SupportSupportComments
Static Pages๐ŸŸข
SSR๐ŸŸข
SSG๐ŸŸข
API Routes๐ŸŸข
Dynamic Routes๐ŸŸข
Middleware๐ŸŸกFeatures: rewrite, redirect, continue to response, set request header, throw error, set response header, and set response cookie
Next configs๐ŸŸกFeatures: rewrite before files, rewrite after files, rewrite fallback, redirects, and header definition
i18n routing๐ŸŸข

Versions: 13.0.x, 13.1.x, 13.2.x, 13.3.x, 13.4.x, 13.5.x

Pages Router SupportSupportComments
Static Pages๐ŸŸข
SSR๐ŸŸข
SSG๐ŸŸข
API Routes๐ŸŸข
Dynamic Routes๐ŸŸข
Middleware๐ŸŸกFeatures: rewrite, redirect, continue to response, set request header, throw error, return response, set response header, and set response cookie
Next configs๐ŸŸกFeatures: rewrite before files, rewrite after files, rewrite fallback, redirects, and header definition
i18n routing๐ŸŸข
Custom errors๐ŸŸข

App Router SupportSupportComments
App router๐ŸŸขBasic structure, routing, and layouts
Server Components๐ŸŸข
Route Handlers๐ŸŸข
Dynamic Routes๐ŸŸข
Middleware๐ŸŸกFeatures: rewrite, redirect, continue to response, set request header, throw error, set response header, and set response cookie
Next configs๐ŸŸกFeatures: rewrite before files, rewrite after files, rewrite fallback, redirects, and header definition
i18n routing๐ŸŸข
Custom errors๐ŸŸข

Node Runtime

Versions: 12.3.x

Pages Router SupportSupportComments
Static Pages๐ŸŸข
SSR๐ŸŸข
SSG๐ŸŸข
API Routes๐ŸŸข
Dynamic Routes๐ŸŸข
Next configs๐ŸŸกFeatures: rewrite before files, rewrite after files, rewrite fallback, redirects, and header definition
i18n routing๐ŸŸข
Custom errors๐ŸŸข

About Next.js

Next.js is a flexible React framework that helps you to build fast and modern applications. It can be used to solve some application requirements such as:

  • Routing
  • Data Fetching
  • Integrations

Next.js allows you to use static generation on a per-page basis, through Incremental Static Regeneration (ISR), without having to rebuild the entire application. That means you can enjoy the benefits of static and still be able to scale.

A page, in Next.js, is a React Component inside a file. This file can be in any of the following extensions:

  • .js
  • .jsx
  • .ts
  • .tsx

Every page has an associated route based on its file name.

Example:

Letโ€™s say you create pages/azion.js exporting a React component.

export default function Azion() {
return <div>The easiest way to build, deploy, observe and secure modern applications.</div>
}

The page will be accessible at /azion:

pages/
azion.js

Pre-rendering

Next.js generates HTML for each page in advance, relieving client-side Javascript of this burden. As a consequence, this pre-rendering can help your application have better performance and Search Engine Optimization (SEO).

Pre-rendering forms

  • Static Generation: during build time, the HTML is generated and reused on each request.
  • Server-side Rendering: the HTML is generated on each request.

To dive deeper into the Next.js world, read the Next.js documentation