What changed in Material UI from 7 to 9
9 releases numbered after v7.3.11 up to and including v9.4.0, stable releases only. v7.3.11 and v9.4.0 are the newest stable releases of 7 and 9 we track; this page follows them as new ones ship.
- 3 remove or deprecate something
100 changes across 9 releases
- Add theme.focusVisible opt-in keyboard focus ring across components
- Complete Traditional Chinese localization
- Add more unit tests for pagination
- Autocomplete announces its loading and no options messages through a new status slot
- Form Control Label has missing labelPlacementEnd class
- Menu Item includes aria-checked attribute for checkbox and radio menu items
- Table Pagination adds focus style to default InputBase used in Select
- Add support for data-* attributes on slotProps
- Add missing MuiPagination localization to zh-CN locale
- Add opt-in DataAttributesOverrides augmentation for slot props
- Support turbopack for docs
- Support for the prefers-reduced-motion setting
- Improved support for Windows High Contrast mode with the enhanceHighContrast theme wrapper
- Custom Transition component support in transitions
- Add internal useFormControlState hook
- Add border to switch component to make it visible in high contrast mode
- Replace deprecated clip CSS property with clip-path
- Use and document the row header cells in table
- Toggle Button Group keyboard navigation now follows the roving tabindex pattern
- Button Group respects global disableRipple and disableFocusRipple settings in grouped buttons
- Checkbox and Radio respect global disableRipple from MuiButtonBase defaultProps
- Modal replaces custom findIndexOf with findIndex
- v5.0.0/path-imports codemod transforms all style exports
- Improve Icon Dialog responsiveness on small screens
- Update Autocomplete fullWidth prop documentation
- Server-render InitColorSchemeScript in tests for React 19.3
- Update dependencies to resolve Dependabot security alerts
- Pin StackBlitz demo vite to v7 and plugin-react to v5
- Port codebase to use tsgo
- Run link checker during docs build instead of as separate CI step
- Badge now uses inline CSS variables for anchorOrigin and overlap positioning
- StepConnector is now included inside Step element
- Stepper now has proper support for vertical alternativeLabel
- Select now allows spacebar to select elements
- Select now supports typeahead when closed
- StepButton now chooses higher contrast ripple color for dark mode focus
- Use pointer events instead of mouse events in slider component
- Improve transitions performance and apply miscellaneous fixes
- Prevent sticky hover border on touch devices in buttongroup
- Preserve custom list padding when adjusting for the scrollbar in menulist
- Manage focus whenever first, last, next, or previous buttons become disabled in pagination
- Improve support for disabled button triggers in tooltip
- Fix resolveProps to correctly merge slotProps defined as functions
- Fix types for components extended with styled in styled-engine-sc
- Remove the aria-owns reference in autocomplete
- Fix wrong number of rows reported to screen readers in table
- Make tab panel focusable and show keep mounted examples in tabs
- Remove focusable links from hidden carousel slides in templates
- Manage focus on Open in Chat button click in docs
- Move focus to the main content with the skip link in docs
- Prevent exit transitions from getting stuck in transitions
- Include transforms in published package for codemod
- Fix typos in List Item Button component code
- Modal and Dialog fix scrollbar compensation in Shadow DOM
- Select fixes endAdornment overlapping the open indicator
- Prevent prototype pollution in cssVarsParser
- Codemod v5.0.0/path-imports does not leak state between files
- Guard display ref during mouse down in select component
- Fix invalid UTF-8 in skill references
- Don't submit forms when committing freeSolo value with Enter key in autocomplete
- Fix RTG import in ESM for transitions
- Fix script tag warning in Next.js 16 dev mode in InitColorSchemeScript
- Fix code-block copy button broken on direct page load
- Fix focus ripple lingering after blur in ButtonBase
- Mount child in Transition in same commit when opening from unmounted
- Prevent enableCssLayer styles from being overridden by unlayered styles in styled-engine
- Fix immutable cache headers for /_next/static assets in docs-infra
- Autocomplete now clears highlight when mouse leaves popup
- Autocomplete freeSolo controlled values no longer cleared by initial null
- Autocomplete item removal when it receives focus from VoiceOver before using Backspace
- Autocomplete guard against null inputRef during unmount
- Button customized flex gap styles
- Dialog unwanted DialogPaper focus ring
- Focus trap incorrect tab order when tabIndex is greater than or equal to 1
- Progress show runtime errors only once
- Tabs React 18 roving tabindex and dedupe invalid-value warning
- Timeline item extra ::before spacing when TimelineOppositeContent is present
- Tooltip prevent stuck-open tooltip when child becomes disabled
- Fix highlight sync and scroll preservation in Autocomplete
- Fix input value and clear in Autocomplete
- Fix iOS group scrollbar overflow in Autocomplete
- Fix popper rendering issues in Autocomplete
- Improve highlight tracking and selection state in Autocomplete
- Fix startIcon alignment in Button
- Remove duplicated className entries in Button, Button Base, FAB, Menu Item, and List Item Button
- Set aria-checked=mixed when Checkbox is indeterminate
- Fix initial focus target in Dialog, Drawer, and Focus Trap
- Fix swipe close flicker in Drawer
- Fix transition jump in Drawer
- Fix layout shift with display: flex in Input
- Prevent notched prop leaking into DOM in Input
- Place aria-label on the input element in Input Base
- Fix autofocus in SSR environment in Inputs
- Fix sticky subheader overlapping iOS scrollbar in List
- Persist positioning styles when popperOptions changes reference in Popper
- Stop using combobox element for labeling in Select
- Prevent prototype pollution in fastDeepAssign
Original release notes, newest first
The list above is our reading of these notes; the originals from MUI are here, one fold per release.
v9.4.0
A big thanks to the 19 contributors who made this release possible. Here are some highlights ✨:
- ♿️ Opt in to a consistent keyboard focus ring across components with the new
theme.focusVisible. - ♿️ The Tooltip now supports disabled button triggers without an extra wrapper element.
@mui/material@9.4.0
- [theme] Add
theme.focusVisibleopt-in keyboard focus ring (#48743) @siriwatknp - [buttongroup] Prevent sticky hover border on touch devices (#48993) @petr-kratochvil
- [l10n] Complete Traditional Chinese localization (#48946) @nrps9909
- [menulist] Preserve custom list padding when adjusting for the scrollbar (#48707) @creazyfrog
- [pagination] Manage focus whenever first / last / next / previous buttons become disabled (#48877) @silviuaavram
- [tooltip] Improve support for disabled button triggers (#48622) @mayank99
@mui/utils@9.4.0
- Fix resolveProps to correctly merge slotProps defined as functions (#48955) @mnajdova
- Replace deprecated
clipCSS property withclip-path(#48966) @ZeeshanTamboli
@mui/styled-engine-sc@9.4.0
- Fix types for components extended with styled (#45988) @megos
Docs
- Bump @docsearch/react to ^4.7.0 (#48886) @LukasTy
- Fix broken links reported by Ahrefs (#48949) @brijeshb42
- Manage focus on Open in Chat button click (#48942) @silviuaavram
- Move focus to the main content with the skip link (#48944) @lazerg
- Use relative link for LICENSE in README (#49040) @loulanyue
- [autocomplete] Remove the "aria-owns" reference (#48958) @silviuaavram
- [table] Fix wrong number of rows reported to screen readers (#47653) @seomsoo
- [table] Reference DataGrid link in the row header section (#48988) @silviuaavram
- [table] Use and document the row header cells (#48965) @silviuaavram
- [tabs] Make tab panel focusable and show keep mounted examples (#48939) @silviuaavram
- [templates] Remove focusable links from hidden carousel slides (#49003) @gonzoblasco
Core
- [code-infra] Fix team sync review requests (#48914) @brijeshb42
- [code-infra] Import the test globals from vitest (#49033) @JCQuintas
- [code-infra] Point the support validator link at frontend-public (#49041) @Janpot
- [code-infra] Update CircleCI orb (#49030) @Janpot
- [code-infra] Use ESM current directory syntax for Vitest config (#49032) @ZeeshanTamboli
- [core] Use @typescript/typescript6 for the docs tooling (#49025) @Janpot
- [core-docs] Remove the
globalSelectorstylis middleware (#49029) @Janpot - [test] Add an
assertionsmode to the axe regression harness (#48915) @michelengelen - [test] Automate the CSS-dependent WCAG criteria (#48936) @michelengelen
- [test] Fail the regression run when a webfont does not load (#48948) @LukasTy
- [test] Fix typo 'overriden' -> 'overridden' in Alert test comment (#48987) @FirmaSpring
- [test] Replace webfontloader with the CSS Font Loading API (#48995) @LukasTy
- [test] Skip the CrudDashboard VRT on React 18 (#49027) @Janpot
- [test] Use the shared loadFonts from @mui/internal-test-utils (#49007) @LukasTy
- [test] Use the Vitest global expect instead of importing chai (#48996) @JCQuintas
- [test][tooltip] Keep the disabled trigger away from the real pointer (#48947) @LukasTy
All contributors of this release in alphabetical order: @brijeshb42, @creazyfrog, @FirmaSpring, @gonzoblasco, @Janpot, @JCQuintas, @lazerg, @loulanyue, @LukasTy, @mayank99, @megos, @michelengelen, @mnajdova, @nrps9909, @petr-kratochvil, @seomsoo, @silviuaavram, @siriwatknp, @ZeeshanTamboli
v9.3.1
A big thanks to the 4 contributors who made this release possible.
@mui/material@9.3.1
- [transitions] Prevent exit transitions from getting stuck (#48881) @ZeeshanTamboli
@mui/codemod@9.3.1
- Include transforms in published package (#48934) @brijeshb42
Core
- [blog] Clarify early bird renewal discount scope (#48906) @DanailH
- [test][pagination] Add more unit tests (#48927) @silviuaavram
All contributors of this release in alphabetical order: @brijeshb42, @DanailH, @silviuaavram, @ZeeshanTamboli
v9.3.0
A big thanks to the 18 contributors who made this release possible. Here are some highlights ✨:
- ♿️ Keyboard navigation in the Toggle Button Group now follows the roving tabindex pattern.
- ♿️ The Autocomplete announces its loading and no options messages through a new
statusslot.
@mui/material@9.3.0
- [autocomplete] Wrap the no results and loading messages in an aria live region (#48690) @silviuaavram
- [buttongroup] Respect global disableRipple / disableFocusRipple in grouped buttons (#48762) @siriwatknp
- [checkbox][radio] Respect global disableRipple from MuiButtonBase defaultProps (#48795) @siriwatknp
- [formcontrollabel] Add missing
labelPlacementEndclass (#48843) @siriwatknp - [listitembutton] Fix typos in component code (#48868) @ZeeshanTamboli
- [menuitem] Add
aria-checkedfor checkbox and radio menu items (#48651) @siriwatknp - [modal] Replace custom findIndexOf with findIndex (#48827) @ZeeshanTamboli
- [modal][dialog] Fix scrollbar compensation in Shadow DOM (#48826) @ZeeshanTamboli
- [select] Fix endAdornment overlapping the open indicator (#48723) @siriwatknp
- [tablepagination] Add focus style to default InputBase used in Select (#48871) @silviuaavram
- [togglebuttongroup] Add roving tabindex keyboard navigation (#48849) @silviuaavram
@mui/system@9.3.0
- Prevent prototype pollution in cssVarsParser (#48822) @Janpot
@mui/codemod@9.3.0
- Don't leak state between files in v5.0.0/path-imports (#48797) @manbearwiz
- Remove use of eval() (#48701) @oliviertassinari
- Transform all style exports in
v5.0.0/path-importscodemod (#48800) @manbearwiz
Docs
- Clarify
containerprop inheritance for Shadow DOM (#48670) @Juan-C-Ceballos - Clarify third-party script risk in CSP unsafe-inline note (#48787) @Janpot
- Document
box-sx-propcodemod (#48888) @SR0725 - Document Grid direction column removal in v9 upgrade guide (#48880) @kalayciburak
- Fix color contrast in GitHub labels example (#48844) @silviuaavram
- Fix per-page canonical URL and stale SEO link (#48789) @brijeshb42
- Fix redirect loop on the Design Kits page (#48869) @Janpot
- Fix typo 'overriden' -> 'overridden' in CHANGELOG (#48785) @ZhouYinLong-lab
- Improve TransferList examples (#48845) @silviuaavram
- Link a new theme generator tool (#48847) @mansourcodes
- Remove broken learning resource links (#48598) @morning-verlu
- Update the 9.2.0 changelog (#48763) @silviuaavram
- [autocomplete] Clarify how to render custom start and end adornments (#48883) @DebadityaHait
- [drawer] Clarify clipped AppBar spacing (#48887) @rushijagani-dev
- [menu] Fix stale
selectedprop reference in Selected menu section (#48879) @LukasTy - [skeleton] Document preserving typography sizing with custom border radius (#48596) @meaqua9420
Core
- [blog] Fix caret annotation broken by Prettier wrapping (#48884) @bernardobelchior
- [code-infra] Automate team sync on about page (#48794) @brijeshb42
- [code-infra] Bump @mui/internal-code-infra to 0.0.4-canary.101 (#48878) @Janpot
- [code-infra] Fix Dependabot alerts (#48756) @Janpot
- [code-infra] Fix team sync PR creation (#48911) @brijeshb42
- [code-infra] Pin node version in publish CI (#48799) @brijeshb42
- [core-docs] Tighten service worker host check (#48581) @Janpot
- [docs-infra] Change branch name to the allowed one (#48910) @brijeshb42
All contributors of this release in alphabetical order: @bernardobelchior, @brijeshb42, @DebadityaHait, @Janpot, @Juan-C-Ceballos, @kalayciburak, @LukasTy, @manbearwiz, @mansourcodes, @meaqua9420, @morning-verlu, @oliviertassinari, @rushijagani-dev, @silviuaavram, @siriwatknp, @SR0725, @ZeeshanTamboli, @ZhouYinLong-lab
v9.2.0
A big thanks to the 9 contributors who made this release possible.
- ⚙️ Add support for
data-*attributes onslotProps.
@mui/material@9.1.3
- [l10n] Add missing MuiPagination localization to zh-CN locale (#48741) @greymoth-jp
- [select] Guard display ref during mouse down (#48744) @michelengelen
@mui/utils@9.1.3
- [utils] Add opt-in
DataAttributesOverridesaugmentation for slot props (#48554) @LukasTy
Docs
- [docs] Improve Icon Dialog responsiveness on small screens (#48639) @Prakash1185
- [docs] Fix invalid UTF-8 in skill references (#48739) @mturac
Core
- [code-infra] Resolve Renovate dashboard warnings (#48700) @Sushantplive
- [code-infra] Validate npm publishing through dry run (#48691) @brijeshb42
- [code-infra] Run prettier after renovate update (#48754) @Janpot
- [code-infra] Fix 'A11y results committed?' check on react-pinned nightly jobs (#48740) @Janpot
- [core] Remove leftover Joy UI references (#48719) @siriwatknp
- [code-infra] Bump react-router to 7.15.1 (#48725) @Janpot
- [docs-infra] Drive docs analytics IDs via ANALYTICS_ENV (#48694) @Janpot
- [docs-infra] Pre-render API page descriptions (#48693) @brijeshb42
- [code-infra][icons-material] Build lib/package.json with code-infra --no-expand (#48689) @Janpot
- [code-infra] Fix react@18/next nightly workflow (#48635) @Janpot
All contributors of this release in alphabetical order: @brijeshb42, @greymoth-jp, @Janpot, @LukasTy, @michelengelen, @mturac, @Prakash1185, @siriwatknp, @Sushantplive
v9.1.2
A big thanks to the 5 contributors who made this release possible.
@mui/material@9.1.2
- [autocomplete] Don't submit forms when committing
freeSolovalue with Enter key (#48679) @mj12albert - [transitions] Fix RTG import in ESM (#48645) @mj12albert
@mui/system@9.1.2
- [InitColorSchemeScript] Fix script tag warning in Next.js 16 dev mode (#48671) @siriwatknp
Docs
- Fix typos in release instructions (#48687) @brijeshb42
- Update @mui/x-* packages to latest (#48661) @Janpot
Core
- [code-infra] Convert leaf @mui/system .js+.d.ts pairs to TypeScript (part 1) (#48578) @Janpot
- [code-infra] Bump to latest code-infra packages (#48672) @brijeshb42
- [code-infra] Resolve remaining minimatch advisory (#48662) @Janpot
- [code-infra] Bump nx to resolve minimatch advisory (#48658) @Janpot
- [core] Drop @babel/* pnpm overrides (#48710) @Janpot
- [docs-infra] Revert "Pin StackBlitz demo vite to v7 and plugin-react to v5" (#48709) @Janpot
- [docs-infra] Fix code-block copy button broken on direct page load (#48653) @brijeshb42
- [test] Stabilize Data Grid demo data in Argos screenshots (#48654) @LukasTy
All contributors of this release in alphabetical order: @brijeshb42, @Janpot, @LukasTy, @mj12albert, @siriwatknp
v9.1.1
A big thanks to the 9 contributors who made this release possible.
@mui/material@9.1.1
- [Autocomplete] Update fullWidth prop documentation (#48626) @vipin8797
- [ButtonBase] Fix focus ripple lingering after blur (#48650) @siriwatknp
- [InitColorSchemeScript] Server-render in tests for React 19.3 (#48604) @Janpot
- [Transition] Mount child in same commit when opening from unmounted (#48649) @siriwatknp
@mui/styled-engine@9.1.1
- [styled-engine] Prevent enableCssLayer styles from being overridden by unlayered styles (#48603) @Janpot
Docs
- Send SOURCE to Brevo on newsletter subscribe (#48633) @aemartos
- fix TypeScript heading capitalization (#48619) @ifer47
- Remove outdated security section (#48628) @oliviertassinari
- [legal] Update EULA links on website (#48642) @rluzists1
Core
- Update dependencies to resolve Dependabot security alerts (#48641) @Janpot
- [core-docs] Pin StackBlitz demo vite to v7 and plugin-react to v5 (#48643) @Janpot
- [code-infra] Port codebase to use tsgo (#48616) @brijeshb42
- [docs-infra] Fix immutable cache headers for /_next/static assets (#48655) @brijeshb42
- [docs-infra] Run link checker during docs build instead of as separate CI step (#48634) @Janpot
- [docs-infra] Support turbopack for docs (#48569) @brijeshb42
- [test] Cover docs landing-page composites with Argos (#48589) @LukasTy
All contributors of this release in alphabetical order: @aemartos, @brijeshb42, @ifer47, @Janpot, @LukasTy, @oliviertassinari, @rluzists1, @siriwatknp, @vipin8797
v9.1.0
A big thanks to the 15 contributors who made this release possible. Here are some highlights ✨:
- ⚙️ Support for the prefers-reduced-motion setting.
- ♿️ Improved support for Windows High Contrast mode with the enhanceHighContrast theme wrapper.
@mui/material@9.1.0
- [autocomplete] Enable clearing highlight when mouse leaves popup (#48354) @mj12albert
- [autocomplete] Fix
freeSolocontrolled values cleared by initialnull(#48611) @mj12albert - [autocomplete] Fix item removal when it receives focus from VoiceOver before using Backspace (#48572) @silviuaavram
- [autocomplete] Fix
resetHighlightOnMouseLeaveJSdoc (#48536) @mj12albert - [autocomplete] Guard against null inputRef during unmount (#48617) @noam3127
- [badge] Add
aria-hiddento badge content and polish docs demos (#48471) @mj12albert - [badge] Use inline CSS variables for anchorOrigin/overlap positioning (#48549) @siriwatknp
- [button] Fix customized flex gap styles (#48542) @mj12albert
- [dialog] Fix unwanted
DialogPaperfocus ring (#48535) @mj12albert - [focus trap] Fix incorrect tab order when
tabIndex >= 1(#48546) @mj12albert - [progress] Show runtime errors only once (#48591) @silviuaavram
- [select] Allow spacebar to select elements (#48615) @silviuaavram
- [select] Support typeahead when closed (#48563) @mj12albert
- [step button] Choose higher contrast ripple color for dark mode focus (#48612) @silviuaavram
- [stepper] Include StepConnector inside Step element (#48492) @silviuaavram
- [stepper] Proper support for vertical alternativeLabel (#48485) @silviuaavram
- [tabs] Fix React 18 roving tabindex and dedupe invalid-value warning (#48605) @Janpot
- [theme] Add HighContrast theme enhancer (#48319) @silviuaavram
- [timeline item] Fix extra ::before spacing when TimelineOppositeContent is present (#46663) @tyalau
- [tooltip] Prevent stuck-open tooltip when child becomes disabled (#48606) @Janpot
- [transitions] Custom
Transitioncomponent (#48325) @mj12albert - [transitions] Support
prefers-reduced-motion(#48357) @mj12albert
@mui/utils@9.1.0
- [utils] Prevent prototype pollution in fastDeepAssign (#48580) @Janpot
Docs
- [docs] Add function
slotPropsdocumentation (#48574) @mj12albert - [docs] Clarify styled-components version compatibility (#48533) @nightt5879
- [docs] Fix broken URLs (#48520) @oliviertassinari
- [docs] Fix invalid JSON in Zed MCP setup example (#48490) @pavan-sh
- [docs] Mention release version for enhanceHighContrast (#48609) @silviuaavram
- [docs] Remove outdated MUI X v8 notification (#48600) @cherniavskii
- [docs] Remove redundant enhanceHighContrast information (#48632) @silviuaavram
- [docs-infra] Decrease loaded bundle size on docs (#48584) @brijeshb42
- [docs-infra] Drop multi-locale plumbing from API pages (#48370) @brijeshb42
- [docs-infra] Fix Cookie banner heading (#48529) @oliviertassinari
- [docs-infra] Infinitely cache all static assets (#48627) @brijeshb42
- [docs-infra] Remove outdated noSEOadvantage entries (#48527) @oliviertassinari
- [docs-infra] Restore build-only invariant throws via
NEXT_RUNTIMEguard (#48475) @Janpot - [docs-infra] Test HTML validation in broken links checker (#48088) @Janpot
- [docs][icons] Fix Font Awesome Chip demo in dark mode (#48576) @siriwatknp
- [docs][icons] Remove redundant font awesome demo (#48493) @ZeeshanTamboli
- [docs][modal] Add nested modal guidance (#46507) @JakeSaterlay
- [docs][stepper] Fix focus management in examples (#48494) @silviuaavram
Core
- Eslint markdown (#48371) @Janpot
- [agents] Fix some docs links (#48561) @silviuaavram
- [blog] Copy editing improvement on v9 announcement blog posts (#48543) @joserodolfofreitas
- [code-infra] Cleanup unused jss packages (#48590) @brijeshb42
- [code-infra] Collapse canary workflows into nightly and nightly-cron (#48556) @Janpot
- [code-infra] Convert @mui/private-theming to TypeScript (#48565) @Janpot
- [code-infra] Convert @mui/styled-engine to TypeScript (#48544) @Janpot
- [code-infra] Convert @mui/styled-engine-sc to TypeScript (#48577) @Janpot
- [code-infra] Fix duplicate resource_class in test_regressions CI job (#48601) @LukasTy
- [code-infra] Make @mui/internal-docs-utils compatible with TypeScript 6 (#48594) @Janpot
- [code-infra] Migrate CircleCI jobs to Gen2 resource classes (#48593) @LukasTy
- [code-infra] Parallelize visual regression screenshots (#48557) @Janpot
- [code-infra] Run nightly-cron on v7.x (#48579) @Janpot
- [core] Fix typescript@next typecheck (#48587) @Janpot
- [pnpm] Add security settings to pnpm-workspace.yaml (#48582) @Janpot
- [styled-engine-sc] Fix compatibility with Vite and Vitest (#48558) @mj12albert
- [test] Add axe-core tests for mui-material (#48341) @siriwatknp
- [test] Configure Tailwind CSS in the visual-regression app (#48575) @Janpot
All contributors of this release in alphabetical order: @brijeshb42, @cherniavskii, @JakeSaterlay, @Janpot, @joserodolfofreitas, @LukasTy, @mj12albert, @nightt5879, @noam3127, @oliviertassinari, @pavan-sh, @silviuaavram, @siriwatknp, @tyalau, @ZeeshanTamboli
v9.0.1
A big thanks to the 25 contributors who made this release possible.
@mui/material@9.0.1
- [accessibility] HighContrast mode on Avatar, Badge, Slider and Switch (#48320) @silviuaavram
- [autocomplete] Fix highlight sync and scroll preservation (#48322) @mj12albert
- [autocomplete] Fix input value and clear (#48263) @mj12albert
- [autocomplete] Fix iOS group scrollbar overflow (#48400) @oliviertassinari
- [autocomplete] Fix popper rendering issues (#48327) @mj12albert
- [autocomplete] Improve highlight tracking and selection state (#48219) @mj12albert
- [button] Fix
startIconalignment (#48332) @mj12albert - [button][button base] Document
typeattribute (#48146) @mj12albert - [button][fab][menu item][list item button] Remove duplicated className entries (#48213) @silviuaavram
- [checkbox] Set
aria-checked=mixedwhen indeterminate (#48147) @mj12albert - [circularprogress][linearprogress] Improve accessibility (#48172) @silviuaavram
- [dialog][drawer][focus trap] Fix initial focus target (#48280) @mj12albert
- [drawer] Fix swipe close flicker (#48372) @mj12albert
- [drawer] Fix transition jump (#48308) @mj12albert
- [focus trap] Remove IE 11-specific focus safety check from FocusTrap cleanup (#48368) @ZeeshanTamboli
- [form controls] Add internal
useFormControlStatehook (#48344) @mj12albert - [icon button] Remove unused color palette mapping in styles (#48353) @sai6855
- [icons] Revert to using wildcard export paths (#48381) @brijeshb42
- [input] Fix layout shift with display: flex (#43839) @oliviertassinari
- [input] Prevent
notchedprop leaking into DOM (#48281) @mj12albert - [input base] Place aria-label on the input element (#48283) @silviuaavram
- [inputs] Fix autofocus in SSR environment (#48290) @mj12albert
- [List] Fix sticky subheader overlapping iOS scrollbar (#48375) @sandeshdamkondwar
- [popper] Persist positioning styles when popperOptions changes reference (#48121) @mj12albert
- [select] Stop using combobox element for labeling (#48251) @silviuaavram
- [select] Support single-pointer-cycle selection and pointer cancellation (#48328) @mj12albert
- [switch] Fix incorrect
rolewithslotProps.input(#48469) @mj12albert - [tabs] Fix scrollable tabs blocking pointer events (#48166) @mj12albert
- [textfield] Fix autofill styles always in dark mode when CSS variables is used (#48244) @ZeeshanTamboli
- [tooltip] Simplify RTL styles using CSS logical properties (#48351) @sai6855
- [tooltip] Close Tooltip when its child becomes disabled (#44507) @chudesno
- [typography] Fix
h4variant when usingresponsiveFontSizes()(#48314) @mj12albert - [useMediaQuery] Fix crash in Firefox extension (#45196) @Mr-Quin
@mui/system@9.0.1
- [system] Fix theme mutation when using responsive typography shorthand in sx (#48266) @tomups
@mui/codemod@9.0.1
- [codemod] Add --jsx option to
v9.0.0/system-propscodemod (#48315) @siriwatknp - [codemod] Add packageName support to the v9 system props codemod (#48253) @franco-dias
@mui/utils@9.0.1
- [utils] Add shadow dom utils (#48256) @mj12albert
- [utils] Fix
resolvePropsreceiving empty string className (#48289) @SAY-5 - [utils] Remove unnecessary
excludeKeysfromextractEventHandlers(#48481) @ZeeshanTamboli
Docs
- [docs][autocomplete] Add demo with Tanstack Query
useInfiniteQuery(#48356) @mj12albert - [docs] Add agent skills for styling, theming, Next.js, and Tailwind CSS integrations (#48187) @mapache-salvaje
- [docs] Cleanup
@mui/base(#48278) @mj12albert - [docs] Fix create-playground script (#48380) @imazizbohra
- [docs] Fix date range calendar demo after MUI X v9 update (#48262) @LukasTy
- [docs] Fix icon search modal (#48255) @mj12albert
- [docs] Fix Material UI and MUI system "Upgrade to v9" docs (#48245) @ZeeshanTamboli
- [docs] Fix Popover JSdoc (#48310) @nitzan-treg
- [docs] Fix RTL toggle highlight in docs settings drawer (#48476) @sai6855
- [docs] Fix typos (#48155) @ayushshukla1807
- [docs] Fix typos (#48270) @pavan-sh
- [docs] Fix versions page (#48261) @mnajdova
- [docs] Fix vision grammar (#48477) @pavan-sh
- [docs] Improve accessibility for select examples (#48250) @silviuaavram
- [docs] Improve CSP guide with required directives (#48258) @Janpot
- [docs] Link to agent skills in relevant docs (#48387) @mapache-salvaje
- [docs] Make NumberField described by helper text (#48257) @silviuaavram
- [docs] Remove esm.sh references and endorsement (#44649) (#48330) @starboyvarun
- [docs] Remove generated CSS utility component doc (#48383) @mj12albert
- [docs] Remove incorrect message from experiments page and hide
/experimentsfrom crawlers (#48297) @ZeeshanTamboli - [docs] Remove outdated references of .ttf and .woff (#48399) @oliviertassinari
- [docs] Restore wider maxWidth for
disableTocpages (#48260) @LukasTy - [docs] Show v9 announcement banner (#48242) @mnajdova
- [docs] Sync team members from frontend-public endpoint (#48273) @Janpot
- [docs] Update AGENTS.md testing section (#48392) @mj12albert
- [docs] Update e2e test README and test error message (#48285) @ZeeshanTamboli
- [docs] Update menu examples to always have aria-expanded (#48211) @silviuaavram
- [docs] Update MUI Treasury links (#47760) @siriwatknp
- [docs] Update MUI X dependencies to v9.0.0 (#48231) @siriwatknp
- [docs] Update MUI X roadmap section (#48316) @siriwatknp
- [docs] Update WCAG links and version from 2.1 to 2.2 (#48379) @mj12albert
- [docs] Use
React.useId()for demo IDs (#48300) @Janpot
Core
- [blog] Introducing Material UI and MUI X v9 (#48157) @joserodolfofreitas
- [code-infra] bundle size check internal core docs (#48390) @Janpot
- [code-infra] Deduplicate vale script (#48385) @brijeshb42
- [code-infra] Fix type shadowing (#48389) @Janpot
- [code-infra] Migrate to vite from webpack for e2e tests (#48248) @brijeshb42
- [code-infra] Remove a few ts-ignore comments (#43265) @Janpot
- [code-infra] Remove no longer needed
eslint-import-resolver-webpackpackage (#48207) @ZeeshanTamboli - [code-infra] Remove references to @mui/base and @mui/joy (#48358) @brijeshb42
- [code-infra] Use vale rules from code-infra package (#48173) @brijeshb42
- [core] Remove next.mui.com links (#48240) @mnajdova
- [core-docs] Use type-only imports for type-only references (#48386) @JCQuintas
- [docs-infra] Add x-chat to MuiProductId type and product switcher (#48209) @hasdfa
- [docs-infra] Fix duplicate JSDoc in proptypes generation (#48304) @brijeshb42
- [docs-infra] Fix duplicate JSDoc in proptypes generation for merged declarations (#48296) @brijeshb42
- [docs-infra] Fix import of cjs react-simple-code-editor in esm (#48349) @brijeshb42
- [docs-infra] Fix tab index on Base UI tab (#48345) @brijeshb42
- [docs-infra] Migrate docs app container/frame components (#48182) @brijeshb42
- [docs-infra] Migrate MarkdownDocs component to docs package (#48227) @brijeshb42
- [docs-infra] Re-apply changes from previous revert (#48243) @brijeshb42
- [docs-infra] Remove infra around the i18n setup (#48360) @brijeshb42
- [docs-infra] Rename package to @mui/internal-api-docs-builder (#48230) @brijeshb42
- [docs-infra] Revert JSDoc in proptypes generation for merged declarations (#48301) @brijeshb42
- [docs-infra] Revert Migrate docs app container/frame components (#48239) @brijeshb42
- [docs-infra] Revert Migrate MarkdownDocs component to docs package (#48238) @brijeshb42
- [internal] Add missing #host-reference (#48226) @silviuaavram
- [internal] Move changelog and update security page for post v9 release (#48298) @siriwatknp
- [internal] Remove outdated .woff files (#48398) @oliviertassinari
- [test] Fix autocomplete test description (#48395) @ZeeshanTamboli
All contributors of this release in alphabetical order: @ayushshukla1807, @brijeshb42, @chudesno, @franco-dias, @hasdfa, @imazizbohra, @Janpot, @JCQuintas, @joserodolfofreitas, @LukasTy, @mapache-salvaje, @mj12albert, @mnajdova, @Mr-Quin, @nitzan-treg, @oliviertassinari, @pavan-sh, @sai6855, @sandeshdamkondwar, @SAY-5, @silviuaavram, @siriwatknp, @starboyvarun, @tomups, @ZeeshanTamboli
v9.0.0
🥳 We're excited to announce the stable release of Material UI v9.0! This major release focuses on accessibility improvements, sx prop performance, and cleanup of deprecated APIs. See the Material UI v9.0 announcement blog posts for more details. Also see the MUI v9 announcement blog posts for the broad ecosystem updates.
Check out the upgrade guide to see how you can move to this version.
@mui/material@9.0.0
- [slider] Use pointer events instead of mouse events (#48164) @mj12albert
- [switch] Add border to make it visible in high contrast mode (#48180) @silviuaavram
- [transitions] Performance improvements & misc fixes (#48151) @mj12albert
- Remove unnecessary overridesResolvers from styled components (#48204) @sai6855
Core
- [code-infra] Setup workflow to publish internal packages (#47952) @brijeshb42
- [core-docs] Add
x-schedulertoMuiProductIdtype (#48185) @rita-codes - [docs-infra] Add scheduler to product switcher (#48208) @rita-codes
- [internal] Prepare libraries for v9 stable release (#48206) @siriwatknp
🙇♂️ We'd like to extend a big thank you to everyone involved who made this major release possible.