Reduce your JS payload when using polyfills in Babel

Are you importing the babel polyfill like...

import 'babel-polyfill';

But only need the odd function like Object.values from ES2017?

Then maybe you can reduce the size of your JS bundle by installing those specific polyfills. Importing the whole of babel-polyfill could be adding a lot of unnecessary code to your bundled JS.

So instead, install core-js which contains the individual polyfills.

npm install --save core-js

Then import the specific polyfills you need.

import 'core-js/fn/object/values';

And you're done. By doing this I saved 27kb on my final minified payload which is a 14% reduction! Not a massive amount but noticeable. Here are the file sizes before and after.

File Size
bundle.js 711kb
newbundle.js 634kb
bundle.min.js 194kb
newbundle.min.js 167kb

Note: The Babel Polyfill docs explain this concept of requiring specific polyfills, however I wanted to write about the quick wins I made with it!