title: Confused about useBuiltIns option of @babel/preset-env (using Browserslist Integration)
body: <p>I'm working on a web project using Babel 7 with Webpack 4. I've never used Babel before and can't really understand some parts of it. Based on the <a href="https://babeljs.io/docs/en/babel-preset-env" rel="noreferrer">documentation</a> I'm using <code>@babel/preset-env</code> because it seems the recommended way (especially for beginners). Also using Browserslist integration via my <code>.browserslistrc</code> file.</p>
  
  <p>Webpack does the compilation well (<code>babel-loader</code> version <code>8.0.2</code>), I have no errors but I'm confused about this <code>useBuiltIns: "entry"</code> <a href="https://babeljs.io/docs/en/babel-preset-env#browserslist-integration" rel="noreferrer">option mentioned here</a> and how <code>polyfill</code> system is working in Babel.  </p>
  
  <p><strong>.babelrc.js</strong></p>
  
  <pre><code>module.exports = {
    presets: [
      ['@babel/preset-env', {
        "useBuiltIns": "entry" // do I need this?
      }]
    ],
    plugins: [
      '@babel/plugin-syntax-dynamic-import'
    ]
  };
  </code></pre>
  
  <p><strong>.browserslistrc</strong><br>
  Copied from <a href="https://github.com/twbs/bootstrap/blob/v4.1.3/.browserslistrc" rel="noreferrer">here</a> (thought reasonable because my project is using Bootstrap).</p>
  
  <pre><code>&gt;= 1%
  last 1 major version
  not dead
  Chrome &gt;= 45
  Firefox &gt;= 38
  Edge &gt;= 12
  Explorer &gt;= 10
  iOS &gt;= 9
  Safari &gt;= 9
  Android &gt;= 4.4
  Opera &gt;= 30
  </code></pre>
  
  <p><strong>So my questions are:</strong></p>
  
  <p>1) Do I need to use that <code>useBuiltIns: "entry"</code> option?</p>
  
  <p>2) Do I need to install <code>@babel/polyfill</code> package and start my <code>vendors.js</code> with <code>require("@babel/polyfill");</code> ?  </p>
  
  <p>3) What if I omit both?</p>
  
  <p>If I do 1 and 2, my <code>vendors.js</code> grows up to <code>411 KB</code><br>
  If I ommit both it's just <code>341 KB</code><br>
  after a production build.</p>
  
  <p>I thought <code>@babel/preset-env</code> handles all the rewrites and polyfills by default without any extra <code>import/require</code> needed on my side...</p>
  
  <p>Thanks!</p>
  
  <p><strong>-- EDIT --</strong></p>
  
  <p><em>Babel's team has just <a href="https://github.com/babel/website/pull/1858" rel="noreferrer">updated</a> the <a href="https://babeljs.io/docs/en/babel-polyfill#usage-in-node-browserify-webpack" rel="noreferrer">docs of <code>@babel/polyfill</code></a> based on some GitHub issues (including mine) complaining about unclear/misleading documentation. Now it's obvious how to use it. (...and after that my original question seems stupid :)</em></p>