Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not bundle caniuse-lite #16048

Merged
merged 2 commits into from Aug 10, 2020
Merged

Do not bundle caniuse-lite #16048

merged 2 commits into from Aug 10, 2020

Conversation

Timer
Copy link
Member

@Timer Timer commented Aug 10, 2020

This pull request skips bundling caniuse-lite, which is a widely used dependency, to reduce overall install size and allow it to be upgraded independently.

This dependency is important to be unpinned because it tracks an ever-moving target: browser feature compatibility.


Fixes #15982

@ijjk
Copy link
Member

ijjk commented Aug 10, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
buildDuration 14.7s 14.3s -404ms
nodeModulesSize 65.8 MB 64.7 MB -1.07 MB
Page Load Tests Overall increase ✓
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
/ failed reqs 0 0
/ total time (seconds) 2.599 2.619 ⚠️ +0.02
/ avg req/sec 961.91 954.46 ⚠️ -7.45
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.603 1.549 -0.05
/error-in-render avg req/sec 1559.52 1614.23 +54.71
Client Bundles (main, webpack, commons)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..ec1a.js gzip 9.99 kB 9.99 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
main-0d8e09f..5365.js gzip 6.74 kB 6.74 kB
webpack-ccf5..276a.js gzip 751 B 751 B
Overall change 56.6 kB 56.6 kB
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..dule.js gzip 5.89 kB 5.89 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
main-6d288ad..dule.js gzip 5.81 kB 5.81 kB
webpack-10c7..dule.js gzip 751 B 751 B
Overall change 51.6 kB 51.6 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
polyfills-75..1629.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-874bd8a..0103.js gzip 1.28 kB 1.28 kB
_error-fa39c..ec40.js gzip 3.45 kB 3.45 kB
hooks-585f07..95a3.js gzip 887 B 887 B
index-c7b63f..fc02.js gzip 227 B 227 B
link-f4d2979..e57b.js gzip 1.29 kB 1.29 kB
routerDirect..ebc7.js gzip 284 B 284 B
withRouter-2..db68.js gzip 284 B 284 B
Overall change 7.71 kB 7.71 kB
Client Pages Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-97e743e..dule.js gzip 626 B 626 B
_error-b4004..dule.js gzip 2.3 kB 2.3 kB
hooks-696209..dule.js gzip 387 B 387 B
index-a4dd74..dule.js gzip 226 B 226 B
link-653c74f..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-1..dule.js gzip 282 B 282 B
Overall change 5.37 kB 5.37 kB
Client Build Manifests
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_buildManifest.js gzip 273 B 273 B
_buildManife..dule.js gzip 280 B 280 B
Overall change 553 B 553 B
Rendered Page Sizes
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
index.html gzip 948 B 948 B
link.html gzip 955 B 955 B
withRouter.html gzip 941 B 941 B
Overall change 2.84 kB 2.84 kB

Serverless Mode (Decrease detected ✓)
General Overall decrease ✓
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
buildDuration 15.9s 16.4s ⚠️ +536ms
nodeModulesSize 65.8 MB 64.7 MB -1.07 MB
Client Bundles (main, webpack, commons)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..ec1a.js gzip 9.99 kB 9.99 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
main-0d8e09f..5365.js gzip 6.74 kB 6.74 kB
webpack-ccf5..276a.js gzip 751 B 751 B
Overall change 56.6 kB 56.6 kB
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..dule.js gzip 5.89 kB 5.89 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
main-6d288ad..dule.js gzip 5.81 kB 5.81 kB
webpack-10c7..dule.js gzip 751 B 751 B
Overall change 51.6 kB 51.6 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
polyfills-75..1629.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-874bd8a..0103.js gzip 1.28 kB 1.28 kB
_error-fa39c..ec40.js gzip 3.45 kB 3.45 kB
hooks-585f07..95a3.js gzip 887 B 887 B
index-c7b63f..fc02.js gzip 227 B 227 B
link-f4d2979..e57b.js gzip 1.29 kB 1.29 kB
routerDirect..ebc7.js gzip 284 B 284 B
withRouter-2..db68.js gzip 284 B 284 B
Overall change 7.71 kB 7.71 kB
Client Pages Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-97e743e..dule.js gzip 626 B 626 B
_error-b4004..dule.js gzip 2.3 kB 2.3 kB
hooks-696209..dule.js gzip 387 B 387 B
index-a4dd74..dule.js gzip 226 B 226 B
link-653c74f..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-1..dule.js gzip 282 B 282 B
Overall change 5.37 kB 5.37 kB
Client Build Manifests
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_buildManifest.js gzip 273 B 273 B
_buildManife..dule.js gzip 280 B 280 B
Overall change 553 B 553 B
Serverless bundles
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_error.js 1.03 MB 1.03 MB
404.html 4.18 kB 4.18 kB
hooks.html 3.82 kB 3.82 kB
index.js 1.03 MB 1.03 MB
link.js 1.07 MB 1.07 MB
routerDirect.js 1.06 MB 1.06 MB
withRouter.js 1.06 MB 1.06 MB
Overall change 5.26 MB 5.26 MB
Commit: f0a411a

