@babel/compat-data provides compatibility data for determining which Babel plugins are required to support specific JavaScript features across different browser environments. It contains structured JSON data files that map JavaScript language features, proposals, and built-ins to their browser support matrices, enabling build tools and bundlers to automatically configure the minimal set of Babel transformations needed for target environments.
npm install @babel/compat-dataESM (ES Modules):
import plugins from "@babel/compat-data/plugins";
import nativeModules from "@babel/compat-data/native-modules";
import corejs2BuiltIns from "@babel/compat-data/corejs2-built-ins";
import corejs3ShippedProposals from "@babel/compat-data/corejs3-shipped-proposals";
import overlappingPlugins from "@babel/compat-data/overlapping-plugins";
import pluginBugfixes from "@babel/compat-data/plugin-bugfixes";CommonJS:
const plugins = require("@babel/compat-data/plugins");
const nativeModules = require("@babel/compat-data/native-modules");
const corejs2BuiltIns = require("@babel/compat-data/corejs2-built-ins");
const corejs3ShippedProposals = require("@babel/compat-data/corejs3-shipped-proposals");
const overlappingPlugins = require("@babel/compat-data/overlapping-plugins");
const pluginBugfixes = require("@babel/compat-data/plugin-bugfixes");import plugins from "@babel/compat-data/plugins";
import nativeModules from "@babel/compat-data/native-modules";
// Check if a plugin is needed for Chrome 90
const chromeVersion = "90";
const pluginName = "transform-class-static-block";
if (plugins[pluginName] && plugins[pluginName].chrome) {
const minVersion = plugins[pluginName].chrome;
const isSupported = parseInt(chromeVersion) >= parseInt(minVersion);
console.log(`${pluginName} supported in Chrome ${chromeVersion}: ${isSupported}`);
}
// Get all browser targets for ES6 modules
console.log("ES6 module support:", nativeModules["es6.module"]);@babel/compat-data consists of six main compatibility datasets:
All data follows a consistent pattern where features are mapped to browser version objects containing minimum supported version numbers.
Browser and engine compatibility data for Babel transform plugins. Used by preset-env to determine which plugins are needed based on target environments.
/**
* Plugin compatibility data mapping plugin names to browser support objects
* @type {Record<string, BrowserSupport>}
*/
declare const plugins: Record<string, BrowserSupport>;Browser and engine support data for ES6 modules functionality.
/**
* Native modules support data
* @type {Record<string, BrowserSupport>}
*/
declare const nativeModules: Record<string, BrowserSupport>;Browser and engine support data for JavaScript built-in methods and objects as provided by core-js 2 polyfills.
/**
* Core-js 2 built-ins compatibility data
* @type {Record<string, BrowserSupport>}
*/
declare const corejs2BuiltIns: Record<string, BrowserSupport>;List of JavaScript proposals that are shipped in core-js 3.
/**
* Array of proposal names shipped in core-js 3
* @type {string[]}
*/
declare const corejs3ShippedProposals: string[];Maps plugins to their related bugfix plugins that provide overlapping functionality.
/**
* Plugin overlap mapping showing which bugfix plugins relate to each main plugin
* @type {Record<string, string[]>}
*/
declare const overlappingPlugins: Record<string, string[]>;Browser and engine compatibility data for Babel bugfix plugins that address specific browser implementation issues.
/**
* Plugin bugfixes compatibility data
* @type {Record<string, BrowserSupport>}
*/
declare const pluginBugfixes: Record<string, BrowserSupport>;/**
* Browser support object mapping browser/engine names to minimum version strings
*/
interface BrowserSupport {
/** Google Chrome minimum version */
chrome?: string;
/** Mozilla Firefox minimum version */
firefox?: string;
/** Apple Safari minimum version */
safari?: string;
/** Microsoft Edge minimum version */
edge?: string;
/** Opera minimum version */
opera?: string;
/** Internet Explorer minimum version */
ie?: string;
/** Node.js minimum version */
node?: string;
/** Deno minimum version */
deno?: string;
/** Electron minimum version */
electron?: string;
/** Safari on iOS minimum version */
ios?: string;
/** Safari on iOS (alternative key) minimum version */
ios_saf?: string;
/** Chrome on Android minimum version */
android?: string;
/** Chrome on Android (alternative key) minimum version */
and_chr?: string;
/** Firefox on Android minimum version */
and_ff?: string;
/** Samsung Internet minimum version */
samsung?: string;
/** Opera Mobile minimum version */
opera_mobile?: string;
/** Opera Mobile (alternative key) minimum version */
op_mob?: string;
/** Rhino JavaScript engine minimum version */
rhino?: string;
/** PhantomJS minimum version */
phantom?: string;
}