Repository navigation
fix(deps): update mantine to v9 - #23
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/major-mantine
branch
5 times, most recently
from
October 13, 2026 18:27
d52cf49 to
45dca55
Compare
renovate
Bot
force-pushed
the
renovate/major-mantine
branch
from
October 14, 2026 11:12
45dca55 to
3d59d59
Compare
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.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^8.3.14→^9.0.0^8.3.14→^9.0.08.3.18→9.7.2Release Notes
mantinedev/mantine (@mantine/core)
v9.7.2Compare Source
[@mantine/core]PinInput: Fix readOnly not preventing value changes on Delete, Backspace and paste (#9258)[@mantine/core]Divider: Addaria-orientation(#9259)[@mantine/core]Tooltip: Fix disabled tooltip settingaria-describedbyon its target (#9261)[@mantine/core]Transition: Fix frames and callbacks running after unmount during the first frame (#9263)[@mantine/hooks]use-scroll-into-view: Reset start time on cancel (#9265)[@mantine/core]Fix Backspace removing the last value when readOnly is set in MultiSelect and TreeSelect components (#9267)[@mantine/schedule]ResourcesDayView: Fix sticky resource labels covering the time labels row (#9268)[@mantine/hooks]use-debounced-callback: Avoid repeating completed leading calls (#9269)[@mantine/schedule]MobileMonthView: Fix multi-day event time display on start, middle and end days (#9272)[@mantine/form]AddUseContextFormtype export (#9275)[@mantine/form]Fix potential global prototype position[@mantine/tiptap]Add option to handle images pasted with other rich text elements in the image extension (#9270)v9.7.1Compare Source
[@mantine/schedule]Fix startScrollTime scroll position (#9255)[@mantine/core]RollingNumber: Fix sub-pixel digit misalignment at fractional zoom levels (#9251)[@mantine/core]Tree: Add aria-expanded to tree items with children (#9247)[@mantine/core]SegmentedControl: Do not call Math.random during render (#9245)[@mantine/core]Popover: Add capture prop to control events capturing phase (#9243)[@mantine/form]Fix clearing state of unrelated fields (#9242)[@mantine/core]AngleSlider: Set aria-disabled on thumb when disabled (#9238)[@mantine/core]Combobox: Set aria-disabled on disabled Combobox.Option (#9236)[@mantine/form]Fix reorderListItem moving errors of items whose index shares a prefix with the reordered index (#9235)[@mantine/schedule]MonthView: Fix quadratic row assignment for weeks with many events (#9232)[@mantine/hooks]use-pagination: Fix single page being replaced with dots on the right side (#9229)[@mantine/core]ScrollArea: Fix wheel listener on document blocking compositor scrolling for the whole page (#9225)[@mantine/dates]DateTimePicker: Fix time not being limited by minDate and maxDate (#9221)[@mantine/core]Select, MultiSelect, Autocomplete, TagsInput: Fix listbox aria-labelledby referencing a missing label element (#9219) (#9220)[@mantine/hooks]use-debounced-state: Fix leading edge firing only once (#9214)v9.7.0: 😳Compare Source
View changelog with demos on mantine.dev website
Support Mantine development
You can now sponsor Mantine development with OpenCollective.
All funds are used to improve Mantine and create new features and components.
@mantine/mcp-server documentation coverage
@mantine/mcp-server now exposes 406 documentation
pages instead of 164. Previously only components were indexed – hooks, @mantine/form,
styling, theming, guides and help.mantine.dev FAQ pages are now included as
well. Changelog pages are deliberately excluded to keep search results focused on current APIs.
Documentation is now retrieved by section rather than by whole page.
get_item_docreturns a pageoutline (description, import statement and the list of section headings) by default, a single section
with the
sectionargument, or the entire page withfull: true. RequestinguseFormthis way returnsabout 1KB instead of 9KB, and the largest pages drop from roughly 89KB to 4KB.
Other improvements:
get_apitool – resolves a symbol such asuseFormoruseDisclosureto its TypeScriptsignature and exported types without knowing which page documents it
search_docsresults point at the specific section that matched, so a query like"validate a form with zod" resolves to the
zodsection of the schema validation page"command palette" finds Spotlight
list_itemsacceptsgroup,categoryandpackagein addition tokindget_item_propsreturns the TypeScript signature for hooks, and points at therelevant section for pages that document their API in prose
The server was also migrated to the official Model Context Protocol SDK, so the protocol version is
negotiated with the client instead of being pinned.
For setup details, supported tools, and client-specific instructions, see Mantine with LLMs.
Tour component
New Tour component provides interactive step-by-step application onboarding.
It highlights target elements with a spotlight overlay and displays tooltips with navigation controls.
Supports both guided (sequential) and beacon (non-sequential) modes.
Toolbar component
New Toolbar component provides an accessible toolbar container with roving tabindex
keyboard navigation, toggle groups with single/multiple selection, visual grouping, and dividers.
Styling is similar to RichTextEditor toolbar.
Toggle component
New Toggle component is a button that can be toggled between active and inactive states:
JsonViewer component
New JsonViewer component can be used to display complex JSON
structures with expand/collapse, type indicators, copy to clipboard, and other features:
Light Checkbox and Radio variant
Checkbox and Radio components now support
variant="light"–the indicator uses a light background color with a colored icon, similar to the light variant
available in other components like Button:
RichTextEditor image upload
RichTextEditor now supports image upload with loading states.
Images can be uploaded via toolbar button, drag and drop, or paste.
During upload, a local preview is shown with a loading indicator.
Configuring
getUploadImageExtensionis enough to enable uploads –onImageUploadandonImageUploadErrorprops ofRichTextEditorare optional overrides for the toolbar control.onImageUploadcan resolve either to a string or to{ src, alt, title }(new exportedImageUploadResulttype) to set alternative text on the uploaded image. Several files picked,dropped or pasted together are inserted in the order they were selected and are undone as one step.
Schedule event overlap mode
DayView and WeekView now support
eventOverlapModepropthat controls how events overlapping in time share the horizontal space. The default
columnsmodesplits the available width evenly between them, which becomes unreadable once a large number of events
overlap. The new
cascademode indents each event and stacks it over the previous one, so every eventkeeps a readable width no matter how many of them overlap.
The indent shrinks automatically as the group grows, so the event on top always keeps at least 60% of
the available width. Covered events can still be read and used: rest the pointer on one and it is
raised above the events covering it, which also makes its resize handles reachable. Keyboard users get
the same result by focusing the event with
Tab.eventOverlapRaiseDelayprop controls how long thepointer must rest on an event before it is raised, in milliseconds (
600by default).Schedule drop validation
All Schedule views can now reject a drag or resize before it is committed,
based on where the event is being dropped rather than on which event is being dragged. Previously
canDragEventandcanResizeEventonly decided whether an event was draggable or resizable at all,so the only way to prevent a double booking was to accept the drop, notice the conflict in the
handler and not update state – which produced a snap-back with no explanation:
preventEventOverlaprejects placements that would make the event overlap another event. Pass afunction to decide per pair of events: return
trueto forbid that particular overlap.canDropEventandcanResizeEventToare called before a drop or resize is committed – returnfalseto reject it.canDropExternalEventdoes the same for items dragged in from outside the schedule.onEventPlacementRejectedreports the rejection with the conflicting events and the reason.The checks compose: a placement is allowed only when the overlap check passes and the matching
callback returns a value other than
false. The overlap check runs first, soonEventPlacementRejectedcan report
conflictswithout your code repeating the work. While the pointer is over an invalidtarget the drag ghost and the resizing event get
data-invalid, so the rejection is visible before thepointer is released.
In resource views the conflict set is scoped to the target
resource, so moving an event onto another resource row is checked against that row rather than the one
it came from:
TreeSelect renderPill
TreeSelect now supports
renderPillprop to customize how pills are renderedfor selected values in
multipleandcheckboxmodes, similar torenderPillprop ofMultiSelect. The callback receives the tree node, so pills can use
nodePropsor the node structure, for example to show a different icon for parent and leaf nodes:Tooltip hideDetached
Tooltip now supports
hideDetachedprop, which works the same way asPopover hideDetached. It is enabled by default: the tooltip is now
hidden when its target element is removed from the DOM, hidden with
display: none, or scrolled outof a container that clips it. Previously, the tooltip stayed in place, floating over unrelated
content. Set
hideDetached={false}to restore the previous behavior. The prop has no effect onTooltip.Floating, which is positioned relative to the mouse pointer.Note that jsdom reports zero-size rectangles for every element, so in Jest and Vitest every tooltip
is treated as detached and hidden unless the test wrapper sets
env="test"onMantineProvider(as described in the Jest and Vitest guides) or the component is
rendered with
hideDetached={false}.Notifications auto close progress
Notifications now support
withAutoCloseProgressprop. When set, a progress linethat fills up until the notification auto closes is displayed at the bottom of every notification.
The line fades out while the auto close timer is paused (for example, when the notification is hovered),
starts over when the timer restarts, and uses the notification color. The prop sets the default for all notifications, it can be overridden
for individual notifications with
withAutoCloseProgressproperty innotifications.showandnotifications.updatefunctions:Notifications promise
New
notifications.promisefunction displays a loading notification while a promise is pending andupdates it with success or error state once the promise settles.
successanderrorcan befunctions that receive the resolved value or the rejection reason:
AppShell resizable sections
AppShell now supports resizing
AppShell.Navbar/AppShell.Asidehorizontally and
AppShell.Header/AppShell.Footervertically. Pass auseAppShellResizehook instance to the
resizeprop to enable it for the configured sections – handles supportmouse, touch and keyboard, and can report drag-to-collapse. Each section accepts a
labeloptionto localize the
aria-labelof its handle.See AppShell examples for more details.
Note that when the
resizeprop is used,--app-shell-*CSS variables are defined on theAppShellroot element instead of:root, so they cannot be read from content rendered in aPortal, for example from a Modal or a Drawer.
Templates and guides
vpCLI and are configured invite.config.mjs.Other changes
Escapeor a press outside, and is announced by screen readers. Newevents,interactive,roleandreturnFocusprops, andonDismisscallback.events={{ focus: false, touch: true }}andcloseOnEscape={false}to restore the previous behavior.variant="light"colors are resolved withtheme.variantColorResolver, so any CSS color or theme color with a shade can be used.keepMountednow uses ReactActivityinstead ofdisplay: none, so effects are paused while the bar is closed. SettransitionProps={{ keepMountedMode: 'display-none' }}to restore the previous behavior.mantine-form,mantine-combobox,mantine-custom-components) have been updated for 9.x with corrected API details and new patterns.gatsby-templateandredwood-templateare no longer maintained. Existing applications can keep using Mantine, the setup does not change.v9.6.3Compare Source
[@mantine/hooks]use-click-outside: Add capture phase support (#9213)[@mantine/core]Select: Fix dropdown not closing on blur when searchable is not set (#9215)[@mantine/core]PasswordInput: Fix aria-describedby not being taken from InputWrapperContext (#9216)[@mantine/core]Fix aria-labelledby referencing a missing label element in Checkbox.Group, Radio.Group, Switch.Group (#9217)[@mantine/core]Slider: Fix thumbProps not being passed to the thumb element (#9218)[@mantine/core]Table: Fix memoized rows rerendering when Table rerenders with the same props (#6422)[@mantine/hooks]use-intersection: Use the last entry from a batched observer callback (#9019)[@mantine/hooks]use-media-query: Catch matchMedia errors when reading the initial value synchronously (#9020)[@mantine/core]Portal: Cache shared portal node lookup (#9101)[@mantine/schedule]MobileMonthView: Fix multi-day events not showing when they start in the previous month (#9153)[@mantine/form]Fix removeListItem not clearing non-nested item errors (#9180)[@mantine/core]Rating: Fix value being changed by scroll gestures on touch devices (#9159)[@mantine/notifications]Fix uneven spacing in expanded stacks (#9176)[@mantine/charts]FixtextColorandgridColorprops being passed as attributes to the DOM node (#9181)[@mantine/hooks]use-hotkeys: Fix preventDefault not being applied when other hotkey options are set (#9164)[@mantine/hooks]use-throttled-callback: Fix callback becoming unresponsive after clearTimeout (#9146)[@mantine/hooks]use-roving-index: Fix disabled items not being skipped by ArrowLeft/ArrowRight in grid mode (#9169)[@mantine/hooks]use-mask: Fix transform not being applied to the initial input value (#9170)v9.6.2Compare Source
[@mantine/core]Combobox: Fix incorrectaria-selectedsetting on up/down arrows press (#9205)[@mantine/core]NumberInput: Fixminandmaxboundaries not being respected whentrimLeadingZeroesOnBluris false (#9192)[@mantine/hooks]use-mask: Fix incorrect handling of input with mixed static values (#9196)[@mantine/schedule]Add option to resize bacground events (#9190)[@mantine/schedule]MobileMonthView: Fix missing localization for all day events label (#9191)[@mantine/hooks]use-scroll-spy: Fix stale nodes being used when element cannot be resolved by the given selector[@mantine/core]ComboboxPopover: Fix incorrect focus management[@mantine/charts]GaugeChart: Fix incorrectroundCapshandling with multiple sections (#9189)[@mantine/core]NumberInput: Fix incorrect thousands separator handling on paste (#9102)v9.6.1Compare Source
[@mantine/ligtbox]Add option to render custom thumbnails for video[@mantine/core]OverflowList: Fix ResizeObserver console warning (#9177)[@mantine/core]Fix incorrect escape handling in Modal and Drawer stacks (#9188)[@mantine/core]SegmentedControl: Fix indicator disappearing when data list is replaced with a list with the same length (#9175)[@mantine/lightbox]Fix circular esm dependency (#9166)[@mantine/core]Accordion: Fix incorrect border radius being applied to the contained items[@mantine/schedule]Add event overlap mode support to WeekView and DayView[@mantine/core]Menu: Fix incorrectwithinPortalprop being available[@mantine/core]Popover: Fix position not being updated when prop changes when the dropdown is opened (#9156)[@mantine/schedule]Fix same-day events ending at exclusive midnight being dropped in WeekView and DayView components (#9157)[@mantine/hooks]use-interval: Fix timer restarting when fn changes (#9158)[@mantine/core]Textarea: Fix ResizeObserver loop error when autosize textarea width changes (#9162)[@mantine/hooks]use-collapse: Fix incorrect transition state switching when used with Activity (#9160)v9.6.0: 🔥Compare Source
View changelog with demos on mantine.dev website
Support Mantine development
You can now sponsor Mantine development with OpenCollective.
All funds are used to improve Mantine and create new features and components.
@mantine/lightbox package
New @mantine/lightbox package – a full-screen media lightbox with carousel navigation,
zoom, thumbnails, toolbar customization, and store-based API. Supports image, video, and custom slides:
Key features:
transitionProps(same API as Modal)labelspropNotifications custom rendering
Notifications now support
renderNotificationprop that allows you to completelyreplace the default notification with custom content. All animations (enter, exit, drag dismiss)
are preserved for custom notifications:
Notifications stacked layout
Notifications now support
layout="stacked"prop that displays notifications in a stackedlayout where only the latest notification is fully visible, and older notifications peek out behind it:
ActionBar component
New ActionBar component – a fixed-position bottom bar
for bulk selection actions. Designed to be controlled by table or checkbox
selections, it provides a set of actions that can be performed on selected items.
RichTextEditor table controls
RichTextEditor now includes a set of controls for editing tables. Install and register the
Tiptap table extension (
TableKit), then addthe controls to the toolbar.
RichTextEditor.TableInsertopens a grid to pick the table size, and theother controls add/remove rows and columns, toggle header row/column and merge/split cells. All table
controls are automatically disabled when the cursor is not inside a table:
RichTextEditor Details control
RichTextEditor now supports collapsible sections. Install and register the
Tiptap details extension (
Details,DetailsSummaryandDetailsContent), then addRichTextEditor.Detailsto the toolbar. The controlwraps the current block in a collapsible details node, or removes it when the cursor is already inside
one:
To support the control, Typography now styles
detailsandsummaryelements –a border, padding and a custom disclosure triangle. This applies to all
detailselements insideTypography, not just those created by the editor. All of the new selectors have zero specificity(
:where()), so they can be overridden without!important.RichTextEditor InvisibleCharacters control
RichTextEditor can now display formatting marks. Install and register the
Tiptap invisible characters extension,
then add
RichTextEditor.InvisibleCharactersto the toolbar. The control toggles the visibility ofspaces, paragraph breaks and hard breaks, and reflects the current visibility as its active state:
GaugeChart component
New GaugeChart component – a radial gauge chart for KPI and status display.
Supports threshold sections, target marker, custom labels, and configurable arc angles.
WaffleChart component
New WaffleChart component – a part-to-whole grid chart with colored cells.
Simpler and more compact alternative to pie/donut charts for displaying percentages and proportions.
MatrixChart component
New MatrixChart component – a generic x/y heatmap with categorical axes.
Each cell is colored based on a value, useful for visualizing patterns in two-dimensional categorical data.
CandlestickChart component
New CandlestickChart component – a financial OHLC chart that displays
open, high, low and close values as candles. Candles are colored based on their direction, the wick
shows the high–low range and the body shows the open–close range. Supports custom colors, data keys,
reference lines, axis labels, tooltip labels and value formatting.
Charts reference areas
AreaChart, BarChart, LineChart,
CompositeChart and ScatterChart now support the
referenceAreasprop that highlights a rectangular region of the plot – a weekend band, a targetrange, a threshold zone and similar annotations. Each area is bounded by
x1/x2and/ory1/y2data values (omit one pair to span the full opposite axis) and supports a theme
colorand alabel.