timneutkens
timneutkens previously approved these changes Aug 10, 2020
@ijjk
Copy link
Member

ijjk commented Aug 10, 2020

Failing test suites

Commit: f0a411a

test/integration/css-modules/test/index.test.js

  • 3rd Party CSS Module Support > should've emitted a single CSS file
Expand output

● 3rd Party CSS Module Support › should've emitted a single CSS file

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `3rd Party CSS Module Support should've emitted a single CSS file 1`

Snapshot: ".index_foo__29BAH{position:relative}.index_foo__29BAH .bar,.index_foo__29BAH .baz{height:100%;overflow:hidden}.index_foo__29BAH .lol,.index_foo__29BAH>.lel{width:80%}"
Received: ".index_foo__29BAH{position:relative}.index_foo__29BAH .bar,.index_foo__29BAH .baz{height:100%;overflow:hidden}.index_foo__29BAH .lol{width:80%}.index_foo__29BAH>.lel{width:80%}"

  110 |     const cssContent = await readFile(join(cssFolder, cssFiles[0]), 'utf8')
  111 | 
> 112 |     expect(cssContent.replace(/\/\*.*?\*\//g, '').trim()).toMatchInlineSnapshot(
      |                                                           ^
  113 |       `".index_foo__29BAH{position:relative}.index_foo__29BAH .bar,.index_foo__29BAH .baz{height:100%;overflow:hidden}.index_foo__29BAH .lol,.index_foo__29BAH>.lel{width:80%}"`
  114 |     )
  115 |   })

  at Object.<anonymous> (integration/css-modules/test/index.test.js:112:59)

test/integration/scss-modules/test/index.test.js

  • 3rd Party CSS Module Support > should've emitted a single CSS file
Expand output

● 3rd Party CSS Module Support › should've emitted a single CSS file

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `3rd Party CSS Module Support should've emitted a single CSS file 1`

Snapshot: ".index_foo__9_fxH{position:relative}.index_foo__9_fxH .bar,.index_foo__9_fxH .baz{height:100%;overflow:hidden}.index_foo__9_fxH .lol,.index_foo__9_fxH>.lel{width:80%}"
Received: ".index_foo__9_fxH{position:relative}.index_foo__9_fxH .bar,.index_foo__9_fxH .baz{height:100%;overflow:hidden}.index_foo__9_fxH .lol{width:80%}.index_foo__9_fxH>.lel{width:80%}"

  109 |     const cssContent = await readFile(join(cssFolder, cssFiles[0]), 'utf8')
  110 | 
> 111 |     expect(cssContent.replace(/\/\*.*?\*\//g, '').trim()).toMatchInlineSnapshot(
      |                                                           ^
  112 |       `".index_foo__9_fxH{position:relative}.index_foo__9_fxH .bar,.index_foo__9_fxH .baz{height:100%;overflow:hidden}.index_foo__9_fxH .lol,.index_foo__9_fxH>.lel{width:80%}"`
  113 |     )
  114 |   })

  at Object.<anonymous> (integration/scss-modules/test/index.test.js:111:59)

@ijjk
Copy link
Member

ijjk commented Aug 10, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
buildDuration 12.4s 12.2s -273ms
nodeModulesSize 65.8 MB 64.7 MB -1.07 MB
Page Load Tests Overall increase ✓
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
/ failed reqs 0 0
/ total time (seconds) 2.375 2.264 -0.11
/ avg req/sec 1052.62 1104.37 +51.75
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.407 1.384 -0.02
/error-in-render avg req/sec 1776.2 1806.59 +30.39
Client Bundles (main, webpack, commons)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..ec1a.js gzip 9.99 kB 9.99 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
main-8927408..22b2.js gzip 6.74 kB 6.74 kB
webpack-ccf5..276a.js gzip 751 B 751 B
Overall change 56.6 kB 56.6 kB
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..dule.js gzip 5.89 kB 5.89 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
main-15cde23..dule.js gzip 5.81 kB 5.81 kB
webpack-10c7..dule.js gzip 751 B 751 B
Overall change 51.6 kB 51.6 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
polyfills-75..1629.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-874bd8a..0103.js gzip 1.28 kB 1.28 kB
_error-fa39c..ec40.js gzip 3.45 kB 3.45 kB
hooks-585f07..95a3.js gzip 887 B 887 B
index-c7b63f..fc02.js gzip 227 B 227 B
link-f4d2979..e57b.js gzip 1.29 kB 1.29 kB
routerDirect..ebc7.js gzip 284 B 284 B
withRouter-2..db68.js gzip 284 B 284 B
Overall change 7.71 kB 7.71 kB
Client Pages Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-97e743e..dule.js gzip 626 B 626 B
_error-b4004..dule.js gzip 2.3 kB 2.3 kB
hooks-696209..dule.js gzip 387 B 387 B
index-a4dd74..dule.js gzip 226 B 226 B
link-653c74f..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-1..dule.js gzip 282 B 282 B
Overall change 5.37 kB 5.37 kB
Client Build Manifests
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_buildManifest.js gzip 273 B 273 B
_buildManife..dule.js gzip 280 B 280 B
Overall change 553 B 553 B
Rendered Page Sizes
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
index.html gzip 948 B 948 B
link.html gzip 955 B 955 B
withRouter.html gzip 942 B 942 B
Overall change 2.85 kB 2.85 kB

