vercel/next.js
Packages
The packages/ directory holds 21 npm packages in this pnpm workspace. The flagship is packages/next — what users install when they run npm install next. Everything else is either a peripheral CLI, a peer-dependency-only adapter, or a build/runtime helper.
The package list
graph TD
Next["next<br/>The framework"]:::core
CNA["create-next-app<br/>npx scaffolding CLI"]:::cli
Codemod["next-codemod<br/>Upgrade transforms"]:::cli
SWC["next-swc<br/>Native binaries"]:::compiler
EslintNext["eslint-plugin-next<br/>Lint rules"]:::lint
EslintCfg["eslint-config-next<br/>Preset"]:::lint
EslintInt["eslint-plugin-internal<br/>Internal lints"]:::lint
Font["font<br/>next/font impl"]:::feat
Third["third-parties<br/>3rd-party scripts"]:::feat
Mdx["next-mdx<br/>MDX integration"]:::feat
Bundle["next-bundle-analyzer<br/>+UI"]:::feat
Routing["next-routing<br/>Routing tools"]:::feat
Env["next-env<br/>Env loader"]:::feat
Rspack["next-rspack<br/>rspack adapter"]:::feat
Refresh["react-refresh-utils<br/>HMR utils"]:::runtime
PolyM["next-polyfill-module"]:::runtime
PolyN["next-polyfill-nomodule"]:::runtime
Plugin["next-plugin-storybook"]:::tool
Playwright["next-playwright"]:::tool
classDef core fill:#cce5ff
classDef cli fill:#d4edda
classDef compiler fill:#fff3cd
classDef lint fill:#f8d7da
classDef feat fill:#e2d9f3
classDef runtime fill:#d1ecf1
classDef tool fill:#fefefeIndex of packages
| Package | Page | Role |
|---|---|---|
packages/next |
next | The framework itself |
packages/create-next-app |
create-next-app | npx create-next-app scaffolding CLI |
packages/next-codemod |
next-codemod | Upgrade transforms run by next upgrade |
packages/next-swc |
next-swc | Native binaries (napi-rs and wasm) consumed by next |
packages/eslint-plugin-next |
eslint-plugin-next | Lint rules shipped to users |
packages/font |
font | The next/font implementation |
packages/third-parties |
third-parties | Optimized third-party script integrations |
packages/next-mdx |
next-mdx | @next/mdx MDX integration |
packages/next-rspack |
next-rspack | rspack bundler adapter |
| All others | other-packages | env, polyfills, eslint-config, routing, refresh, plugins |
How packages relate
Most peripheral packages are dev-time helpers that the framework loads dynamically:
packages/font/is invoked when user code importsnext/font/googleornext/font/local.packages/next-swc/is loaded bypackages/next/src/build/swc/and the SWC-driven dev pipeline.packages/next-codemod/is invoked bynext upgrade.packages/eslint-plugin-next/is consumed by user ESLint configs.
A few are standalone CLIs that don't depend on next at runtime:
packages/create-next-app/runs without any local Next.js install.
The whole workspace is published in lockstep — every minor and patch version bumps every package. See release.js and the version script in package.json.
Versioning
All packages share a major/minor version. The latest tag is v16.3.0-canary.5 and stable releases follow the same rhythm. Workspace dependencies use workspace:* so local development picks up local changes without re-publishing.
Adapter package
packages/next exposes an adapter API at packages/next/src/build/adapter/ that hosting platforms (most notably Vercel) implement. The interface lets the platform plug into the build to produce platform-specific output (function bundles, edge bundles, image optimization configs). See the adapter section in the next page.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.