diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 49a1f52e38f489..72b9156562868a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -174,6 +174,7 @@ packages/react-components/react-progress @microsoft/cxe-red @tomi-msft
packages/react-components/react-persona @microsoft/cxe-red @sopranopillow
packages/react-components/react-avatar-context @microsoft/teams-prg
packages/react-components/react-infobutton @microsoft/cxe-red @sopranopillow
+packages/react-migration-v8-v9 @microsoft/cxe-coastal @geoffcoxmsft
# <%= NX-CODEOWNER-PLACEHOLDER %>
diff --git a/apps/public-docsite-v9/.storybook/main.js b/apps/public-docsite-v9/.storybook/main.js
index b1cec15df3610a..a9ba66ecd41ff7 100644
--- a/apps/public-docsite-v9/.storybook/main.js
+++ b/apps/public-docsite-v9/.storybook/main.js
@@ -8,6 +8,7 @@ module.exports = /** @type {Omit
@@ -71,18 +70,3 @@ To migrate a button replace the v8 usage with the corresponding v9 button varian
| theme | (use FluentProvider) |
| toggle | (use ToggleButton) |
| uniqueId | HTML key |
-
-## Button Shims
-
-The button shim components accept v8 `IButtonProps` and render v9 buttons.
-Shims are useful when you have a large number of usage instances, want to render v9 components, and do not have time
-or resources to update every instance.
-
-Prefer to migrate your code to use v9 buttons if possible rather than take a use shims.
-Shim depend on both v8 and v9 so may prevent bundle size optimizations.
-
-You can find the button shims in the Fluent UI React repository here [apps/public-docsite-v9/src/shims/ButtonShim.tsx](https://github.com/microsoft/fluentui/blob/master/apps/public-docsite-v9/src/shims/ButtonShim.tsx)
-
-
diff --git a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ActionButtonShimExample.tsx b/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ActionButtonShimExample.tsx
deleted file mode 100644
index cecc63c686ab4f..00000000000000
--- a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ActionButtonShimExample.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import * as React from 'react';
-import { ActionButton, IButtonProps, Icon, IIconProps } from '@fluentui/react';
-import { Button, webLightTheme, FluentProvider } from '@fluentui/react-components';
-import { ActionButtonShim } from '../../../../../shims/ButtonShim';
-
-const addIcon: IIconProps = { iconName: 'Add' };
-
-export const ActionButtonShimExample = (props: IButtonProps) => {
- return (
- <>
- Action
-
- Action
-
-
- }>
- Action
-
-
- >
- );
-};
diff --git a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ButtonShimExamples.tsx b/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ButtonShimExamples.tsx
deleted file mode 100644
index a3d691324a7bad..00000000000000
--- a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ButtonShimExamples.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import * as React from 'react';
-import { makeStyles, shorthands } from '@fluentui/react-components';
-import { ActionButtonShimExample } from './ActionButtonShimExample';
-import { CommandButtonShimExample } from './CommandButtonShimExample';
-import { CompoundButtonShimExample } from './CompoundButtonShimExample';
-import { DefaultButtonShimExample } from './DefaultButtonShimExample';
-import { MenuButtonShimExample } from './MenuButtonShimExample';
-import { PrimaryButtonShimExample } from './PrimaryButtonShimExample';
-import { ToggleButtonShimExample } from './ToggleButtonShimExample';
-
-const useStyles = makeStyles({
- root: {
- display: 'grid',
- gridTemplateColumns: 'auto auto auto auto',
- gridTemplateRows: 'repeat(7, 1fr)',
- width: 'fit-content',
- alignContent: 'center',
- alignItems: 'center',
- justifyItems: 'center',
- columnGap: '10px',
- rowGap: '10px',
- },
- componentName: {
- justifySelf: 'end',
- ...shorthands.margin(0, '10px', 0, 0),
- },
-});
-
-export const ButtonShimExamples = () => {
- const styles = useStyles();
-
- return (
-
-
Component
-
v8
-
shim
-
v9
-
ActionButton
-
-
DefaultButton
-
-
CommandButton
-
-
CompoundButton
-
-
MenuButton
-
-
PrimaryButton
-
-
ToggleButton
-
-
- );
-};
diff --git a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/CommandButtonShimExample.tsx b/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/CommandButtonShimExample.tsx
deleted file mode 100644
index dc1aa9c086a280..00000000000000
--- a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/CommandButtonShimExample.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import * as React from 'react';
-import { CommandButton, IButtonProps, Icon, IIconProps } from '@fluentui/react';
-import { Button, webLightTheme, FluentProvider } from '@fluentui/react-components';
-import { CommandButtonShim } from '../../../../../shims/ButtonShim';
-
-const addIcon: IIconProps = { iconName: 'Add' };
-
-export const CommandButtonShimExample = (props: IButtonProps) => {
- return (
- <>
- Command
-
- Command
-
-
- }>
- Command
-
-
- >
- );
-};
diff --git a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/CompoundButtonShimExample.tsx b/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/CompoundButtonShimExample.tsx
deleted file mode 100644
index cd734bd378ab09..00000000000000
--- a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/CompoundButtonShimExample.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from 'react';
-import { CompoundButton as CompoundButtonV8, IButtonProps } from '@fluentui/react';
-import { CompoundButton as CompoundButtonV9, webLightTheme, FluentProvider } from '@fluentui/react-components';
-import { CompoundButtonShim } from '../../../../../shims/ButtonShim';
-
-export const CompoundButtonShimExample = (props: IButtonProps) => {
- return (
- <>
- Compound
-
- Compound
-
-
- Compound
-
- >
- );
-};
diff --git a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/DefaultButtonShimExample.tsx b/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/DefaultButtonShimExample.tsx
deleted file mode 100644
index 80e0557367a6b7..00000000000000
--- a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/DefaultButtonShimExample.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from 'react';
-import { DefaultButton, IButtonProps } from '@fluentui/react';
-import { Button, webLightTheme, FluentProvider } from '@fluentui/react-components';
-import { DefaultButtonShim } from '../../../../../shims/ButtonShim';
-
-export const DefaultButtonShimExample = (props: IButtonProps) => {
- return (
- <>
- Default
-
- Default
-
-
-
-
- >
- );
-};
diff --git a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/PrimaryButtonShimExample.tsx b/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/PrimaryButtonShimExample.tsx
deleted file mode 100644
index 372bc892a59d9d..00000000000000
--- a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/PrimaryButtonShimExample.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from 'react';
-import { PrimaryButton, IButtonProps } from '@fluentui/react';
-import { Button, webLightTheme, FluentProvider } from '@fluentui/react-components';
-import { PrimaryButtonShim } from '../../../../../shims/ButtonShim';
-
-export const PrimaryButtonShimExample = (props: IButtonProps) => {
- return (
- <>
- Primary
-
- Primary
-
-
-
-
- >
- );
-};
diff --git a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ToggleButtonShimExample.tsx b/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ToggleButtonShimExample.tsx
deleted file mode 100644
index 3f6f02eb2b35e3..00000000000000
--- a/apps/public-docsite-v9/src/Concepts/Migration/FromV8/Components/Button/ToggleButtonShimExample.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-/* eslint-disable react/jsx-no-bind */
-import * as React from 'react';
-import { DefaultButton, IButtonProps, Icon, IIconProps, initializeIcons } from '@fluentui/react';
-import { webLightTheme, FluentProvider, ToggleButton } from '@fluentui/react-components';
-import { ToggleButtonShim } from '../../../../../shims/ButtonShim';
-
-initializeIcons();
-
-const volume0Icon: IIconProps = { iconName: 'Volume0' };
-const volume3Icon: IIconProps = { iconName: 'Volume3' };
-
-export const ToggleButtonShimExample = (props: IButtonProps) => {
- const [muted1, setMuted1] = React.useState(false);
- const [muted2, setMuted2] = React.useState(false);
- const [muted3, setMuted3] = React.useState(false);
-
- return (
- <>
- setMuted1(!muted1)}
- />
-
- setMuted2(!muted2)}
- />
-
-
- : }
- onClick={() => setMuted3(!muted3)}
- >
- Toggle
-
-
- >
- );
-};
diff --git a/apps/public-docsite-v9/src/shims/ButtonShim.tsx b/apps/public-docsite-v9/src/shims/ButtonShim.tsx
deleted file mode 100644
index 6f3f011c42098a..00000000000000
--- a/apps/public-docsite-v9/src/shims/ButtonShim.tsx
+++ /dev/null
@@ -1,174 +0,0 @@
-import * as React from 'react';
-
-import { IBaseButtonProps, IButtonProps, Icon } from '@fluentui/react';
-
-import {
- Button,
- ButtonProps,
- CompoundButton,
- CompoundButtonProps,
- Menu,
- MenuButton,
- MenuButtonProps,
- MenuList,
- MenuPopover,
- MenuTrigger,
- ToggleButton,
- ToggleButtonProps,
-} from '@fluentui/react-components';
-import { MenuItemShim, shimMenuProps } from './MenuShim';
-
-const shimButtonProps = (props: IBaseButtonProps & React.RefAttributes): ButtonProps => {
- //TODO: Icon shim. This still renders the v8 icon.
- const icon = props.onRenderIcon ? (
- props.onRenderIcon(props)
- ) : props.iconProps ? (
-
- ) : undefined;
-
- const variantClassName = props.variantClassName ?? props.primary ? 'ms-Button--primary' : 'ms-Button--default';
- const className = [props.baseClassName, variantClassName, props.className].filter(Boolean).join(' ');
-
- return {
- // spread incoming props to propagate HTML properties not part of IBaseButtonProps
- ...props,
- appearance: props.primary ? 'primary' : undefined,
- className: className,
- disabled: props.disabled,
- disabledFocusable: props.allowDisabledFocus,
- 'aria-hidden': props.ariaHidden,
- 'aria-label': props.ariaLabel,
- icon,
- key: props.key || props.uniqueId,
- children: props.onRenderChildren
- ? props.onRenderChildren(props)
- : props.onRenderText
- ? props.onRenderText(props)
- : props.text || props.children,
- } as ButtonProps;
-};
-
-export const ButtonShim: React.ForwardRefExoticComponent<
- IBaseButtonProps & React.RefAttributes
-> = React.forwardRef((props, _ref) => {
- const shimProps = shimButtonProps(props);
-
- if (props.toggle) {
- return {props.children};
- }
- if (props.secondaryText || props.onRenderDescription?.(props)) {
- return ;
- }
-
- return