OpenNext

Open source Next.js serverless adapter
GitHub
3.97k
Created 2 years ago, last commit 3 days ago
56 contributors
452 commits
Stars added on GitHub, month by month
10
11
12
1
2
3
4
5
6
7
8
9
2023
2024
Stars added on GitHub, per day, on average
Yesterday
+4
Last week
+9.4
/day
Last month
+4.6
/day
Last 12 months
+3.8
/day
README

OpenNext

Discord npm


Docs | Example

OpenNext takes the Next.js build output and converts it into a package that can be deployed to any functions as a service platform.

Features

OpenNext aims to support all Next.js 14 features. Some features are work in progress. Please open a new issue to let us know!

  • App & Pages Router
  • API routes
  • Dynamic routes
  • Static site generation (SSG)
  • Server-side rendering (SSR)
  • Incremental static regeneration (ISR)
  • Middleware
  • Image optimization
  • NextAuth.js
  • Running at edge
  • No cold start

Who is using OpenNext?

Gymshark UK, Udacity, TUDN, NHS England

Example

In the example folder, you can find a Next.js benchmark app. It contains a variety of pages that each test a single Next.js feature. The app is deployed to both Vercel and AWS using SST.

AWS link: https://d1gwt3w78t4dm3.cloudfront.net

Vercel link: https://open-next.vercel.app

Configuration

Environment variables

  • AWS_SDK_DYNAMODB_MAX_ATTEMPTS: The maximum number of times requests that encounter retryable failures should be attempted for DynamoDB. Defaults to 3.
  • AWS_SDK_S3_MAX_ATTEMPTS: The maximum number of times requests that encounter retryable failures should be attempted for S3. Defaults to 3.
  • DYNAMO_BATCH_WRITE_COMMAND_CONCURRENCY: The number of concurrent batch write commands to DynamoDB. Defaults to 4 in an effort to leave plenty of DynamoDB write request capacity for the production load.

Contribute

To run OpenNext locally:

  1. Clone this repository.
  2. Build open-next:
    cd open-next
    pnpm build
  3. Run open-next in watch mode:
    pnpm dev
  4. Now, you can make changes in open-next and build your Next.js app to test the changes.
    cd path/to/my/nextjs/app
    path/to/open-next/packages/open-next/dist/index.js build

Acknowledgements

We are grateful for the projects that inspired OpenNext and the amazing tools and libraries developed by the community:

Special shoutout to @khuezy and @conico974 for their outstanding contributions to the project.


Maintained by SST. Join our community: Discord | YouTube | Twitter