PatternFly 6 upgrade

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.

DescriptionPR link
Accordion contentReactThe `isHidden` prop has been removed from AccordionContent, as its visibility will now be set automatically based on the `isExpanded` prop on AccordionItem.#9876Yes
Accordion itemReactThe markup for AccordionItem has been updated, and it now renders a `div` element as a wrapper.#9876No
Accordion toggleReactThe `isExpanded` prop for AccordionToggle has been moved to AccordionItem.#9876Yes
AllReactCodemods 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
    AvatarReactThe `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.#9881Yes
    BannerReactThe `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.#9891Yes
    ButtonReactIcons 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.#10663Yes
    ButtonReactisActive prop for Button has been renamed to isClicked#9934Yes
    CardReactProps related to raised or clickable cards have been removed.#10056Yes
    CardReactThe 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.#10859Yes
    CheckboxReactThe `isLabelBeforeButton` prop in Checkbox and Radio has been replaced with `labelPosition="start"`#10016Yes
    ChipReactChip has been deprecated. Running the fix flag will update your imports to our deprecated package, but we suggest using Label instead.#10049Yes
    ChipReactChip has been deprecated. Running the fix flag will replace Chip and ChipGroup components with Label and LabelGroup components respectively.#10049Yes
    Color propsReactThe `color` prop on Banner and Label has been updated to replace "cyan" with "teal" and "gold" with "yellow".#10661Yes
    Content headerReact-component-groupsIn react-component-groups, we've renamed ContentHeader component to PageHeader#313Yes
    Data list actionReactThe `isPlainButtonAction` prop has been removed from DataListAction as a wrapper is no longer needed.#10939Yes
    Deprecated componentsReactSome deprecated components have been removed from PatternFly#10345No
    Drag dropReactDragDrop 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.#10181Yes
    DrawerReactThe `hasNoPadding` prop has been removed from DrawerHead.#10036Yes
    DrawerReactThe "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.#10017Yes
    Drawer contentReactThe "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.#10211Yes
    Drawer headReactDrawerPanelBody is no longer rendered internally to DrawerHead. We recommend using these components independent of one another and to not pass DrawerPanelBody to DrawerHead.#10036No
    Dual list selectorReactOur previous implementation of DualListSelector has been deprecated. Codemods will update import paths to our deprecated directory, but we recommend using our newly promoted implementation.#10359Yes
    Dual list selector nextReactOur Next implementation of DualListSelector has been promoted as our recommended implementation. Codemods will update import paths.#10359Yes
    Duplicate importsReactDuplicate import specifiers should be removed. This is a cleanup codemod which runs after other codemods.
      Yes
      Empty stateReactEmptyStateHeader and EmptyStateIcon are no longer exported by PatternFly. Codemods will apply fixes for exports of these components.#10364Yes
      Empty state headerReactEmptyStateHeader 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.#9947Yes
      Error stateReact-component-groupsIn react-component-groups, we've renamed some ErrorState props to comply with its base component, EmptyState.#145Yes
      Form filed group header title text objectReactThere was a typo in FormFiledGroupHeaderTitleTextObject interface. It was renamed to the intended FormFieldGroupHeaderTitleTextObject.#10016Yes
      Form groupReactThe `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.#10016Yes
      Helper text itemReactThe `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.#10029Yes
      Helper text itemReactThe `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.#10029No
      Invalid objectReact-component-groupsIn react-component-groups, we've renamed InvalidObject's props `invalidObjectTitleText` to `titleText` and `invalidObjectBodyText` to `bodyText`.#145Yes
      Jump links itemReactThe `href` prop on JumpLinksItem is now required.#10027No
      Jump links itemReactThe 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>`).#10027No
      Kebab toggleReactKebabToggle 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.#10345Yes
      LabelReactThe `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).#10037Yes
      Log snippetReact-component-groupsIn react-component-groups, we've renamed LogSnippet's prop leftBorderVariant to variant and replaced LogSnippetBorderVariant enum with PatternFly's AlertVariant enum.#145Yes
      Log viewerReactThe 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.#70No
      Login main footer links itemReactLoginMainFooterLinksItem structure has changed. Instead of passing it many properties, everything is now passed in a children component directly.#10107Yes
      Login main headerReactThe markup for LoginMainHeader which is used internally within LoginPage has been updated, now using a `div` wrapper instead of a `header` element wrapper.#10880No
      MastheadReactOur 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.#10809Yes
      MastheadReactWe've removed the `backgroundColor` prop from Masthead as theming is no longer handled React-side.#9774Yes
      MastheadReactThe structure of Masthead has been updated, MastheadToggle and MastheadBrand should now be wrapped in MastheadMain.#10809Yes
      Menu item actionReactThe 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.#10089No
      Menu toggleReactWe 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.#10097Yes
      Missing pageReactIn react-component-groups, we've renamed InvalidObject component to MissingPage#313Yes
      ModalReactOur previous implementation of Modal has been deprecated. Codemods will update import paths to our deprecated directory, but we recommend using our newly promoted implementation.#10358Yes
      Modal nextReactOur Next implementation of Modal has been promoted as our recommended implementation. Codemods will update import paths.#10358Yes
      Multi content cardReact-component-groupsThe `leftBorderVariant` and `withHeaderBorder` props have been removed from MultiContentCard.#145Yes
      NavReactThe "tertiary" Nav variant is no longer supported. Use `variant="horizontal-subnav"` instead.#9948Yes
      NavReactThe `theme` prop is no longer supported in Nav. Use light/dark mode theming instead.#9948Yes
      Nav itemReactThe `hasNavLinkWrapper` prop has been removed from NavItem. Additionally, any icons for a NavItem should be passed to its new `icon` prop.#10687Yes
      Not authorizedReact-component-groupsIn react-component-groups, we've renamed NotAuthorized's props `description` to `bodyText` and `title` to `titleText`.#145Yes
      Notification badgeReactThe markup for NotificationBadge has changed, as it now uses stateful button internally.#10020No
      Notification drawer headerReactNotificationDrawerHeader no longer uses our Text component internally, and instead renders a native `h1` element.#10378No
      PageReactWe've renamed the `header` prop for Page to `masthead`.#10454Yes
      PageReactWe've renamed the `isTertiaryNavGrouped` prop to `isHorizontalSubnavGrouped`.#9948Yes
      PageReactWe've renamed the `isTertiaryNavWidthLimited` prop to `isHorizontalSubnavWidthLimited`.#9948Yes
      PageReactWe've renamed the `tertiaryNav` prop to `horizontalSubnav`.#9948Yes
      PageReactThe markup for Page has changed. When either the `horizontalSubnav` or `breadcrumb` props are passed, a PageBody component will always wrap the contents.#10650No
      Page breadcrumb and sectionReactThe `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.#10650Yes
      Page header tools itemReactThe `isSelected` prop has been removed from PageHeaderToolsItem.#9774Yes
      Page navigationReactThe PageNavigation component has been removed from PatternFly.#10650Yes
      Page sectionReactThe "nav" type for PageSection has been removed.#10650Yes
      Page sectionReactThe `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".#9774Yes
      Page sectionReactClasses from the `variant` prop will now only be applied to PageSection when the `type` prop has a value of "default".#9848No
      Page sidebarReactThe `theme` prop has been removed from PageSidebar as theming is no longer handled React-side.#9774Yes
      PaginationReactThe markup for Pagination has changed. There is now a wrapper element rendered around the PaginationOptionsMenu toggle.#10662No
      PopperReactThe default value of appendTo on Dropdown, Select, and Popper has been updated to `document.body`.#10675No
      Simple file uploadReactThe `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.#10026No
      Slider stepReactThe `--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.#10378No
      SwitchReactThe `labelOff` prop has been removed from Switch. The label for a Switch should not dynamically update based on the on/off state.#10646Yes
      TabsReactThe `isSecondary` prop for Tabs has been renamed to `isSubtab`.#10044Yes
      TabsReactThe "light300" value for the `variant` prop on Tabs has been replaced with the "secondary" value.#9930Yes
      TabsReactThe markup for the Tabs scroll buttons have been updated#10044No
      TextReactWe 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.#10643Yes
      ThReactThe `--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.#10378No
      TileReactTile 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.#10821Yes
      TokensReactReact tokens, whose value is a Patternfly token variable (with prefix --pf-t), are now prefixed with t_#11002Yes
      TokensReactWe 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
        ToolbarReactA number of props have been removed from Toolbar components#10674Yes
        ToolbarReactSeveral Chip-based props have been renamed on our Toolbar components#10649Yes
        ToolbarReactSome Toolbar interfaces / components have been renamed#10649Yes
        ToolbarReactThe `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.#10418Yes
        ToolbarReactThe 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.#10366Yes
        Toolbar chip group contentReactThe ToolbarChipGroupContent component has been renamed to ToolbarLabelGroupContent.#10649Yes
        Toolbar groupReactThe `variant` prop of ToolbarGroup and ToolbarToggleGroup had some options renamed.#10674Yes
        Toolbar itemReactThe variant prop for ToolbarItem has been updated: "bulk-select", "overflow-menu" and "search-filter" were removed and "chip-group" was renamed to "label-group".#10649Yes
        Toolbar label group contentReactThe 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.#10674No
        Tree viewReactSelectable 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.#10101No
        Unauthorized accessReactIn react-component-groups, we've renamed NotAuthorized component to UnauthorizedAccess#313Yes
        Unavailable contentReact-component-groupsIn 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.#244Yes
        Unavailable contentReact-component-groupsThe UnavailableContent component of React Component Groups has had the `unavailableTitleText` prop renamed to `titleText`.#145Yes
        Unused importsReactPatternFly imports that are unused imports should be removed.
          Yes
          Wizard footerReactThe default WizardFooter now uses an ActionList wrapped around our Button components, rather than just our Button components.#10378No
          Wizard nav itemReactThere 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.#10378No
          Wizard stepReactThe `body` prop on WizardStep no longer accepts a value of "null".#10637Yes