diff --git a/packages/next/build/babel/preset.ts b/packages/next/build/babel/preset.ts
index 6980c11c4b8dd..a244e4e00ae6b 100644
--- a/packages/next/build/babel/preset.ts
+++ b/packages/next/build/babel/preset.ts
@@ -64,9 +64,7 @@ module.exports = (
const supportsESM = api.caller(supportsStaticESM)
const isServer = api.caller((caller: any) => !!caller && caller.isServer)
const isModern = api.caller((caller: any) => !!caller && caller.isModern)
- const isPolyfillsOptimization = api.caller(
- (caller: any) => !!caller && caller.polyfillsOptimization
- )
+
const isLaxModern =
isModern ||
(options['preset-env']?.targets &&
@@ -155,7 +153,7 @@ module.exports = (
!isServer && [
require('@babel/plugin-transform-runtime'),
{
- corejs: isPolyfillsOptimization ? false : 2,
+ corejs: false,
helpers: true,
regenerator: true,
useESModules: supportsESM && presetEnvConfig.modules !== 'commonjs',
diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts
index 5799e871ab3c0..c65cdb2caf031 100644
--- a/packages/next/build/webpack-config.ts
+++ b/packages/next/build/webpack-config.ts
@@ -54,10 +54,7 @@ const escapePathVariables = (value: any) => {
: value
}
-function getOptimizedAliases(
- isServer: boolean,
- polyfillsOptimization: boolean
-): { [pkg: string]: string } {
+function getOptimizedAliases(isServer: boolean): { [pkg: string]: string } {
if (isServer) {
return {}
}
@@ -68,12 +65,6 @@ function getOptimizedAliases(
const shimAssign = path.join(__dirname, 'polyfills', 'object.assign')
return Object.assign(
{},
- // Polyfill: Window#fetch
- polyfillsOptimization
- ? undefined
- : {
- __next_polyfill__fetch: require.resolve('whatwg-fetch'),
- },
{
unfetch$: stubWindowFetch,
'isomorphic-unfetch$': stubWindowFetch,
@@ -84,13 +75,6 @@ function getOptimizedAliases(
'whatwg-fetch.js'
),
},
- polyfillsOptimization
- ? undefined
- : {
- // Polyfill: Object.assign
- __next_polyfill__object_assign: require.resolve('object-assign'),
- '@babel/runtime-corejs2/core-js/object/assign': stubObjectAssign,
- },
{
'object-assign$': stubObjectAssign,
@@ -168,7 +152,6 @@ export default async function getBaseWebpackConfig(
babelPresetPlugins,
hasModern: !!config.experimental.modern,
development: dev,
- polyfillsOptimization: !!config.experimental.polyfillsOptimization,
},
},
// Backwards compat
@@ -215,9 +198,7 @@ export default async function getBaseWebpackConfig(
),
[CLIENT_STATIC_FILES_RUNTIME_POLYFILLS]: path.join(
NEXT_PROJECT_ROOT_DIST_CLIENT,
- config.experimental.polyfillsOptimization
- ? 'polyfills-nomodule.js'
- : 'polyfills.js'
+ 'polyfills.js'
),
} as ClientEntries)
: undefined
@@ -267,17 +248,7 @@ export default async function getBaseWebpackConfig(
next: NEXT_PROJECT_ROOT,
[PAGES_DIR_ALIAS]: pagesDir,
[DOT_NEXT_ALIAS]: distDir,
- ...getOptimizedAliases(
- isServer,
- !!config.experimental.polyfillsOptimization
- ),
-
- // Temporary to allow runtime-corejs2 to be stubbed in experimental polyfillsOptimization
- ...(config.experimental.polyfillsOptimization
- ? {
- '@babel/runtime-corejs2': '@babel/runtime',
- }
- : undefined),
+ ...getOptimizedAliases(isServer),
},
mainFields: isServer ? ['main', 'module'] : ['browser', 'module', 'main'],
plugins: [PnpWebpackPlugin],
@@ -528,11 +499,7 @@ export default async function getBaseWebpackConfig(
!res.match(/next[/\\]dist[/\\]next-server[/\\]/) &&
(res.match(/[/\\]next[/\\]dist[/\\]/) ||
// This is the @babel/plugin-transform-runtime "helpers: true" option
- res.match(/node_modules[/\\]@babel[/\\]runtime[/\\]/) ||
- (!config.experimental.polyfillsOptimization &&
- res.match(
- /node_modules[/\\]@babel[/\\]runtime-corejs2[/\\]/
- )))
+ res.match(/node_modules[/\\]@babel[/\\]runtime[/\\]/))
) {
return callback()
}
@@ -728,9 +695,6 @@ export default async function getBaseWebpackConfig(
'process.env.__NEXT_MODERN_BUILD': JSON.stringify(
config.experimental.modern && !dev
),
- 'process.env.__NEXT_POLYFILLS_OPTIMIZATION': JSON.stringify(
- !!config.experimental.polyfillsOptimization
- ),
'process.env.__NEXT_GRANULAR_CHUNKS': JSON.stringify(
config.experimental.granularChunks && !dev
),
diff --git a/packages/next/build/webpack/loaders/next-babel-loader.js b/packages/next/build/webpack/loaders/next-babel-loader.js
index 8faf81c78fa77..91e71f573730c 100644
--- a/packages/next/build/webpack/loaders/next-babel-loader.js
+++ b/packages/next/build/webpack/loaders/next-babel-loader.js
@@ -59,7 +59,6 @@ module.exports = babelLoader.custom(babel => {
hasModern: opts.hasModern,
babelPresetPlugins: opts.babelPresetPlugins,
development: opts.development,
- polyfillsOptimization: opts.polyfillsOptimization,
}
const filename = join(opts.cwd, 'noop.js')
const loader = Object.assign(
@@ -72,7 +71,7 @@ module.exports = babelLoader.custom(babel => {
(opts.isServer ? '-server' : '') +
(opts.isModern ? '-modern' : '') +
(opts.hasModern ? '-has-modern' : '') +
- (opts.polyfillsOptimization ? '-new-polyfills' : '') +
+ '-new-polyfills' +
(opts.development ? '-development' : '-production') +
JSON.stringify(
babel.loadPartialConfig({
@@ -95,7 +94,6 @@ module.exports = babelLoader.custom(babel => {
delete loader.hasModern
delete loader.pagesDir
delete loader.babelPresetPlugins
- delete loader.polyfillsOptimization
delete loader.development
return { loader, custom }
},
@@ -110,7 +108,6 @@ module.exports = babelLoader.custom(babel => {
pagesDir,
babelPresetPlugins,
development,
- polyfillsOptimization,
},
}
) {
@@ -134,7 +131,6 @@ module.exports = babelLoader.custom(babel => {
options.caller.isServer = isServer
options.caller.isModern = isModern
- options.caller.polyfillsOptimization = polyfillsOptimization
options.caller.isDev = development
options.plugins = options.plugins || []
diff --git a/packages/next/client/index.js b/packages/next/client/index.js
index c69fedcff8c84..8cd2473aa15c6 100644
--- a/packages/next/client/index.js
+++ b/packages/next/client/index.js
@@ -14,20 +14,9 @@ import { isDynamicRoute } from '../next-server/lib/router/utils/is-dynamic'
///
-if (process.env.__NEXT_POLYFILLS_OPTIMIZATION) {
- if (!('finally' in Promise.prototype)) {
- // eslint-disable-next-line no-extend-native
- Promise.prototype.finally = require('finally-polyfill')
- }
-} else {
- // Polyfill Promise globally
- // This is needed because Webpack's dynamic loading(common chunks) code
- // depends on Promise.
- // So, we need to polyfill it.
- // See: https://webpack.js.org/guides/code-splitting/#dynamic-imports
- if (!self.Promise) {
- self.Promise = require('@babel/runtime-corejs2/core-js/promise')
- }
+if (!('finally' in Promise.prototype)) {
+ // eslint-disable-next-line no-extend-native
+ Promise.prototype.finally = require('finally-polyfill')
}
const data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent)
diff --git a/packages/next/client/polyfills-nomodule.js b/packages/next/client/polyfills-nomodule.js
deleted file mode 100644
index 5682d2a0577ab..0000000000000
--- a/packages/next/client/polyfills-nomodule.js
+++ /dev/null
@@ -1 +0,0 @@
-import '@next/polyfill-nomodule'
diff --git a/packages/next/client/polyfills.js b/packages/next/client/polyfills.js
index 49e4345b6e602..5682d2a0577ab 100644
--- a/packages/next/client/polyfills.js
+++ b/packages/next/client/polyfills.js
@@ -1,3 +1 @@
-import '__next_polyfill__fetch'
-import 'url-polyfill'
-Object.assign = require('__next_polyfill__object_assign')
+import '@next/polyfill-nomodule'
diff --git a/packages/next/package.json b/packages/next/package.json
index f84528b5b61fb..d2e796d1a9723 100644
--- a/packages/next/package.json
+++ b/packages/next/package.json
@@ -72,7 +72,6 @@
"@babel/preset-react": "7.7.0",
"@babel/preset-typescript": "7.7.2",
"@babel/runtime": "7.7.2",
- "@babel/runtime-corejs2": "7.7.2",
"@babel/types": "7.7.4",
"@next/polyfill-nomodule": "9.2.3-canary.0",
"amphtml-validator": "1.0.23",
@@ -117,7 +116,6 @@
"mini-css-extract-plugin": "0.8.0",
"mkdirp": "0.5.1",
"node-fetch": "2.6.0",
- "object-assign": "4.1.1",
"ora": "3.4.0",
"path-to-regexp": "6.1.0",
"pnp-webpack-plugin": "1.5.0",
@@ -148,8 +146,7 @@
"webpack": "4.41.2",
"webpack-dev-middleware": "3.7.0",
"webpack-hot-middleware": "2.25.0",
- "webpack-sources": "1.4.3",
- "whatwg-fetch": "3.0.0"
+ "webpack-sources": "1.4.3"
},
"peerDependencies": {
"react": "^16.6.0",
diff --git a/packages/next/taskfile-babel.js b/packages/next/taskfile-babel.js
index d31ced3d8bde1..7c49c16968c97 100644
--- a/packages/next/taskfile-babel.js
+++ b/packages/next/taskfile-babel.js
@@ -95,11 +95,6 @@ module.exports = function(task) {
const output = transform(file.data, options)
const ext = extname(file.base)
- output.code = output.code.replace(
- /@babel\/runtime\//g,
- '@babel/runtime-corejs2/'
- )
-
// Replace `.ts|.tsx` with `.js` in files with an extension
if (ext) {
const extRegex = new RegExp(ext.replace('.', '\\.') + '$', 'i')
diff --git a/test/integration/bundle-size-profiling/next.config.js b/test/integration/bundle-size-profiling/next.config.js
index 4d15dcc1bb368..484d359b92306 100644
--- a/test/integration/bundle-size-profiling/next.config.js
+++ b/test/integration/bundle-size-profiling/next.config.js
@@ -1,7 +1,4 @@
module.exports = {
- experimental: {
- polyfillsOptimization: true,
- },
webpack(config, options) {
if (!options.isServer) {
config.profile = true
diff --git a/test/integration/modern-mode/test/index.test.js b/test/integration/modern-mode/test/index.test.js
index 52ae6c8324d4c..2d73aa8de1dd5 100644
--- a/test/integration/modern-mode/test/index.test.js
+++ b/test/integration/modern-mode/test/index.test.js
@@ -40,14 +40,7 @@ describe('Modern Mode', () => {
it('should generate client side modern and legacy build files', async () => {
const buildId = readFileSync(join(appDir, '.next/BUILD_ID'), 'utf8')
- const expectedFiles = [
- 'index',
- '_app',
- '_error',
- 'main',
- 'webpack',
- 'commons',
- ]
+ const expectedFiles = ['index', '_app', '_error', 'main', 'webpack']
const buildFiles = [
...readdirSync(join(appDir, '.next/static', buildId, 'pages')),
...readdirSync(join(appDir, '.next/static/runtime')).map(
diff --git a/test/integration/polyfilling-minimal/next.config.js b/test/integration/polyfilling-minimal/next.config.js
index 92edca3df0328..4ba52ba2c8df6 100644
--- a/test/integration/polyfilling-minimal/next.config.js
+++ b/test/integration/polyfilling-minimal/next.config.js
@@ -1,5 +1 @@
-module.exports = {
- experimental: {
- polyfillsOptimization: true,
- },
-}
+module.exports = {}
diff --git a/test/integration/size-limit/test/index.test.js b/test/integration/size-limit/test/index.test.js
index 5cec5c5e90726..7a2fc3f4ea534 100644
--- a/test/integration/size-limit/test/index.test.js
+++ b/test/integration/size-limit/test/index.test.js
@@ -80,7 +80,7 @@ describe('Production response size', () => {
)
// These numbers are without gzip compression!
- const delta = responseSizesBytes - 233 * 1024
+ const delta = responseSizesBytes - 241 * 1024
expect(delta).toBeLessThanOrEqual(1024) // don't increase size more than 1kb
expect(delta).toBeGreaterThanOrEqual(-1024) // don't decrease size more than 1kb without updating target
})
@@ -100,7 +100,7 @@ describe('Production response size', () => {
)
// These numbers are without gzip compression!
- const delta = responseSizesBytes - 201 * 1024
+ const delta = responseSizesBytes - 171 * 1024
expect(delta).toBeLessThanOrEqual(1024) // don't increase size more than 1kb
expect(delta).toBeGreaterThanOrEqual(-1024) // don't decrease size more than 1kb without updating target
})
diff --git a/test/unit/next-babel.test.js b/test/unit/next-babel.test.js
index ecd76a2d0c903..5dddb43b3f48c 100644
--- a/test/unit/next-babel.test.js
+++ b/test/unit/next-babel.test.js
@@ -69,7 +69,7 @@ describe('next/babel', () => {
expect(output).toMatch(`__jsx("a",{href:"/"`)
expect(babel(`const a = ()=>home`)).toMatchInlineSnapshot(
- `"\\"use strict\\";var _interopRequireDefault=require(\\"@babel/runtime-corejs2/helpers/interopRequireDefault\\");var _react=_interopRequireDefault(require(\\"react\\"));var __jsx=_react[\\"default\\"].createElement;var a=function a(){return __jsx(\\"a\\",{href:\\"/\\"},\\"home\\");};"`
+ `"\\"use strict\\";var _interopRequireDefault=require(\\"@babel/runtime/helpers/interopRequireDefault\\");var _react=_interopRequireDefault(require(\\"react\\"));var __jsx=_react[\\"default\\"].createElement;var a=function a(){return __jsx(\\"a\\",{href:\\"/\\"},\\"home\\");};"`
)
})
diff --git a/yarn.lock b/yarn.lock
index 4685fc13441d7..56b5c8032f164 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1036,14 +1036,6 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-typescript" "^7.7.4"
-"@babel/runtime-corejs2@7.7.2":
- version "7.7.2"
- resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.7.2.tgz#5a8c4e2f8688ce58adc9eb1d8320b6e7341f96ce"
- integrity sha512-GfVnHchOBvIMsweQ13l4jd9lT4brkevnavnVOej5g2y7PpTRY+R4pcQlCjWMZoUla5rMLFzaS/Ll2s59cB1TqQ==
- dependencies:
- core-js "^2.6.5"
- regenerator-runtime "^0.13.2"
-
"@babel/runtime@7.7.2":
version "7.7.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.2.tgz#111a78002a5c25fc8e3361bedc9529c696b85a6a"
@@ -1099,7 +1091,7 @@
globals "^11.1.0"
lodash "^4.17.13"
-"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.1", "@babel/types@^7.7.2", "@babel/types@^7.7.4":
+"@babel/types@7.7.4", "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.1", "@babel/types@^7.7.2", "@babel/types@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193"
integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==