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

recover polyfills #324

Merged
merged 8 commits into from
Jul 8, 2022
Merged

recover polyfills #324

merged 8 commits into from
Jul 8, 2022

Conversation

maxlath
Copy link
Member

@maxlath maxlath commented Jun 23, 2022

We lost polyfills when we did the migration to Webpack #229 (accidentally, as I thought that was part of the babel magic by default).

exploration

the options I could identify regarding our polyfill policy:

  1. use all the stable and shipped proposed features, and send all users a heavy polyfill bundle
  2. use all the stable and shipped proposed features, and detect user agents to send a heavy polyfill bundle to only users with old browsers
  3. use modern features less, only picking features that bring the most value, to send a reduced polyfill bundle to all users

proposition

I would go with option 3, and that's what this PR implements. It brings back polyfills to support a shortlist of browsers (defined by rules in package.json#browserslist), generating a ~101kb minified/~35kb compressed polyfill bundle that would be shipped to all users.

Copy link
Contributor

@jum-s jum-s left a comment

Choose a reason for hiding this comment

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

Dropping ie 11 looks legit, as user-agents stats looks negligible (less than 1 per 1000). But it will make it inaccessible to some vulnerable parts of the world, where ie is the mandatory default.

The previous assumption that they were automatically added by babel was wrong:
the `useBuiltIns` parameter needs to be set and core-js is required
Only adding assumptions that are 99.999% certain to ever cause problem in this codebase:
- noDocumentAll: can't imagine a use case involving `documenta.all`
- noNewArrows: all constructors in this code base are defined by libraries (Backbone, Svelte)
to make spotting unsupported features easier

Dropping support on IE 11 as this plugin shows that it's not adding to much
polyfills to the common bundle

Also dropping op_mini as the support data can apparently not be trusted
compat-table/compat-table#1057
as we are never iterating over DOM collections
see zloirock/core-js#1003
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants