diff --git a/packages/eslint-plugin-pf-codemods/index.js b/packages/eslint-plugin-pf-codemods/index.js
index 33baea5ca..d61541cbd 100644
--- a/packages/eslint-plugin-pf-codemods/index.js
+++ b/packages/eslint-plugin-pf-codemods/index.js
@@ -55,6 +55,7 @@ const rules = {
"pagination-rename-props": require('./lib/rules/v5/pagination-rename-props'),
"resizeObserver-function-param": require('./lib/rules/v5/resizeObserver-function-param'),
"simpleList-remove-isCurrent": require('./lib/rules/v5/simpleList-remove-isCurrent'),
+ "spinner-svg-default": require('./lib/rules/v5/spinner-svg-default'),
"tableComposable-remove-hasSelectableRowCaption": require('./lib/rules/v5/tableComposable-remove-hasSelectableRowCaption'),
"toggle-remove-isPrimary": require('./lib/rules/v5/toggle-remove-isPrimary'),
"toolbar-remove-visiblity": require('./lib/rules/v5/toolbar-remove-visiblity'),
diff --git a/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js
new file mode 100644
index 000000000..995eb1629
--- /dev/null
+++ b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js
@@ -0,0 +1,28 @@
+const { getPackageImports } = require('../../helpers');
+
+// https://github.com/patternfly/patternfly-react/pull/8183
+module.exports = {
+ meta: { fixable: 'code' },
+ create: function(context) {
+ const spinnerImports = getPackageImports(context, '@patternfly/react-core')
+ .filter(specifier => specifier.imported.name == 'Spinner');
+
+ return spinnerImports.length === 0 ? {} : {
+ JSXOpeningElement(node) {
+ if (spinnerImports.map(imp => imp.local.name).includes(node.name.name)) {
+ const svgAttribute = node.attributes.find(n => n.name && n.name.name === 'isSVG');
+ if (svgAttribute && svgAttribute?.value?.expression?.value !== false) {
+ context.report({
+ node,
+ message: `Spinner isSVG prop default value has changed from false to true.`,
+ fix(fixer) {
+ return fixer.replaceText(svgAttribute, ``);
+ }
+ });
+ }
+ }
+ }
+ };
+ }
+};
+
diff --git a/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js
new file mode 100644
index 000000000..5d4cae035
--- /dev/null
+++ b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js
@@ -0,0 +1,35 @@
+const ruleTester = require('../../ruletester');
+const rule = require('../../../lib/rules/v5/spinner-svg-default');
+
+ruleTester.run("spinner-svg-default", rule, {
+ valid: [
+ {
+ code: `import { Spinner } from '@patternfly/react-core'; `,
+ },
+ {
+ code: `import { Spinner } from '@patternfly/react-core'; `,
+ },
+ {
+ // No @patternfly/react-core import
+ code: ``,
+ }
+ ],
+ invalid: [
+ {
+ code: `import { Spinner } from '@patternfly/react-core'; `,
+ output: `import { Spinner } from '@patternfly/react-core'; `,
+ errors: [{
+ message: `Spinner isSVG prop default value has changed from false to true.`,
+ type: "JSXOpeningElement",
+ }]
+ },
+ {
+ code: `import { Spinner } from '@patternfly/react-core'; `,
+ output: `import { Spinner } from '@patternfly/react-core'; `,
+ errors: [{
+ message: `Spinner isSVG prop default value has changed from false to true.`,
+ type: "JSXOpeningElement",
+ }]
+ }
+ ]
+});
diff --git a/packages/pf-codemods/README.md b/packages/pf-codemods/README.md
index 5104dd74a..f0188cfe8 100644
--- a/packages/pf-codemods/README.md
+++ b/packages/pf-codemods/README.md
@@ -182,15 +182,15 @@ In:
```jsx
```
@@ -198,13 +198,13 @@ Out:
```jsx
```
@@ -271,6 +271,24 @@ Out:
```
+### spinner-svg-default [(#8183)](https://github.com/patternfly/patternfly-react/pull/8183)
+
+We've updated the Spinner to default to an svg, so the `isSVG` property is no longer required.
+
+#### Examples
+
+In:
+
+```jsx
+
+```
+
+Out:
+
+```jsx
+
+```
+
### toggle-remove-isprimary [(#8179)](https://github.com/patternfly/patternfly-react/pull/8179)
We've removed the deprecated `isPrimary` prop. This rule wil replace it with the "primary" value on the `toggleVariant` prop.