PatternFly 6 React breaking changes
This resource organizes the PatternFly 5 to PatternFly 6 change log in a table that allows for searching, filtering, and sorting. Note that this table does not contain a completely comprehensive list of changes, as it does not include information about dependency bumps and documentation updates.
Comprehensive PatternFly 6 release notes can be found on GitHub, in @patternfly/patternfly and @patternfly/react-core.
A summary of the changes from PatternFly 6 can be found in our release highlights.
Description | PR link | ||||
---|---|---|---|---|---|
Accordion content | React | The `isHidden` prop has been removed from AccordionContent, as its visibility will now be set automatically based on the `isExpanded` prop on AccordionItem. | #9876 | Yes | |
Accordion item | React | The markup for AccordionItem has been updated, and it now renders a `div` element as a wrapper. | #9876 | No | |
Accordion toggle | React | The `isExpanded` prop for AccordionToggle has been moved to AccordionItem. | #9876 | Yes | |
All | React | Codemods will remove `data-codemods` attributes and comments, which were introduced by our codemods in order to work correctly.You should run this codemod only once, after you finish running the codemods.This codemod can only run using the `--only data-codemods-cleanup` option. | Yes | ||
Avatar | React | The `border` prop has been removed from Avatar since theming is not longer handled React-side. We recommend using the `isBordered` prop instead to add a border to Avatar. | #9881 | Yes | |
Banner | React | The `variant` property has been removed from Banner. We recommend using our new `color` or `status` properties, depending on the original intent of the `variant` property. Codemods will either replace the `variant` property with the `color` property, or remove the `variant` property entirely, but additional updates may need to be made. | #9891 | Yes | |
Button | React | Icons must now be passed to the `icon` prop of Button instead of as children. Codemods will only update instances of a Button with `variant="plain"` passed in, but you must ensure you are only passing an icon in such instances before running the fix. | #10663 | Yes | |
Button | React | isActive prop for Button has been renamed to isClicked | #9934 | Yes | |
Card | React | Props related to raised or clickable cards have been removed. | #10056 | Yes | |
Card | React | The markup for clickable-only cards has been updated. Additionally, the `selectableActions.selectableActionId` and `selectableActions.name` props are no longer necessary to pass to CardHeader for clickable-only cards. Passing them in will not cause any errors, but running codemods will remove them. | #10859 | Yes | |
Checkbox | React | The `isLabelBeforeButton` prop in Checkbox and Radio has been replaced with `labelPosition="start"` | #10016 | Yes | |
Chip | React | Chip has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Label instead. | #10049 | Yes | |
Chip | React | Chip has been deprecated. Running the fix flag will replace Chip and ChipGroup components with Label and LabelGroup components respectively. | #10049 | Yes | |
Color props | React | The `color` prop on Banner and Label has been updated to replace "cyan" with "teal" and "gold" with "yellow". | #10661 | Yes | |
Content header | React-component-groups | In react-component-groups, we've renamed ContentHeader component to PageHeader | #313 | Yes | |
Data list action | React | The `isPlainButtonAction` prop has been removed from DataListAction as a wrapper is no longer needed. | #10939 | Yes | |
Deprecated components | React | Some deprecated components have been removed from PatternFly | #10345 | No | |
Drag drop | React | DragDrop has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using our new drag and drop implementation (DragDropSort component), that lives in '@patternfly/react-drag-drop' package. | #10181 | Yes | |
Drawer | React | The `hasNoPadding` prop has been removed from DrawerHead. | #10036 | Yes | |
Drawer | React | The "light-200" value for the `colorVariant` prop has been replaced with the "secondary" value for DrawerContent, DrawerPanelContent, and DrawerSection components.Additionally, the `light200` property for the DrawerColorVariant enum has been replaced with the `secondary` property. | #10017 | Yes | |
Drawer content | React | The "no-background" value of the `colorVariant` prop on DrawerContent has been removed, and a new "primary" value has been added.Additionally, a new DrawerContentColorVariant enum has been added and should be used instead of the DrawerColorVariant enum. The fix when the DrawerColorVariant enum is being used will replace the `colorVariant` prop value with a string. | #10211 | Yes | |
Drawer head | React | DrawerPanelBody is no longer rendered internally to DrawerHead. We recommend using these components independent of one another and to not pass DrawerPanelBody to DrawerHead. | #10036 | No | |
Dual list selector | React | Our previous implementation of DualListSelector has been deprecated. Codemods will update import paths to our deprecated directory, but we recommend using our newly promoted implementation. | #10359 | Yes | |
Dual list selector next | React | Our Next implementation of DualListSelector has been promoted as our recommended implementation. Codemods will update import paths. | #10359 | Yes | |
Duplicate imports | React | Duplicate import specifiers should be removed. This is a cleanup codemod which runs after other codemods. | Yes | ||
Empty state | React | EmptyStateHeader and EmptyStateIcon are no longer exported by PatternFly. Codemods will apply fixes for exports of these components. | #10364 | Yes | |
Empty state header | React | EmptyStateHeader and EmptyStateIcon are now rendered internally within EmptyState and should only be customized using props. Content passed to the `icon` prop on EmptyState will also be wrapped by EmptyStateIcon automatically. | #9947 | Yes | |
Error state | React-component-groups | In react-component-groups, we've renamed some ErrorState props to comply with its base component, EmptyState. | #145 | Yes | |
Form filed group header title text object | React | There was a typo in FormFiledGroupHeaderTitleTextObject interface. It was renamed to the intended FormFieldGroupHeaderTitleTextObject. | #10016 | Yes | |
Form group | React | The `labelIcon` prop for FormGroup has been renamed to `labelHelp`. We recommend using FormGroupLabelHelp element for the labelHelp prop. The markup has also changed, we now wrap the labelHelp element in `<span className="pf-v6-c-form__group-label-help">`, so there is no need to add `className="pf-v6-c-form__group-label-help"` to the labelHelp element. | #10016 | Yes | |
Helper text item | React | The `hasIcon` and `isDynamic` props have been removed from HelperTextItem. An icon will now render automatically when the `variant` prop has a value other than "default" or when the `icon` prop is passed in. | #10029 | Yes | |
Helper text item | React | The `screenReaderText` prop on HelperTextItem has been updated, and will now render only when the `variant` prop has a value other than "default". Previously the prop was rendered only when the `isDynamic` prop was true. | #10029 | No | |
Invalid object | React-component-groups | In react-component-groups, we've renamed InvalidObject's props `invalidObjectTitleText` to `titleText` and `invalidObjectBodyText` to `bodyText`. | #145 | Yes | |
Jump links item | React | The `href` prop on JumpLinksItem is now required. | #10027 | No | |
Jump links item | React | The markup for JumpLinksItem has changed, as it now uses our Button component internally. Additionally, the `onClick` prop type has been updated to just `React.MouseEvent` (previously `React.MouseEvent<HTMLAnchorElement>`). | #10027 | No | |
Kebab toggle | React | KebabToggle has been removed from PatternFly. We recommend using our MenuToggle component instead. Codemods will replace most KebabToggle usage with a MenuToggle. Depending on the use-case, however, additional manual updates may be necessary, such as upgrading from our deprecated Dropdown implementation to our current one. | #10345 | Yes | |
Label | React | The `isOverflowLabel` prop for Label has been replaced with `variant="overflow"`. Codemods will replace an existing `variant` prop (which had no effect if `isOverflowLabel` was used). | #10037 | Yes | |
Log snippet | React-component-groups | In react-component-groups, we've renamed LogSnippet's prop leftBorderVariant to variant and replaced LogSnippetBorderVariant enum with PatternFly's AlertVariant enum. | #145 | Yes | |
Log viewer | React | The stylesheet for LogViewer has been moved out of the PatternFly package and into LogViewer itself. You may need to update stylesheet imports or import the stylesheet manually. | #70 | No | |
Login main footer links item | React | LoginMainFooterLinksItem structure has changed. Instead of passing it many properties, everything is now passed in a children component directly. | #10107 | Yes | |
Login main header | React | The markup for LoginMainHeader which is used internally within LoginPage has been updated, now using a `div` wrapper instead of a `header` element wrapper. | #10880 | No | |
Masthead | React | Our old implementation of `MastheadBrand` has been renamed to `MastheadLogo`, which must be wrapped by our new implementation of `MastheadBrand`. Codemods will handle the renaming and required restructuring. | #10809 | Yes | |
Masthead | React | We've removed the `backgroundColor` prop from Masthead as theming is no longer handled React-side. | #9774 | Yes | |
Masthead | React | The structure of Masthead has been updated, MastheadToggle and MastheadBrand should now be wrapped in MastheadMain. | #10809 | Yes | |
Menu item action | React | The markup for MenuItemAction has been updated. It now uses our Button component internally, has a wrapper around the action button, and no longer renders an icon wrapper inside the action button. | #10089 | No | |
Menu toggle | React | We now recommend passing any icon to the `icon` prop instead of passing it as children, such as for plain, icon only toggles. Passing an icon as children will result in incorrect styling. | #10097 | Yes | |
Missing page | React | In react-component-groups, we've renamed InvalidObject component to MissingPage | #313 | Yes | |
Modal | React | Our previous implementation of Modal has been deprecated. Codemods will update import paths to our deprecated directory, but we recommend using our newly promoted implementation. | #10358 | Yes | |
Modal next | React | Our Next implementation of Modal has been promoted as our recommended implementation. Codemods will update import paths. | #10358 | Yes | |
Multi content card | React-component-groups | The `leftBorderVariant` and `withHeaderBorder` props have been removed from MultiContentCard. | #145 | Yes | |
Nav | React | The "tertiary" Nav variant is no longer supported. Use `variant="horizontal-subnav"` instead. | #9948 | Yes | |
Nav | React | The `theme` prop is no longer supported in Nav. Use light/dark mode theming instead. | #9948 | Yes | |
Nav item | React | The `hasNavLinkWrapper` prop has been removed from NavItem. Additionally, any icons for a NavItem should be passed to its new `icon` prop. | #10687 | Yes | |
Not authorized | React-component-groups | In react-component-groups, we've renamed NotAuthorized's props `description` to `bodyText` and `title` to `titleText`. | #145 | Yes | |
Notification badge | React | The markup for NotificationBadge has changed, as it now uses stateful button internally. | #10020 | No | |
Notification drawer header | React | NotificationDrawerHeader no longer uses our Text component internally, and instead renders a native `h1` element. | #10378 | No | |
Page | React | We've renamed the `header` prop for Page to `masthead`. | #10454 | Yes | |
Page | React | We've renamed the `isTertiaryNavGrouped` prop to `isHorizontalSubnavGrouped`. | #9948 | Yes | |
Page | React | We've renamed the `isTertiaryNavWidthLimited` prop to `isHorizontalSubnavWidthLimited`. | #9948 | Yes | |
Page | React | We've renamed the `tertiaryNav` prop to `horizontalSubnav`. | #9948 | Yes | |
Page | React | The markup for Page has changed. When either the `horizontalSubnav` or `breadcrumb` props are passed, a PageBody component will always wrap the contents. | #10650 | No | |
Page breadcrumb and section | React | The `isWidthLimited` prop on PageBreadcrumb and PageSection will no longer determine whether the children of either component are wrapped in a PageBody. Instead the new `hasBodyWrapper` prop must be used. By default this new prop is set to true. Codemods will apply `hasBodyWrapper` with the same value as the `isWidthLimited` prop or false if `isWidthLimited` is not passed. | #10650 | Yes | |
Page header tools item | React | The `isSelected` prop has been removed from PageHeaderToolsItem. | #9774 | Yes | |
Page navigation | React | The PageNavigation component has been removed from PatternFly. | #10650 | Yes | |
Page section | React | The "nav" type for PageSection has been removed. | #10650 | Yes | |
Page section | React | The `variant` prop for PageSection now only accepts a value of "default" or "secondary". Codemods will remove the prop so it uses the default value of "default". | #9774 | Yes | |
Page section | React | Classes from the `variant` prop will now only be applied to PageSection when the `type` prop has a value of "default". | #9848 | No | |
Page sidebar | React | The `theme` prop has been removed from PageSidebar as theming is no longer handled React-side. | #9774 | Yes | |
Pagination | React | The markup for Pagination has changed. There is now a wrapper element rendered around the PaginationOptionsMenu toggle. | #10662 | No | |
Popper | React | The default value of appendTo on Dropdown, Select, and Popper has been updated to `document.body`. | #10675 | No | |
Simple file upload | React | The `aria-describedby` attribute was removed from the TextInput within the SimpleFileUpload, and the `id` attribute was removed from the "browse" button. Instead use the new `browseButtonAriaDescribedby` prop to provide a description to the browse button. | #10026 | No | |
Slider step | React | The `--pf-v6-c-slider__step--Left` CSS variable applied as an inline style has been updated to the `--pf-v6-c-slider__step--InsetInlineStart` CSS variable. | #10378 | No | |
Switch | React | The `labelOff` prop has been removed from Switch. The label for a Switch should not dynamically update based on the on/off state. | #10646 | Yes | |
Tabs | React | The `isSecondary` prop for Tabs has been renamed to `isSubtab`. | #10044 | Yes | |
Tabs | React | The "light300" value for the `variant` prop on Tabs has been replaced with the "secondary" value. | #9930 | Yes | |
Tabs | React | The markup for the Tabs scroll buttons have been updated | #10044 | No | |
Text | React | We have replaced Text, TextContent, TextList and TextListItem with one Content component. Running this fix will change all of those components names to Content and add a "component" prop where necessary. | #10643 | Yes | |
Th | React | The `--pf-v6-c-table__sticky-cell--Left` and `--pf-v6-c-table__sticky-cell--Right` CSS variables applied as inline styles when `isStickyColumn` is true have been updated to `--pf-v6-c-table__sticky-cell--InsetInlineStart` and `--pf-v6-c-table__sticky-cell--InsetInlineEnd`, respectively. | #10378 | No | |
Tile | React | Tile has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Card instead. There is a new Card example on our documentation showcasing how to set up a Card as a Tile. | #10821 | Yes | |
Tokens | React | React tokens, whose value is a Patternfly token variable (with prefix --pf-t), are now prefixed with t_ | #11002 | Yes | |
Tokens | React | We have updated our CSS tokens. About half of our tokens have been replaced with newer ones. - this rule provides an autofix for global non color tokens - global color tokens will be replaced with a temporary hot pink color token **that must be manually replaced** (`t_temp_dev_tbd` react token or `--pf-t--temp--dev--tbd` CSS variable) - other non-global (component or chart) tokens need to be replaced manually To find a suitable replacement token, check our [v6 token documentation](/tokens/all-patternfly-tokens). | Yes | ||
Toolbar | React | A number of props have been removed from Toolbar components | #10674 | Yes | |
Toolbar | React | Several Chip-based props have been renamed on our Toolbar components | #10649 | Yes | |
Toolbar | React | Some Toolbar interfaces / components have been renamed | #10649 | Yes | |
Toolbar | React | The `spacer` property has been removed from ToolbarGroup, ToolbarItem, and ToolbarToggleGroup. We recommend instead using our new `gap`, `columnGap`, or `rowGap` properties.Additionally, the `spaceItems` property has been removed from ToolbarGroup and ToolbarToggleGroup. | #10418 | Yes | |
Toolbar | React | The values for the `align` property on ToolbarGroup and ToolbarItem, and the `alignment` property on ToolbarToggleGroup, have been updated from "alignLeft" and "alignRight" to "alignStart" and "alignEnd", respectively. | #10366 | Yes | |
Toolbar chip group content | React | The ToolbarChipGroupContent component has been renamed to ToolbarLabelGroupContent. | #10649 | Yes | |
Toolbar group | React | The `variant` prop of ToolbarGroup and ToolbarToggleGroup had some options renamed. | #10674 | Yes | |
Toolbar item | React | The variant prop for ToolbarItem has been updated: "bulk-select", "overflow-menu" and "search-filter" were removed and "chip-group" was renamed to "label-group". | #10649 | Yes | |
Toolbar label group content | React | The markup for ToolbarLabelGruopContent (formerly ToolbarChipGroupContent) has changed when the `numberOfFilters` value is greater than 0, when the `showClearFiltersButton` prop is true, or when the `customLabelGroupContent` prop is passed. | #10674 | No | |
Tree view | React | Selectable styling attribute (`pf-m-selectable`) has been removed on the list items of the TreeView component. You should update selectors, tests and snapshot tests which are relying on the `pf-m-selectable` class. | #10101 | No | |
Unauthorized access | React | In react-component-groups, we've renamed NotAuthorized component to UnauthorizedAccess | #313 | Yes | |
Unavailable content | React-component-groups | In react-component-groups, we have replaced UnavailableContent's props `unavailableBodyPreStatusLinkText` and `unavailableBodyPostStatusLinkText` with one `bodyText` prop.Also status page link button has changed to a primary button. Consider capitalizing the `statusPageLinkText` prop. | #244 | Yes | |
Unavailable content | React-component-groups | The UnavailableContent component of React Component Groups has had the `unavailableTitleText` prop renamed to `titleText`. | #145 | Yes | |
Unused imports | React | PatternFly imports that are unused imports should be removed. | Yes | ||
Wizard footer | React | The default WizardFooter now uses an ActionList wrapped around our Button components, rather than just our Button components. | #10378 | No | |
Wizard nav item | React | There is now a wrapper element with class `pf-v6-c-wizard__nav-link-main` rendered around the nav item content. Additionally, when the nav item has a status of "error" the icon will be rendered before the item content, and the WizardToggle will also now render an error icon. | #10378 | No | |
Wizard step | React | The `body` prop on WizardStep no longer accepts a value of "null". | #10637 | Yes | |