next CLI
The Next.js CLI allows you to develop, build, start your application, and more.
Basic usage:
npx next [command] [options]Reference
The following options are available:
| Options | Description |
|---|---|
-h or --help | Shows all available options |
-v or --version | Outputs the Next.js version number |
Commands
The following commands are available:
| Command | Description |
|---|---|
dev | Starts Next.js in development mode with Hot Module Reloading, error reporting, and more. |
build | Creates an optimized production build of your application. Displaying information about each route. |
start | Starts Next.js in production mode. The application should be compiled with next build first. |
info | Prints relevant details about the current system which can be used to report Next.js bugs. |
lint | Runs ESLint for all files in the /src, /app, /pages, /components, and /lib directories. It also provides a guided setup to install any required dependencies if ESLint it is not already configured in your application. |
telemetry | Allows you to enable or disable Next.js' completely anonymous telemetry collection. |
typegen | Generates TypeScript definitions for routes, pages, layouts, and route handlers without running a full build. |
Good to know: Running
nextwithout a command is an alias fornext dev.
next dev options
next dev starts the application in development mode with Hot Module Reloading (HMR), error reporting, and more. The following options are available when running next dev:
| Option | Description |
|---|---|
-h, --help | Show all available options. |
[directory] | A directory in which to build the application. If not provided, current directory is used. |
--turbopack | Starts development mode using Turbopack. Also available as --turbo. |
-p or --port <port> | Specify a port number on which to start the application. Default: 3000, env: PORT |
-Hor --hostname <hostname> | Specify a hostname on which to start the application. Useful for making the application available for other devices on the network. Default: 0.0.0.0 |
--experimental-https | Starts the server with HTTPS and generates a self-signed certificate. |
--experimental-https-key <path> | Path to a HTTPS key file. |
--experimental-https-cert <path> | Path to a HTTPS certificate file. |
--experimental-https-ca <path> | Path to a HTTPS certificate authority file. |
--experimental-upload-trace <traceUrl> | Reports a subset of the debugging trace to a remote HTTP URL. |
next build options
next build creates an optimized production build of your application. The output displays information about each route. For example:
Route (app) Size First Load JS
┌ ○ /_not-found 0 B 0 kB
└ ƒ /products/[id] 0 B 0 kB
○ (Static) prerendered as static content
ƒ (Dynamic) server-rendered on demand- Size: The size of assets downloaded when navigating to the page client-side. The size for each route only includes its dependencies.
- First Load JS: The size of assets downloaded when visiting the page from the server. The amount of JS shared by all is shown as a separate metric.
Both of these values are compressed with gzip. The first load is indicated by green, yellow, or red. Aim for green for performant applications.
The following options are available for the next build command:
| Option | Description |
|---|---|
-h, --help | Show all available options. |
[directory] | A directory on which to build the application. If not provided, the current directory will be used. |
--turbopack | Build using Turbopack (beta). Also available as --turbo. |
-d or --debug | Enables a more verbose build output. With this flag enabled additional build output like rewrites, redirects, and headers will be shown. |
--profile | Enables production profiling for React. |
--no-lint | Disables linting. Note: linting will be removed from next build in Next 16. If you're using Next 15.5+ with a linter other than eslint, linting during build will not occur. |
--no-mangling | Disables mangling. This may affect performance and should only be used for debugging purposes. |
--experimental-app-only | Builds only App Router routes. |
--experimental-build-mode [mode] | Uses an experimental build mode. (choices: "compile", "generate", default: "default") |
--debug-prerender | Debug prerender errors in development. |
next start options
next start starts the application in production mode. The application should be compiled with next build first.
The following options are available for the next start command:
| Option | Description |
|---|---|
-h or --help | Show all available options. |
[directory] | A directory on which to start the application. If no directory is provided, the current directory will be used. |
-p or --port <port> | Specify a port number on which to start the application. (default: 3000, env: PORT) |
-H or --hostname <hostname> | Specify a hostname on which to start the application (default: 0.0.0.0). |
--keepAliveTimeout <keepAliveTimeout> | Specify the maximum amount of milliseconds to wait before closing the inactive connections. |
next info options
next info prints relevant details about the current system which can be used to report Next.js bugs when opening a GitHub issue. This information includes Operating System platform/arch/version, Binaries (Node.js, npm, Yarn, pnpm), package versions (next, react, react-dom), and more.
The output should look like this:
Operating System:
Platform: darwin
Arch: arm64
Version: Darwin Kernel Version 23.6.0
Available memory (MB): 65536
Available CPU cores: 10
Binaries:
Node: 20.12.0
npm: 10.5.0
Yarn: 1.22.19
pnpm: 9.6.0
Relevant Packages:
next: 15.0.0-canary.115 // Latest available version is detected (15.0.0-canary.115).
eslint-config-next: 14.2.5
react: 19.0.0-rc
react-dom: 19.0.0
typescript: 5.5.4
Next.js Config:
output: N/AThe following options are available for the next info command:
| Option | Description |
|---|---|
-h or --help | Show all available options |
--verbose | Collects additional information for debugging. |
next lint options
Warning: This option is deprecated and will be removed in Next 16. A codemod is available to migrate to ESLint CLI.
next lint runs ESLint for all files in the pages/, app/, components/, lib/, and src/ directories. It also provides a guided setup to install any required dependencies if ESLint is not already configured in your application.
The following options are available for the next lint command:
| Option | Description |
|---|---|
[directory] | A base directory on which to lint the application. If not provided, the current directory will be used. |
-d, --dir, <dirs...> | Include directory, or directories, to run ESLint. |
--file, <files...> | Include file, or files, to run ESLint. |
--ext, [exts...] | Specify JavaScript file extensions. (default: [".js", ".mjs", ".cjs", ".jsx", ".ts", ".mts", ".cts", ".tsx"]) |
-c, --config, <config> | Uses this configuration file, overriding all other configuration options. |
--resolve-plugins-relative-to, <rprt> | Specify a directory where plugins should be resolved from. |
--strict | Creates a .eslintrc.json file using the Next.js strict configuration. |
--rulesdir, <rulesdir...> | Uses additional rules from this directory(s). |
--fix | Automatically fix linting issues. |
--fix-type <fixType> | Specify the types of fixes to apply (e.g., problem, suggestion, layout). |
--ignore-path <path> | Specify a file to ignore. |
--no-ignore <path> | Disables the --ignore-path option. |
--quiet | Reports errors only. |
--max-warnings [maxWarnings] | Specify the number of warnings before triggering a non-zero exit code. (default: -1) |
-o, --output-file, <outputFile> | Specify a file to write report to. |
-f, --format, <format> | Uses a specific output format. |
--no-inline-config | Prevents comments from changing config or rules. |
--report-unused-disable-directives-severity <level> | Specify severity level for unused eslint-disable directives. (choices: "error", "off", "warn") |
--no-cache | Disables caching. |
--cache-location, <cacheLocation> | Specify a location for cache. |
--cache-strategy, [cacheStrategy] | Specify a strategy to use for detecting changed files in the cache. (default: "metadata") |
--error-on-unmatched-pattern | Reports errors when any file patterns are unmatched. |
-h, --help | Displays this message. |
next telemetry options
Next.js collects completely anonymous telemetry data about general usage. Participation in this anonymous program is optional, and you can opt-out if you prefer not to share information.
The following options are available for the next telemetry command:
| Option | Description |
|---|---|
-h, --help | Show all available options. |
--enable | Enables Next.js' telemetry collection. |
--disable | Disables Next.js' telemetry collection. |
Learn more about Telemetry.
next typegen Options
next typegen generates TypeScript definitions for your application's routes without performing a full build. This is useful for IDE autocomplete and CI type-checking of route usage.
Previously, route types were only generated during next dev or next build, which meant running tsc --noEmit directly wouldn't validate your route types. Now you can generate types independently and validate them externally:
# Generate route types first, then validate with TypeScript
next typegen && tsc --noEmit
# Or in CI workflows for type checking without building
next typegen && npm run type-checkThe following options are available for the next typegen command:
| Option | Description |
|---|---|
-h, --help | Show all available options. |
[directory] | A directory on which to generate types. If not provided, the current directory will be used. |
Output files are written to <distDir>/types (default: .next/types):
next typegen
# or for a specific app
next typegen ./apps/webGood to know:
next typegenloads your Next.js config (next.config.js,next.config.mjs, ornext.config.ts) using the production build phase. Ensure any required environment variables and dependencies are available so the config can load correctly.
Examples
Debugging prerender errors
If you encounter prerendering errors during next build, you can pass the --debug-prerender flag to get more detailed output:
next build --debug-prerenderThis enables several experimental options to make debugging easier:
- Disables server code minification:
experimental.serverMinification = falseexperimental.turbopackMinify = false
- Generates source maps for server bundles:
experimental.serverSourceMaps = true
- Enables source map consumption in child processes used for prerendering:
experimental.enablePrerenderSourceMaps = true
- Continues building even after the first prerender error, so you can see all issues at once:
experimental.prerenderEarlyExit = false
This helps surface more readable stack traces and code frames in the build output.
Warning:
--debug-prerenderis for debugging in development only. Do not deploy builds generated with--debug-prerenderto production, as it may impact performance.
Changing the default port
By default, Next.js uses http://localhost:3000 during development and with next start. The default port can be changed with the -p option, like so:
next dev -p 4000Or using the PORT environment variable:
PORT=4000 next devGood to know:
PORTcannot be set in.envas booting up the HTTP server happens before any other code is initialized.
Using HTTPS during development
For certain use cases like webhooks or authentication, you can use HTTPS to have a secure environment on localhost. Next.js can generate a self-signed certificate with next dev using the --experimental-https flag:
next dev --experimental-httpsWith the generated certificate, the Next.js development server will exist at https://localhost:3000. The default port 3000 is used unless a port is specified with -p, --port, or PORT.
You can also provide a custom certificate and key with --experimental-https-key and --experimental-https-cert. Optionally, you can provide a custom CA certificate with --experimental-https-ca as well.
next dev --experimental-https --experimental-https-key ./certificates/localhost-key.pem --experimental-https-cert ./certificates/localhost.pemnext dev --experimental-https is only intended for development and creates a locally trusted certificate with mkcert. In production, use properly issued certificates from trusted authorities.
Configuring a timeout for downstream proxies
When deploying Next.js behind a downstream proxy (e.g. a load-balancer like AWS ELB/ALB), it's important to configure Next's underlying HTTP server with keep-alive timeouts that are larger than the downstream proxy's timeouts. Otherwise, once a keep-alive timeout is reached for a given TCP connection, Node.js will immediately terminate that connection without notifying the downstream proxy. This results in a proxy error whenever it attempts to reuse a connection that Node.js has already terminated.
To configure the timeout values for the production Next.js server, pass --keepAliveTimeout (in milliseconds) to next start, like so:
next start --keepAliveTimeout 70000Passing Node.js arguments
You can pass any node arguments to next commands. For example:
NODE_OPTIONS='--throw-deprecation' next
NODE_OPTIONS='-r esm' next
NODE_OPTIONS='--inspect' next| Version | Changes |
|---|---|
v15.5.0 | Add the next typegen command |
v15.4.0 | Add --debug-prerender option for next build to help debug prerender errors. |
Was this helpful?