Before submitting a new issue
Bug summary
Per CommonMark/GFM, the start number of an ordered list is determined by the list number of its first item — 3. foo should render as 3, 4, 5 (see https://spec.commonmark.org/0.31.2/#start-number). md4c already reports this via MD_BLOCK_OL_DETAIL.start, but the shared parser (packages/core/cpp/parser/MD4CParser.cpp) drops it, so both the iOS and Android renderers restart every ordered list at 1. The same markdown renders starting at 3 on GitHub:
- Add eggs and vanilla extract
- Pour into a greased tin
- Bake for 30 minutes
I have a fix ready and can open a PR right away: the parser passes start through as a node attribute (set only when != 1), both renderers seed their item counters from it, plus a Maestro e2e flow with iOS/Android screenshot baselines. Scope note: the standalone android-enriched-markdown package is intentionally untouched — its renderer ignores the new attribute, so behavior there is unchanged; happy to mirror the fix in a follow-up if useful.
Library version
0.7.3
Environment info
info Fetching system and libraries information...
System:
OS: macOS 26.5.2
CPU: (8) arm64 Apple M2
Memory: 548.41 MB / 24.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 24.15.0
path: /opt/homebrew/opt/node@24/bin/node
Yarn:
version: 4.11.0
path: /opt/homebrew/opt/node@24/bin/yarn
npm:
version: 11.12.1
path: /opt/homebrew/opt/node@24/bin/npm
Watchman:
version: 2025.05.19.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.5
- iOS 26.5
- macOS 26.5
- tvOS 26.5
- visionOS 26.5
- watchOS 26.5
Android SDK:
API Levels:
- "33"
- "34"
- "35"
- "36"
Build Tools:
- 34.0.0
- 35.0.0
- 36.0.0
System Images:
- android-35 | Google Play ARM 64 v8a
- android-36 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2025.2 AI-252.25557.131.2521.14432022
Xcode:
version: 26.5/17F42
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.12
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.1.0
wanted: 20.1.0
react:
installed: 19.2.3
wanted: 19.2.3
react-native:
installed: 0.86.0
wanted: 0.86.0
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Steps to reproduce
yarn && yarn react-native-example ios
- Open Playground, tap Set Markdown, paste:
3. Add eggs and vanilla extract
4. Pour into a greased tin
5. Bake for 30 minutes
- Expected: numbering starts at 3 (GitHub parity). Actual: numbering starts at 1.
Reproducible example repository
https://github.com/yyq1025/react-native-enriched-markdown
(unmodified fork of this repo — the bug reproduces in the bundled example app with the steps above)
Before submitting a new issue
main@ e60a65a)Bug summary
Per CommonMark/GFM, the start number of an ordered list is determined by the list number of its first item —
3. fooshould render as 3, 4, 5 (see https://spec.commonmark.org/0.31.2/#start-number). md4c already reports this viaMD_BLOCK_OL_DETAIL.start, but the shared parser (packages/core/cpp/parser/MD4CParser.cpp) drops it, so both the iOS and Android renderers restart every ordered list at 1. The same markdown renders starting at 3 on GitHub:I have a fix ready and can open a PR right away: the parser passes
startthrough as a node attribute (set only when != 1), both renderers seed their item counters from it, plus a Maestro e2e flow with iOS/Android screenshot baselines. Scope note: the standaloneandroid-enriched-markdownpackage is intentionally untouched — its renderer ignores the new attribute, so behavior there is unchanged; happy to mirror the fix in a follow-up if useful.Library version
0.7.3
Environment info
info Fetching system and libraries information... System: OS: macOS 26.5.2 CPU: (8) arm64 Apple M2 Memory: 548.41 MB / 24.00 GB Shell: version: "5.9" path: /bin/zsh Binaries: Node: version: 24.15.0 path: /opt/homebrew/opt/node@24/bin/node Yarn: version: 4.11.0 path: /opt/homebrew/opt/node@24/bin/yarn npm: version: 11.12.1 path: /opt/homebrew/opt/node@24/bin/npm Watchman: version: 2025.05.19.00 path: /opt/homebrew/bin/watchman Managers: CocoaPods: version: 1.16.2 path: /opt/homebrew/bin/pod SDKs: iOS SDK: Platforms: - DriverKit 25.5 - iOS 26.5 - macOS 26.5 - tvOS 26.5 - visionOS 26.5 - watchOS 26.5 Android SDK: API Levels: - "33" - "34" - "35" - "36" Build Tools: - 34.0.0 - 35.0.0 - 36.0.0 System Images: - android-35 | Google Play ARM 64 v8a - android-36 | Google Play ARM 64 v8a Android NDK: Not Found IDEs: Android Studio: 2025.2 AI-252.25557.131.2521.14432022 Xcode: version: 26.5/17F42 path: /usr/bin/xcodebuild Languages: Java: version: 17.0.12 path: /usr/bin/javac Ruby: version: 2.6.10 path: /usr/bin/ruby npmPackages: "@react-native-community/cli": installed: 20.1.0 wanted: 20.1.0 react: installed: 19.2.3 wanted: 19.2.3 react-native: installed: 0.86.0 wanted: 0.86.0 react-native-macos: Not Found npmGlobalPackages: "*react-native*": Not Found Android: hermesEnabled: true newArchEnabled: true iOS: hermesEnabled: true newArchEnabled: trueSteps to reproduce
yarn && yarn react-native-example iosReproducible example repository
https://github.com/yyq1025/react-native-enriched-markdown(unmodified fork of this repo — the bug reproduces in the bundled example app with the steps above)