Update JavaScript language polyfills with UseBuiltins and core-js v3
Although we are currently using babel-preset-env
(gitlab-ce#28026) to provide appropriate ES code transformations for our target browsers, we are not yet taking advantage of its ability to provide selective polyfill support with useBuiltIns: usage
. Currently we manually curate our language feature polyfills within commons/polyfills.js
, and that suits our needs.
Now, however, with gitlab-ce#49106 we probably will have a different set of polyfill needs depending on the build target and it makes sense to have the plugin handle this for us.
This may have some side benefits to performance as well because polyfills will now be imported on-demand where they are needed, rather than anticipated in a bootstrap file which is loaded in every bundle. A bundle which doesn't use the Map
class, may not need to load that polyfill at all.
Also, the latest version of babel-preset-env which we merged in gitlab-ce!28437 includes support to core-js@3
, but the upgrade is not automatic. We should consider making the switch manually ourselves, perhaps coinciding with the useBuiltIns
change.