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

[examples/with-react-intl] Fix issues with Intl.js polyfill #11806

Merged
merged 2 commits into from
Apr 13, 2020

Conversation

fabianishere
Copy link
Contributor

This pull request addresses two issues with the Intl polyfill that we use for the react-intl example:

  1. It fails for versions > 1.2.4 with RegEx errors (Example with-use-intl doesn't work with dynamic routes. #11777). This is solved by disabling the RegEx restore functionality.
  2. It loads the polyfill unconditionally, even if the Node environment supports the requested languages. This is solved by selectively enabling the polyfill when either Intl is not available or it does not support the requested languages.

This change adds a workaround for an issue with the Intl.js polyfill
library where it instantiates an invalid regular expression.

Relevant issues:
andyearnshaw/Intl.js#270
andyearnshaw/Intl.js#256
andyearnshaw/Intl.js#306

Until this issue is fixed upstream, we use a workaround in the example.

Fixes: vercel#11777
This change updates the `with-react-intl` example to prevent it from
polyfilling `Intl` in a Node environment when it is not needed.
@ijjk
Copy link
Member

ijjk commented Apr 10, 2020

Stats from current PR

Default Server Mode
General
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
buildDuration 10.7s 11s ⚠️ +332ms
nodeModulesSize 61 MB 61 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..e3d8.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.3 kB 56.3 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
index.html gzip 917 B 917 B
link.html gzip 926 B 926 B
withRouter.html gzip 913 B 913 B
Overall change 2.76 kB 2.76 kB

Serverless Mode (Increase detected ⚠️)
General
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
buildDuration 11.5s 11s -502ms
nodeModulesSize 61 MB 61 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..e3d8.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.3 kB 56.3 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_error.js gzip 233 kB 233 kB -25 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 956 B 956 B
index.js gzip 233 kB 233 kB ⚠️ +56 B
link.js gzip 243 kB 243 kB ⚠️ +106 B
routerDirect.js gzip 241 kB 241 kB ⚠️ +2 B
withRouter.js gzip 241 kB 241 kB ⚠️ +252 B
Overall change 1.19 MB 1.19 MB ⚠️ +391 B

@ijjk
Copy link
Member

ijjk commented Apr 10, 2020

Stats from current PR

Default Server Mode
General
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
buildDuration 11.1s 10.7s -395ms
nodeModulesSize 61 MB 61 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..e3d8.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.3 kB 56.3 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
index.html gzip 917 B 917 B
link.html gzip 926 B 926 B
withRouter.html gzip 913 B 913 B
Overall change 2.76 kB 2.76 kB

Serverless Mode (Decrease detected ✓)
General
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
buildDuration 11.3s 11.4s ⚠️ +122ms
nodeModulesSize 61 MB 61 MB
Client Bundles (main, webpack, commons)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..e3d8.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.3 kB 56.3 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary fabianishere/next.js example/react-intl-polyfill Change
_error.js gzip 233 kB 233 kB -15 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 956 B 956 B
index.js gzip 233 kB 233 kB -38 B
link.js gzip 243 kB 243 kB ⚠️ +101 B
routerDirect.js gzip 241 kB 241 kB -109 B
withRouter.js gzip 241 kB 241 kB ⚠️ +1 B
Overall change 1.19 MB 1.19 MB -60 B

@Timer Timer added the examples Issue/PR related to examples label Apr 13, 2020
Copy link
Member

@Timer Timer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
examples Issue/PR related to examples
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants