Next.js 无需任何配置即可支持现代浏览器。
- Chrome 64+ - Chrome 浏览器 64+
 - Edge 79+ - 边缘 79+
 - Firefox 67+
 - Opera 51+
 - Safari 12+
 
Browserslist
如果你想要针对特定的浏览器或特性,Next.js 支持在 package.json 文件中使用 Browserslist (opens in a new tab) 配置。Next.js 默认使用以下 Browserslist 配置:
{
  "browserslist": [
    "chrome 64",
    "edge 79",
    "firefox 67",
    "opera 51",
    "safari 12"
  ]
}Polyfills
我们注入了 常用的 polyfills (opens in a new tab),包括:
- fetch() (opens in a new tab) — 代替: 
whatwg-fetch和unfetch. - URL (opens in a new tab) — 代替: the 
urlpackage (Node.js API) (opens in a new tab). - Object.assign() (opens in a new tab) — 替代 : 
object-assign,object.assign和core-js/object/assign。 
如果你的任何依赖项包含这些 polyfill,它们会在生产版本中自动排除,以避免重复。
此外,为了减小包的大小,Next.js 只会为需要它们的浏览器加载这些 polyfill。全球大部分的网络流量都不会下载这些 polyfill。
自定义 Polyfill
如果你自己的代码或任何外部 npm 依赖项需要目标浏览器不支持的功能(如 IE 11),你就需要自己添加 polyfill。
在这种情况下,你应该在自定义<App> 组件或单独的组件中,添加特定 polyfill 的顶层导入语句。
JavaScript 语言特性
Next.js 允许你开箱即用最新的 JavaScript 特性。除了 ES6 特性 (opens in a new tab) 之外,Next.js 还支持:
- Async/await (opens in a new tab) (ES2017)
 - Object Rest/Spread Properties (opens in a new tab) (ES2018)
 - Dynamic 
import()(opens in a new tab) (ES2020) - Optional Chaining (opens in a new tab) (ES2020)
 - Nullish Coalescing (opens in a new tab) (ES2020)
 - Class Fields (opens in a new tab) 和 Static Properties (opens in a new tab) (part of stage 3 proposal)
 - 等
 
服务器端 Polyfills
除了在客户端的 fetch() 之外,Next.js 还在 Node.js 环境中(尚未可用) polyfill 了 fetch()。它使用 undici,与 Node.js 本身使用的实现相同。你可以在服务器代码中(如 getStaticProps/getServerSideProps)使用 fetch(),而无需使用像 isomorphic-unfetch 和 node-fetch 这样的 polyfill。
TypeScript 特性
Next.js 内置了 TypeScript 支持。 了解更多。
自定义 Babel 配置(高级)
你可以自定义 babel 配置。 了解更多。