diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.expect.md
new file mode 100644
index 0000000000000..5553f235a0847
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.expect.md
@@ -0,0 +1,27 @@
+
+## Input
+
+```javascript
+function Component() {
+ const Foo = () => {
+ someGlobal = true;
+ };
+ return ;
+}
+
+```
+
+
+## Error
+
+```
+ 1 | function Component() {
+ 2 | const Foo = () => {
+> 3 | someGlobal = true;
+ | ^^^^^^^^^^ InvalidReact: Unexpected reassignment of a variable which was defined outside of the component. Components and hooks should be pure and side-effect free, but variable reassignment is a form of side-effect. If this variable is used in rendering, use useState instead. (https://react.dev/reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render) (3:3)
+ 4 | };
+ 5 | return ;
+ 6 | }
+```
+
+
\ No newline at end of file
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.js
new file mode 100644
index 0000000000000..2982fdf70858f
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-component-tag-function.js
@@ -0,0 +1,6 @@
+function Component() {
+ const Foo = () => {
+ someGlobal = true;
+ };
+ return ;
+}
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.expect.md
new file mode 100644
index 0000000000000..d380137836cc1
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.expect.md
@@ -0,0 +1,30 @@
+
+## Input
+
+```javascript
+function Component() {
+ const foo = () => {
+ someGlobal = true;
+ };
+ // Children are generally access/called during render, so
+ // modifying a global in a children function is almost
+ // certainly a mistake.
+ return {foo};
+}
+
+```
+
+
+## Error
+
+```
+ 1 | function Component() {
+ 2 | const foo = () => {
+> 3 | someGlobal = true;
+ | ^^^^^^^^^^ InvalidReact: Unexpected reassignment of a variable which was defined outside of the component. Components and hooks should be pure and side-effect free, but variable reassignment is a form of side-effect. If this variable is used in rendering, use useState instead. (https://react.dev/reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render) (3:3)
+ 4 | };
+ 5 | // Children are generally access/called during render, so
+ 6 | // modifying a global in a children function is almost
+```
+
+
\ No newline at end of file
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.js
new file mode 100644
index 0000000000000..82554e8ac43ba
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-children.js
@@ -0,0 +1,9 @@
+function Component() {
+ const foo = () => {
+ someGlobal = true;
+ };
+ // Children are generally access/called during render, so
+ // modifying a global in a children function is almost
+ // certainly a mistake.
+ return {foo};
+}
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-spread-attribute.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-spread-attribute.expect.md
new file mode 100644
index 0000000000000..3861b16e90dcf
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-spread-attribute.expect.md
@@ -0,0 +1,27 @@
+
+## Input
+
+```javascript
+function Component() {
+ const foo = () => {
+ someGlobal = true;
+ };
+ return
;
+}
+
+```
+
+
+## Error
+
+```
+ 1 | function Component() {
+ 2 | const foo = () => {
+> 3 | someGlobal = true;
+ | ^^^^^^^^^^ InvalidReact: Unexpected reassignment of a variable which was defined outside of the component. Components and hooks should be pure and side-effect free, but variable reassignment is a form of side-effect. If this variable is used in rendering, use useState instead. (https://react.dev/reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render) (3:3)
+ 4 | };
+ 5 | return ;
+ 6 | }
+```
+
+
\ No newline at end of file
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-spread-attribute.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-spread-attribute.js
new file mode 100644
index 0000000000000..1eea9267b5098
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.assign-global-in-jsx-spread-attribute.js
@@ -0,0 +1,6 @@
+function Component() {
+ const foo = () => {
+ someGlobal = true;
+ };
+ return ;
+}