Repository navigation
Upgrade to MUI 9 and MUI X 9 - #706
Merged
Merged
Conversation
This was referenced Oct 25, 2026
This was referenced Oct 28, 2026
This was referenced Nov 5, 2026
Merged
barborico
added a commit
that referenced
this pull request
Nov 5, 2026
The MUI 9 upgrade (#706) renamed handlers and dropped default props on components above an existing button-in-button warning on the home page, so the warning's component stack differed between the two sides and the visual diff reported it as new. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
I ran the visual diff from #740 against this branch (merge base 73b684b vs. a8a3f42). It reported no new console, network, or render errors. Two screenshot changes look like regressions:
Smaller changes that look like MUI 9 defaults rather than bugs:
Nothing else differed beyond antialiasing noise. 🤖 Generated with Claude Code |
Bumps @mui/material and @mui/icons-material to ^9.5.0, and @mui/x-data-grid and @mui/x-date-pickers to ^9.16.0. The Dependabot group alone could not install: @mui/lab 7 peers on @mui/material 7 and react-hook-form-mui 7 peers on icons-material <8, so npm ci failed with ERESOLVE in every Node job. @mui/lab moves to 9.0.0-beta.10 and react-hook-form-mui to 9.0.1, the releases that pair with MUI 9. MUI 9 emits relative :has() selectors, which the jsdom 30 already on main understands. Source changes come from the official codemods (v7.0.0/grid-props, v9.0.0/system-props, deprecations/all, and the MUI X v8/v9 preset-safe sets), plus hand fixes: - DateRange: port the custom button field to the v8+ field API (usePickerContext for open state and the popper anchor), and mark the range end through PickerDay's `selected` prop since the Mui-selected class no longer drives the selected style. - HelpOutline and CheckCircleOutline were dropped from icons-material; use their Outlined equivalents. - Checkbox inputProps becomes slotProps.input. - Grid is now gap-based, so the tag constraint matrix and the Home divider's padding overrides are restated as the equivalent offsets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The system-props codemod rewrote `<LinkIcon fontSize="small" />` on the
Home page as `sx={{fontSize: 'small'}}`. On an SvgIcon the prop selects
the 20px size, but in `sx` it is the CSS keyword `small` (13px), so the
"Access User Guides" link icons shrank.
MUI 9's Typography no longer passes an arbitrary `color` value through
as CSS, so `color="grey"` on the empty-table "None" placeholder and the
lifecycle plugin description rendered in the default text colour. Move
it to `sx`, which still resolves `grey` to the CSS colour (128, 128,
128) the pages rendered before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
barborico
force-pushed
the
brynna/deps_mui_stack
branch
from
November 5, 2026 03:03
8315298 to
ce388f6
Compare
barborico
marked this pull request as ready for review
November 5, 2026 03:03
…_stack # Conflicts: # package-lock.json # package.json
Jeff-Rowell
reviewed
Nov 5, 2026
MUI 9 shrinks ListItemIcon's default min-width from 56px to 36px, which pulled every sidebar label 20px left towards its icon on every page. Restore 56px in the theme. QuickSwitcher sets its own 36px and is unaffected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Thanks for running it. MUI 9 shrinks A rerun of |
Jeff-Rowell
approved these changes
Nov 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Summary
Upgrades MUI 6 → 9 and MUI X 7 → 9.17, with @mui/lab 9 and react-hook-form-mui 9. Most of the code changes come from the official codemods. This supersedes Dependabot's #651 and #714.
Urgency: LOW: patches no open security advisories.
Expected review effort: low - medium, <15 min; there's no reason to review the code diff, but this is a great opportunity to play with the new visual diff tool from #740
Motivation
Every #651 job broke at the same
npm cipeer-dependency error, and #714 repeats its@mui/labchoice:@mui/lab7.0.0-beta.17, which needs@mui/material7.react-hook-form-mui7.6.2, which isn't in the@mui/*group, needs@mui/icons-material <8.Description of Changes
@mui/x-data-gridand@mui/x-date-pickers^9.16.0,@mui/lab ^9.0.0-beta.10andreact-hook-form-mui ^9.0.1. jsdom stays at 30 from Bump frontend test tools: vitest 5, jsdom 30, testing-library 16 #704. MUI 9's relative:has(> &)CSS breaks jsdom 26.@mui/codemod:v7.0.0/grid-props,v9.0.0/system-propsanddeprecations/all.@mui/x-codemod:v8.0.0/preset-safeandv9.0.0/preset-safe.@mui/codemod9.5.0 CLI crashes.DateRange.tsx: the custom button field is ported to the v8+ API (usePickerContext,useForkRef). The range end is marked with PickerDay'sselectedprop.HelpOutlineandCheckCircleOutlineicons were removed in v9, so they become*Outlined.inputPropsbecomesslotProps.input.<LinkIcon fontSize="small" />inHome.tsxkeeps thefontSizeprop, which the system-props codemod had moved intosx, wheresmallmeans 13px instead of 20px.color="grey"on Typography moves intosxinEmptyListEntryandAppGroupLifecyclePluginData, because MUI 9's Typography no longer passes it through as CSS.ListItemIcon's defaultmin-widthfrom 56px to 36px, which moved every sidebar label 20px towards its icon. The theme inApp.tsxrestores 56px.tags/CreateUpdate.tsxandHome.tsxare restated as equivalent offsets.Validation of Changes
npm ci,tsc --noEmit(0 errors on TS 5.3.3),prettier --check .,vitest run(205/205),vite build,npm ls: all pass.npm run visual-difffrom Add an opt-in visual diff of every frontend page #740, comparing the merge base (73b684b) witha8a3f42. No new console, network, or render errors. It found these regressions, all fixed:<LinkIcon fontSize="small" />inHome.tsxintosx={{fontSize: 'small'}}. On anSvgIconthe prop means 20px, but insxit's the CSS keywordsmall(about 13px), so the "Access User Guides" icons shrank and the accordion rows got shorter. With the prop restored, the icon renders at 20px again.EmptyListEntry's<Typography color="grey">rendered in the default text colour on the user, group, role, tag, request, and app pages.AppGroupLifecyclePluginDataused the samecolor="grey". Both now set it insx, which rendersrgb(128, 128, 128)as before;text.secondarywould have changed the colour.3e670e6by restoring the 56px icon column.3e670e6against the merge base2b0d4dareports no changed pages and no new errors.Guidance for Reviewers
Grid direction="column"containers are only partly supported by the new Grid.aria-label; its visible text labels it.main.src/files is codemod output.🤖 Generated with Claude Code