---
id: babel-plugin-transform-react-jsx-development
title: "@babel/plugin-transform-react-jsx-development"
sidebar_label: transform-react-jsx-development
---
:::info
This plugin is included in `@babel/preset-react`
:::
This plugin is a developer version of [`@babel/plugin-transform-react-jsx`](./plugin-transform-react-jsx.md). It is designed to provide enhanced validation error messages and precise code location information for debugging React apps. Note that this plugin is intended to be used in a development environment, as it generates significantly more outputs than the production build.
If you are using [`@babel/preset-react`](./preset-react.md), it will be automatically enabled by the [`development`](./preset-react.md#development) option so you don't have to install it.
## Example
**In**
```js title="input.jsx"
const profile = (
{[user.firstName, user.lastName].join(" ")}
);
```
**Out**
```js title="output.js"
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
const _jsxFileName = "input.jsx";
const profile = _jsxDEV("div", {
children: [
_jsxDEV("img", {
src: "avatar.png",
className: "profile",
}, undefined, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 5 }, this),
_jsxDEV("h3", {
children: [user.firstName, user.lastName].join(" "),
}, undefined, false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 5 }, this),
]},
undefined, false, { fileName: _jsxFileName, lineNumber: 2, columnNumber: 3 }, this
);
```
## Installation
```shell npm2yarn
npm install --save-dev @babel/plugin-transform-react-jsx-development
```
## Usage
### With a configuration file (Recommended)
Without options:
```json title="babel.config.json"
{
"plugins": ["@babel/plugin-transform-react-jsx-development"]
}
```
With options:
:::babel8
```json title="babel.config.json"
{
"plugins": [
[
"@babel/plugin-transform-react-jsx-development",
{
"throwIfNamespace": false, // defaults to true
"runtime": "automatic", // defaults to autoamtic
"importSource": "custom-jsx-library" // defaults to react
}
]
]
}
```
:::
:::babel7
```json title="babel.config.json"
{
"plugins": [
[
"@babel/plugin-transform-react-jsx-development",
{
"throwIfNamespace": false, // defaults to true
"runtime": "automatic", // defaults to classic
"importSource": "custom-jsx-library" // defaults to react
}
]
]
}
```
:::
### Via CLI
```sh title="Shell"
babel --plugins @babel/plugin-transform-react-jsx-development script.js
```
### Via Node API
```js title="JavaScript"
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-react-jsx-development"],
});
```
## Options
:::babel8
#### `sourceSelf`
`boolean`, defaults to `false`.
When `true`, the plugin generates `__source` and `__self` arguments in `jsxDEV` calls. These were used by older versions of React for development warnings but have been removed since React 19.2.
Set this to `true` if you are using a React version older than 19.2 or a custom JSX runtime that depends on these arguments.
:::
It accepts the same options as [`@babel/plugin-transform-react-jsx`](./plugin-transform-react-jsx.md#options).