Skip to content

Combobox: keyboard navigation overwrites aria-selected on options, breaking MultiSelect #9205

Closed

Description

@BillyBobFry

Dependencies check up

  • I have verified that I use latest version of all @mantine/* packages

What version of @mantine/* packages do you have in package.json?

8.3.18 (also reproduced on 9.6.1 in the sandbox)

What package has an issue?

@mantine/core

What framework do you use?

Other, I will specify in the bug description

In which browsers you can reproduce the issue?

All

Describe the bug

useCombobox uses aria-selected to track the keyboard highlight. That clashes with options that use aria-selected for the picked state, which OptionsDropdown does (aria-selected={checked}). So in MultiSelect, arrowing through the list changes which options are reported as selected:

  • the highlighted option gets aria-selected="true", even if it isn't picked
  • when the highlight moves on, aria-selected is removed completely, even from picked options

Reproduction

  1. Render <MultiSelect data={["ID", "Tax", "Total"]} defaultValue={["ID", "Total"]} />
  2. Open the dropdown and press ↓ three times
  3. Watch aria-selected on the options in DevTools
ID (picked) Tax (not picked) Total (picked)
Open true false true
↓ 1 true false true
↓ 2 removed true true
↓ 3 removed removed true

Expected: ID and Total stay true and Tax stays false the whole time. The highlight is already exposed through aria-activedescendant on the input, which is set correctly.

Screen reader

There's a screen recording here of me using voiceover. "Bananas" is the only item that is selected throughout the video. Note that whenever I navigate to an item with keyboard arrows, "Selected" is read out by voiceover, when I hover over the same items, "Selected" is not read out.

The expected behaviour would be:

  • "Bananas" has "Selected" read out whenever hovering OR navigating with keyboard
  • No other items have "Selected" read out
Mantine.combobox.voiceover.mp4

Cause

React never puts it back because the checked prop hasn't changed, so the DOM stays wrong until that option re-renders for some other reason.

Context

Found this in Metabase, where we render a Combobox with checkbox rows in an aria-multiselectable listbox, and it happens there too. We build with Rspack (hence "Other"), but the repro doesn't depend on the framework. Possibly related to #8638, although that one didn't have a specific repro.

If possible, include a link to a codesandbox with a minimal reproduction

No response

Possible fix

No response

Self-service

  • I would be willing to implement a fix for this issue

Activity

  1. added
    Fixed in patchCompleted issues that will be published with next patch (1.0.X)
    on Sep 18, 2026
  2. github-actions commented on Sep 21, 2026

    @github-actions

    Fixed in 9.6.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Fixed in patchCompleted issues that will be published with next patch (1.0.X)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions