angular / angular/components

bug(mat-stepper): on iOS device (iphone 15, iOS 18.5), any label or input field in stepper panel gets announced with 'tab' suffix

Open
#31,559 0 comments 0 reactions 0 assignees View on GitHub
Accessibility area: cdk/stepper area: material/stepper ios P3 safari
Dominant language
TypeScript
Stars
25k
Forks
6.8k
Avg merge
1d 8h
Merged PRs (30d)
91

Description

### Is this a regression?

- [ ] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

unknown

### Description

Hi Team,
We are observing one accessibility issue for mat-stepper on iOS device. The mat-stepper when used on android device or an windows then announces labels correctly. But when it is opened on iOS device, then screen reader read every field in tab panel with suffix 'tab'. Like in provided example for tabpanel in first step, screen reader reads like 'first step, last step tab' then 'next tab'. It doesn't announce 'next button' instead it announce all the elements in tabpanel with suffix tab.

### Reproduction

StackBlitz link: https://stackblitz.com/edit/2webe4ha?file=package.json
Steps to reproduce:
1. Open mat-stepper example on iOS device
2. listen to screen reader announcing the page contents
3. for first step it should announce next button as 'button next' but it announces as 'next tab'

### Expected Behavior

Fields should be properly announced when they are inside mat-stepper panel like for button it should read as 'next button' .

### Actual Behavior

Fields inside mat-stepper panel are getting announced with 'tab' suffix like for next button, it is reading as 'next tab'.

### Environment

- Angular: v20.1.0
- CDK/Material: v20.1.0
- Browser(s):
- Operating System (e.g. Windows, macOS, Ubuntu): iOS device

Contributor guide

Open the contributing guide

Research direction

Start with the linked StackBlitz reproduction and inspect the mat-stepper example using Angular/CDK Material v20.1.0 on an iOS device with its screen reader enabled. Compare announcements for the stepper panel's labels, inputs, and Next button with Android or Windows behavior. Done means the panel's controls are announced by their correct roles rather than with a “tab” suffix.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, typescript
Domain
accessibility, frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.