<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>304137</bug_id>
          
          <creation_ts>2025-12-13 18:33:44 -0800</creation_ts>
          <short_desc>VoiceOver on iOS fails to expose list semantics for &lt;ul&gt; elements with list-style: none</short_desc>
          <delta_ts>2026-02-23 16:59:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 18</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>122320</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hyongsop Kim">khsbory</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andresg_22</cc>
    
    <cc>jcraig</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2165717</commentid>
    <comment_count>0</comment_count>
    <who name="Hyongsop Kim">khsbory</who>
    <bug_when>2025-12-13 18:33:44 -0800</bug_when>
    <thetext>## Summary

I am writing to report a persistent behavior in VoiceOver on iOS regarding unordered lists (`&lt;ul&gt;`) styled with `list-style: none`.

I greatly appreciate the improvements made late last year regarding list item indexing (announcing &quot;item X of Y&quot;), which has significantly enhanced the web navigation experience for visually impaired users. However, a long-standing issue persists on mobile devices: when `list-style: none` is applied to a `&lt;ul&gt;` tag, iOS VoiceOver treats the content as plain text rather than a list, effectively stripping its semantic value.

It is important to note that this behavior is inconsistent with macOS VoiceOver, which correctly identifies and announces these elements as lists regardless of the `list-style` property.

## Rationale

I understand the potential logic might be that if visual markers are removed, the content should not be treated as a list. However, I strongly disagree with this approach for the following reasons:

1. **Visual vs. Semantic**: `list-style: none` is a CSS property used primarily to override default user-agent styles for design customization, not to negate the semantic structure of the content.

2. **Consistency**: We do not strip the role of `&lt;button&gt;` or `&lt;a&gt;` tags simply because their visual defaults (like borders or underlines) are removed via CSS. Similarly, a list should remain a list semantically unless the role is explicitly changed by the developer (e.g., `role=&quot;none&quot;`).

3. **Platform Parity**: The discrepancy between macOS and iOS creates a fragmented experience for users and developers. Since macOS VoiceOver handles this correctly, the expectation is that iOS should behave similarly.

## Steps to Reproduce

1. Open Safari on an iPhone or iPad with VoiceOver enabled.
2. Navigate to the reproduction demo page: [https://a11y-demo-english.replit.app/list-styles](https://a11y-demo-english.replit.app/list-styles)
3. Swipe to focus on the first list (Standard `&lt;ul&gt;` with default styles).
4. Swipe to focus on the second list (Custom `&lt;ul&gt;` with `list-style: none`).

## Expected Result

VoiceOver should announce &quot;List start,&quot; &quot;List end,&quot; and the relative position of items (&quot;item X of Y&quot;) for both lists, recognizing that `list-style: none` is a visual styling preference. This would align iOS behavior with macOS.

## Actual Result

- **First List (Default)**: VoiceOver correctly announces the list context and item indices.
- **Second List (`list-style: none`)**: VoiceOver reads the text items linearly without announcing &quot;List start&quot; or the item counts, treating them as if they were not part of a list structure.

**Note**: On macOS Safari, both lists are correctly announced as lists.

## Impact

This behavior forces developers to use explicit ARIA roles (`role=&quot;list&quot;`) unnecessarily just to restore semantics that were stripped by a visual CSS property, which goes against the rule of using native HTML elements whenever possible.

I kindly request a policy review on this behavior to decouple visual list styling from semantic list exposure and ensure consistency between iOS and macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2165718</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-12-13 18:33:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/166462573&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2184238</commentid>
    <comment_count>2</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2026-02-23 16:59:55 -0800</bug_when>
    <thetext>See explanation here:
https://bugs.webkit.org/show_bug.cgi?id=122320#c16

*** This bug has been marked as a duplicate of bug 122320 ***</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>