Bug summary
On Android with TalkBack enabled, rendered markdown can first be announced as a whole block and then be revisited again through fragmented child stops derived from visual text wrapping.
In practice this creates repetitive navigation such as:
- whole block announcement
- then the same content again, split into smaller fragments
- inline links exposed as surrounding text + link + trailing punctuation
This is especially noticeable with headings, numbered lists, and inline links.
Library version
0.4.0
Environment info
System:
OS: macOS 26.3.1
CPU: (11) arm64 Apple M3 Pro
Binaries:
Node:
version: 22.16.0
Managers:
CocoaPods:
version: 1.16.2
SDKs:
Android SDK API Levels:
- 34
- 35
- 36
IDEs:
Android Studio: 2025.3 AI-253.30387.90.2532.14935130
npmPackages:
react:
installed: 19.2.3
react-native:
installed: 0.84.1
Android:
hermesEnabled: true
newArchEnabled: true
Steps to reproduce
- Render markdown like the following in the example app:
# Incident tracking
1. Review open roles in our [jobs portal](https://example.com).
2. Prepare your CV as PDF or a clear image.
3. If you already opened a case, reply with `REF-123`.
- Enable TalkBack.
- Navigate through the markdown using swipe gestures.
- Observe that TalkBack may announce the whole block first and then revisit the same content as fragmented children instead of semantic items.
Reproducible example repository
https://github.com/software-mansion-labs/react-native-enriched-markdown/tree/main/example
Expected behavior
TalkBack navigation should follow semantic markdown units instead of rendered line fragments:
- heading as one stop
- paragraph as one stop
- list item as one stop
- link as a separate interactive stop
- no duplicated “whole block first, then fragmented children” pattern
Additional context
This issue is about Android TalkBack navigation behavior specifically. The core problem is semantic fragmentation driven by visual layout rather than markdown structure.
Bug summary
On Android with TalkBack enabled, rendered markdown can first be announced as a whole block and then be revisited again through fragmented child stops derived from visual text wrapping.
In practice this creates repetitive navigation such as:
This is especially noticeable with headings, numbered lists, and inline links.
Library version
0.4.0
Environment info
System: OS: macOS 26.3.1 CPU: (11) arm64 Apple M3 Pro Binaries: Node: version: 22.16.0 Managers: CocoaPods: version: 1.16.2 SDKs: Android SDK API Levels: - 34 - 35 - 36 IDEs: Android Studio: 2025.3 AI-253.30387.90.2532.14935130 npmPackages: react: installed: 19.2.3 react-native: installed: 0.84.1 Android: hermesEnabled: true newArchEnabled: trueSteps to reproduce
Reproducible example repository
https://github.com/software-mansion-labs/react-native-enriched-markdown/tree/main/example
Expected behavior
TalkBack navigation should follow semantic markdown units instead of rendered line fragments:
Additional context
This issue is about Android TalkBack navigation behavior specifically. The core problem is semantic fragmentation driven by visual layout rather than markdown structure.