# @babel/preset-env: Smart Targeting — Babel & SWC

Source: https://www.geekswithgeeks.com/en/babel-swc/bs-babel-preset-env

> Use preset-env to automatically transpile only what your target browsers need.

## Smart target detection

@babel/preset-env doesn't transpile everything. It inspects your `.browserslistrc` or `targets` config to determine what browsers you support, then only transpiles features those browsers don't have.

## Configuring targets

Tell preset-env which browsers to support. Modern targets skip most transpilation; legacy targets transpile more.

```json
// .babelrc - modern: skip transpilation
{
  "presets": [
    ["@babel/preset-env", { "targets": { "browsers": ["last 2 versions"] } }]
  ]
}

// .babelrc - legacy: transpile more
{
  "presets": [
    ["@babel/preset-env", { "targets": { "browsers": ["IE 11"] } }]
  ]
}
```

## Use .browserslistrc for DRY config

Define your supported browsers once in `.browserslistrc` and share it across Babel, PostCSS, Autoprefixer, and other tools. No duplication.
