Development branch
All development happens on thecanary branch. Open pull requests against canary, not main. Changes on canary are published to npm under the @canary tag regularly.
Setting up your environment
Start the watch build
Start a background watch process that recompiles Next.js on every file change:This is much faster than a full build during iteration (~1–2 seconds per change vs ~60 seconds for a full build).
Building
You can build the full project (TypeScript + Webpack bundling + type definitions) with:Running tests
Build the project before running tests for the first time:- Development (Turbopack)
- Development (Webpack)
- Production (Turbopack)
- Unit tests
Skip the isolation step with
NEXT_SKIP_ISOLATE=1 for faster iteration, but do not use this flag when verifying module resolution or new package exports — it hides resolution failures that only appear when Next.js is installed as a real npm package.Generating a new test
Use the interactive generator to scaffold a new test suite from a template:Making a pull request
The Next.js or Developer Experience team will review your changes, leave feedback, and merge when the PR is ready.
Contribution areas
Core
Bug fixes, new features, and performance improvements to the framework runtime.
Documentation
Improving docs, fixing typos, and writing new sections.
Examples
Integrations with other tools and services.
Turbopack
The Rust-based bundler. Requires a Rust toolchain.
Good first issues
Look for issues labeledgood first issue on GitHub. These are scoped tasks that are well-suited for new contributors.
