diff --git a/packages/babel-plugin-transform-react-jsx-self/.npmignore b/packages/babel-plugin-transform-react-jsx-self/.npmignore
new file mode 100644
index 0000000000..31852902b1
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/packages/babel-plugin-transform-react-jsx-self/README.md b/packages/babel-plugin-transform-react-jsx-self/README.md
new file mode 100644
index 0000000000..2a60a3b501
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/README.md
@@ -0,0 +1,49 @@
+# babel-plugin-transform-react-jsx-self
+
+Adds `__self` prop to JSX elements, which React will use to generate some runtime warnings. All React users
+should enable this transform in dev mode.
+
+## Example
+
+###In
+
+```
+
+```
+###Out
+
+```
+
+```
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-react-jsx-self
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-react-jsx-self"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-react-jsx-self script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-react-jsx-self"]
+});
+```
diff --git a/packages/babel-plugin-transform-react-jsx-self/package.json b/packages/babel-plugin-transform-react-jsx-self/package.json
new file mode 100644
index 0000000000..cd6985a6c4
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "babel-plugin-transform-react-jsx-self",
+ "version": "6.9.0",
+ "description": "Add a __self prop to all JSX Elements",
+ "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx-self",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ],
+ "dependencies": {
+ "babel-runtime": "^6.9.0",
+ "babel-plugin-syntax-jsx": "^6.8.0"
+ },
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.8.0"
+ }
+}
diff --git a/packages/babel-plugin-transform-react-jsx-self/src/index.js b/packages/babel-plugin-transform-react-jsx-self/src/index.js
new file mode 100644
index 0000000000..85113bca0c
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/src/index.js
@@ -0,0 +1,30 @@
+
+ /**
+ * This adds {fileName, lineNumber} annotations to React component definitions
+ * and to jsx tag literals.
+ *
+ *
+ * == JSX Literals ==
+ *
+ *
+ *
+ * becomes:
+ *
+ *
+ */
+
+const TRACE_ID = "__self";
+
+export default function ({ types: t }) {
+ let visitor = {
+ JSXOpeningElement(node) {
+ const id = t.jSXIdentifier(TRACE_ID);
+ const trace = t.identifier("this");
+ node.container.openingElement.attributes.push(t.jSXAttribute(id, t.jSXExpressionContainer(trace)));
+ }
+ };
+
+ return {
+ visitor
+ };
+}
diff --git a/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/actual.js b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/actual.js
new file mode 100644
index 0000000000..da9210eabb
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/actual.js
@@ -0,0 +1 @@
+var x =
diff --git a/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/expected.js b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/expected.js
new file mode 100644
index 0000000000..815cbb0d90
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/expected.js
@@ -0,0 +1 @@
+var x = ;
\ No newline at end of file
diff --git a/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json
new file mode 100644
index 0000000000..5a2d48a4a8
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["syntax-jsx", "transform-react-jsx-self"]
+}
diff --git a/packages/babel-plugin-transform-react-jsx-self/test/index.js b/packages/babel-plugin-transform-react-jsx-self/test/index.js
new file mode 100644
index 0000000000..1f6634aabd
--- /dev/null
+++ b/packages/babel-plugin-transform-react-jsx-self/test/index.js
@@ -0,0 +1 @@
+require("babel-helper-plugin-test-runner")(__dirname);
diff --git a/packages/babel-preset-react/index.js b/packages/babel-preset-react/index.js
index 89f691a454..c0f5e6d7b0 100644
--- a/packages/babel-preset-react/index.js
+++ b/packages/babel-preset-react/index.js
@@ -6,11 +6,12 @@ module.exports = {
require("babel-plugin-syntax-jsx"),
require("babel-plugin-transform-react-display-name"),
],
- /*env: {
+ env: {
development: {
plugins: [
- require("babel-plugin-transform-react-jsx-source")
+ // require("babel-plugin-transform-react-jsx-source"),
+ require("babel-plugin-transform-react-jsx-self")
]
}
- }*/
+ }
};