{"id":19006,"library":"babel-jest","title":"babel-jest","description":"Jest plugin to use Babel for transformation of source files during testing. Current stable version is 30.3.0 (released 2025). It is part of the Jest monorepo and follows Jest's release cadence. Key differentiators: integrates tightly with Jest's transform pipeline, automatically picks up Babel configuration, supports custom transformers and presets, and is ESM-compatible. It is the recommended way to transpile modern JavaScript and TypeScript code in Jest tests when using Babel. Compared to alternative transformers like ts-jest, babel-jest is faster but does not perform type checking.","status":"active","version":"30.3.0","language":"javascript","source_language":"en","source_url":"https://github.com/jestjs/jest","tags":["javascript","typescript"],"install":[{"cmd":"npm install babel-jest","lang":"bash","label":"npm"},{"cmd":"yarn add babel-jest","lang":"bash","label":"yarn"},{"cmd":"pnpm add babel-jest","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency required for Babel transformation.","package":"@babel/core","optional":false}],"imports":[{"note":"ESM-only since Jest 28; require() will fail in recent versions.","wrong":"const { createTransformer } = require('babel-jest')","symbol":"createTransformer","correct":"import { createTransformer } from 'babel-jest'"},{"note":"Default export is the transformer object used in Jest config. Using require().default works in CJS but is not recommended.","wrong":"const babelJest = require('babel-jest').default","symbol":"default (default export)","correct":"import babelJest from 'babel-jest'"},{"note":"TransformerConfig is a type export only available from Jest 30.2.0. Use type import to avoid runtime error.","wrong":"import { TransformerConfig } from 'babel-jest'","symbol":"TransformerConfig","correct":"import type { TransformerConfig } from 'babel-jest'"}],"quickstart":{"code":"// jest.config.js\nimport babelJest from 'babel-jest';\n\nexport default {\n  transform: {\n    '^.+\\\\.jsx?$': babelJest,\n    '^.+\\\\.tsx?$': [\n      babelJest.createTransformer({\n        presets: [\n          ['@babel/preset-env', { targets: { node: 'current' } }],\n          '@babel/preset-typescript',\n        ],\n      }),\n    ],\n  },\n};\n\n// Alternatively, use the createTransformer function with custom options.\n// This shows how to set up babel-jest for both JS and TS files.","lang":"typescript","description":"Configures babel-jest as the transformer for .js/.ts files in Jest, using createTransformer with custom Babel presets."},"warnings":[{"fix":"Use import statements instead of require(). If you must use CommonJS, use dynamic import or upgrade your project to ESM.","message":"babel-jest is now ESM-only starting from Jest 28. Using require() will throw an error.","severity":"breaking","affected_versions":">=28"},{"fix":"Review the changelog for Jest 30 and update custom transformers accordingly.","message":"In Jest 30, the 'createTransformer' function returns a different object type. Some custom transform options may not work as before.","severity":"breaking","affected_versions":">=30"},{"fix":"Replace usage of default export with createTransformer for clarity and future-proofing.","message":"The default export (babelJest) is still supported but using createTransformer is preferred for explicit configuration.","severity":"deprecated","affected_versions":">=28"},{"fix":"Add a separate type check step in your CI or use the TypeScript compiler as a separate test.","message":"babel-jest does not perform type checking. It only strips types when using TypeScript. For type checking, use ts-jest or run tsc separately.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Ensure you are using import statements and that the transform is correctly set (e.g., use 'import babelJest from \"babel-jest\"').","cause":"Using require() to import babel-jest in ESM-only mode, or misconfiguration in Jest transform.","error":"Error: Jest: 'babel-jest' is not a valid transformer. Must be a function or an object with a 'process' method."},{"fix":"Run 'npm install --save-dev @babel/core' or 'yarn add --dev @babel/core'.","cause":"Missing required peer dependency @babel/core.","error":"Cannot find module '@babel/core' from 'babel-jest'"},{"fix":"Upgrade to babel-jest v28+ and use 'import { createTransformer } from \"babel-jest\"'.","cause":"Using an older version of babel-jest (pre-28) where createTransformer did not exist, or incorrect import.","error":"TypeError: babelJest.createTransformer is not a function"},{"fix":"Add 'type': 'module' to package.json, or rename file to .mjs, or use require syntax for CJS.","cause":"Using ESM syntax in a CommonJS file without proper .mjs extension or 'type' module in package.json.","error":"SyntaxError: Cannot use import statement outside a module"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}