3 min read
On the heels of the announcements of canary releases for Hyper, Now CLI, and Now Desktop, we are glad to announce the immediate availability of a canary channel for Next.js.
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 5: Bigger Scale
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)
The Roadmap
Improved Compilation Speed
Better startup performance (first time you run
next
)Better lazy page building performance
Improved Sourcemaps
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.
Working on the Cutting Edge
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 to npm using Travis CI.
How to Start Using Canary
We have added a new distribution 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.
Our First Canary Release
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.
Minor Changes
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
Patches
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 available 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
Examples
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
Want to Contribute?
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!