Serverless Mode (Decrease detected ✓)
General Overall decrease ✓
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
buildDuration 13.6s 13.7s ⚠️ +92ms
nodeModulesSize 65.8 MB 64.7 MB -1.07 MB
Client Bundles (main, webpack, commons)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..ec1a.js gzip 9.99 kB 9.99 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
main-8927408..22b2.js gzip 6.74 kB 6.74 kB
webpack-ccf5..276a.js gzip 751 B 751 B
Overall change 56.6 kB 56.6 kB
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
677f882d2ed8..dule.js gzip 5.89 kB 5.89 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
main-15cde23..dule.js gzip 5.81 kB 5.81 kB
webpack-10c7..dule.js gzip 751 B 751 B
Overall change 51.6 kB 51.6 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
polyfills-75..1629.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-874bd8a..0103.js gzip 1.28 kB 1.28 kB
_error-fa39c..ec40.js gzip 3.45 kB 3.45 kB
hooks-585f07..95a3.js gzip 887 B 887 B
index-c7b63f..fc02.js gzip 227 B 227 B
link-f4d2979..e57b.js gzip 1.29 kB 1.29 kB
routerDirect..ebc7.js gzip 284 B 284 B
withRouter-2..db68.js gzip 284 B 284 B
Overall change 7.71 kB 7.71 kB
Client Pages Modern
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_app-97e743e..dule.js gzip 626 B 626 B
_error-b4004..dule.js gzip 2.3 kB 2.3 kB
hooks-696209..dule.js gzip 387 B 387 B
index-a4dd74..dule.js gzip 226 B 226 B
link-653c74f..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-1..dule.js gzip 282 B 282 B
Overall change 5.37 kB 5.37 kB
Client Build Manifests
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_buildManifest.js gzip 273 B 273 B
_buildManife..dule.js gzip 280 B 280 B
Overall change 553 B 553 B
Serverless bundles
vercel/next.js canary Timer/next.js no-bundle/caniuse-lite Change
_error.js 1.03 MB 1.03 MB
404.html 4.18 kB 4.18 kB
hooks.html 3.82 kB 3.82 kB
index.js 1.03 MB 1.03 MB
link.js 1.07 MB 1.07 MB
routerDirect.js 1.06 MB 1.06 MB
withRouter.js 1.06 MB 1.06 MB
Overall change 5.26 MB 5.26 MB
Commit: 5555638

@Timer Timer merged commit e08b633 into vercel:canary Aug 10, 2020
@Timer Timer deleted the no-bundle/caniuse-lite branch August 10, 2020 15:27
kodiakhq bot pushed a commit that referenced this pull request Aug 14, 2020
**What's the problem this PR addresses?**

#16048 stopped bundling `caniuse-lite` but didn't declare it as a dependency

https://github.com/yarnpkg/berry/runs/972037981?check_suite_focus=true#step:5:75

**How did you fix it?**

Add `caniuse-lite` as a dependency

---
cc @Timer 

As mentioned in #14157 (comment) I looked into adding a PnP e2e test but the use of the `gist` protocol stopped me from getting it to work since v2 doesn't support that yet. Would it be possible to change this to one of the supported protocols (https://yarnpkg.com/features/protocols)?
https://github.com/vercel/next.js/blob/636672755004c756eefcddb5d4ccabbc1855e75a/packages/next/package.json#L208
m-lautenbach pushed a commit to m-lautenbach/next.js that referenced this pull request Aug 20, 2020
**What's the problem this PR addresses?**

vercel#16048 stopped bundling `caniuse-lite` but didn't declare it as a dependency

https://github.com/yarnpkg/berry/runs/972037981?check_suite_focus=true#step:5:75

**How did you fix it?**

Add `caniuse-lite` as a dependency

---
cc @Timer 

As mentioned in vercel#14157 (comment) I looked into adding a PnP e2e test but the use of the `gist` protocol stopped me from getting it to work since v2 doesn't support that yet. Would it be possible to change this to one of the supported protocols (https://yarnpkg.com/features/protocols)?
https://github.com/vercel/next.js/blob/636672755004c756eefcddb5d4ccabbc1855e75a/packages/next/package.json#L208
@merceyz merceyz mentioned this pull request May 2, 2021
1 task
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Browserslist: caniuse-lite is outdated. Please run next command yarn upgrade
3 participants