In addition, we are excited to share some of the goals we are currently working on towards the release of Next.js 5!
Next.js is designed to present the developer the smallest possible API surface on top of React to make app and website development productive.
Therefore, instead of writing new features or expanding that API, we are focusing on scalability.
We have therefore divided the Next.js 5 roadmap into two broad categories:
- Making Next.js perform better with large codebases (single repository)
- Making Next.js work better for larger teams (across multiple repositories)
Improved Compilation Speed
- Better startup performance (first time you run
- Better lazy page building performance
- Accurate sourcemaps for all categories of errors
- Support for external sourcemaps
Multiple Next.js apps on the same domain
- Ability to designate a prefix to mount an app on
- Interoperability for
<Link> across app realms
Simpler sharing of components on npm
- No need to transpile before publishing
- Easier importing of Next.js components from the registry
The first two items will make you more productive in the local scope of a project. Larger codebases stand to see the most benefits (complex component hierarchies).
The last two will make Next.js more productive across your entire organization, by allowing you to split more and share. Larger companies with many teams will see many workflow improvements.
Finally, we're adding some highly requested examples (like user authentication), improved documentation for Next.js internals and smaller features and bugfixes.
All ongoing development will be based out of the new canary
branch on Github.
This branch will be released much more often than the master branch. This will ensure that canary is always latest and master is always stable.
The best part? As soon as a git tag is made, a release is automatically published
using Travis CI
We have added a new distrubtion tag named "canary" in our npm package
. To install Next.js canary, you simply run one command:
npm install --save next@canary react react-dom
Obviously, there's a caveat: Some of the changes we introduce will be experimental
. If you encounter issues, let us know
or just switch back to the stable channel!
That said, a priority of our team is to make canary releases that are drop-in, backwards compatible and as stable as possible.
I'm happy to share that the first canary release is already available! 4.2.0-canary.1
brings substantial improvements and brings us closer to some of the goals stated above.
- Combine source maps: #3178
- Expose mechanism to monitor render events: #2655
- Support de-deduping head tags by setting key: #3170
- Use fs.realpath to get actual project directory: #3243
- Allow overriding Content-Type: #3242
- Make pages glob pattern overridable: #3195
- Use uglify-es for minification: #3150
- Make sure NODE_ENV is production for react-dom to optimize: 152c2c2
- Add note about NODE_ENV being set automatically: 72827d2
- Output webpack build stats as webpack-stats.json: #2828
- Upgrade styled-jsx to version 2.1.2: #3231
- Messages are availble within initialProps: #3252
- Set Cache-Control max-age to a year: #3247
- Document router events the way they are used: #3268
- Update withData.js - support withRouter HOC: #3286
- With-apollo example using Apollo 2: #3180
- Change _error.js example to use err prop: #3197
- Create example of activeClassLink using withRouter: #3188
- Added Sentry example: #3215
- Dropped isomorphic-fetch in examples in favor of isomorphic-unfetch: #3230
- Only-client-render-external-dependencies example: #3229
- Add kea example: #3262
- Example with-redux-observable: #3272
- Update the custom-server-express with an req.params example: #3258
- Update README.md for with-shallow-routing example: #3285
If you are looking to start contributing to Next.js, we have recently introduced a good first issue label
. These are small –yet very impactful– issues that are ideal for beginners to our codebase.
If you have any questions or want some guidance on how to get started, feel free to join our public chat
and ask around!