Next.js 8.0.4 — deterministic builds, smaller runtimes, MDX, default viewport
Key Points
- Deterministic builds for faster rebuilds
- Smaller client and serverless runtimes
- Default viewport plus new @next/mdx plugin
Summary
Next.js 8.0.4 delivers build and runtime size improvements, deterministic builds for better cacheability, smaller serverless functions, a default viewport meta tag, and built-in MDX support. To upgrade: npm i next@latest react@latest react-dom@latest.
Key Points
- Deterministic builds: build output is stable when source files are unchanged, enabling more effective caching (faster rebuilds and minify cache hits). CircleCI CPU detection was improved for faster CI builds.
- Smaller runtime & payloads: ~5.58KB less client JS;
withRouterno longer depends onhoist-non-react-statics(≈3KB savings); X-Powered-By header removed; serverless functions reduced by ~44KB (≈5.44KB gzipped) — faster cold starts. - Babel/build changes: the
nextimport-rewrite optimization was moved fromnext/babelinto the Next.js build to avoid interfering with user babel setups. - Default viewport: when an app has no viewport meta tag, Next.js injects:
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">. Override vianext/head.
Example override (pages/index.js):
import Head from 'next/head';
function HomePage() {
return (
<>
<Head>
<meta name="viewport" content="width=device-width,minimum-scale=0.5,initial-scale=1" />
</Head>
</>
);
}
export default HomePage;
- MDX plugin:
@zeit/next-mdxmoved into the Next.js repo as@next/mdx.
Install and enable MDX:
npm i @next/mdx @mdx-js/loader
const withMDX = require('@next/mdx')();
module.exports = withMDX();
Actionable checklist for engineers
- Run
npm i next@latest react@latest react-dom@latestand run a production build to observe improved caching and smaller outputs. - If you enabled
poweredByHeaderinnext.config.js, remove it (header removed by default). - Verify serverless bundle sizes and cold-start times after upgrade.
- If you relied on the previous
next/babelimport rewrite in tests or tooling, update to rely on the build-time behavior instead. - Use
@next/mdxfor MDX support; override the default viewport usingnext/headif needed.