Before submitting a new issue
Bug summary
On iOS (New Architecture / Fabric), rendering an unordered (-) list where an item's text starts with an emoji immediately after the marker produces two related rendering bugs:
- The emoji glyph is dropped entirely from the rendered list item — even though the underlying markdown/text data still contains it (confirmed by logging the string right before it's handed to the renderer).
- Only the last item in the list renders its bullet/marker dot. Every preceding item in the same list renders no marker at all. This is visible in the fully-settled final render, not just during a transient/streaming state.
Both issues disappear completely when the library is pinned back to 0.7.4 with the exact same markdown input and list style props. Removing the emoji (keeping plain text after the marker) does not fix bug 2 on 1.0.1 — so this isn't purely an emoji-decoding issue, it's specifically the combination of "marker directly followed by a leading glyph" that breaks marker rendering for anything but the last item.
Library version
1.0.1 (bug also present in 1.0.0; not present in 0.7.4)
Environment info
React Native: 0.85.3
React: 19.2.3
Expo SDK: ~56.0.15
Node: 22.15.0
Xcode: 26.6 (17F113)
iOS Simulator: iPhone 13 mini, iOS 26.1
Architecture: New Architecture (Fabric) enabled
Platform: iOS only (not verified on Android)
Steps to reproduce
- Install
react-native-enriched-markdown@1.0.1 on iOS with the New Architecture enabled.
- Render the following markdown through the component, with a
list style that sets at least bulletColor, markerColor, markerMinWidth, and gapWidth:
**Top categories:**
- 🛒 Groceries: $320
- 🚗 Transport: $110
- 🍔 Dining out: $215
- 🎬 Entertainment: $85
- 💊 Health & pharmacy: $60
- Observe on the rendered output:
- The 🛒 🚗 🍔 🎬 💊 glyphs are missing from every item's text.
- Only the last item ("Health & pharmacy: $60") shows a marker dot; the first four items show no marker at all.
- Downgrade the dependency to
0.7.4 (no other code changes, same markdown string, same style props) and re-render — both issues are gone: all emoji render, and every item shows its marker.
- As a secondary check, on
1.0.1, setting itemSpacing: 0 (or omitting it) does not affect either symptom — ruling out the new itemSpacing ("space between list items") feature as the cause.
Reproducible example repository
I don't have a public standalone repro repo to share right now (this was found while investigating a regression in an internal app's markdown list rendering), but the snippet above combined with any minimal RN 0.85 + New Architecture app should be enough to reproduce it. Happy to put together a minimal repro repository if that would help narrow it down further — just let me know.
Additional context
Since 1.0.0 bundles the parser port to iOS, the new theme system, and a list-rendering rewrite all in one release (no intermediate stable npm version between 0.7.4 and 1.0.0), we weren't able to bisect further via published versions. Given the "marker directly followed by a leading glyph" trigger, our best guess is something in the new iOS list/marker renderer indexing content by UTF-16 code units instead of grapheme-cluster boundaries when locating where the marker attachment/marker range ends and the item's own text begins — but we haven't confirmed this against the 1.0.x source, just flagging it as a possible lead.
Before submitting a new issue
1.0.1), and confirmed the bug is present there.bullet,marker,emoji) — found none.0.7.4) and confirmed the bug is not present there — this is a regression.Bug summary
On iOS (New Architecture / Fabric), rendering an unordered (
-) list where an item's text starts with an emoji immediately after the marker produces two related rendering bugs:Both issues disappear completely when the library is pinned back to
0.7.4with the exact same markdown input andliststyle props. Removing the emoji (keeping plain text after the marker) does not fix bug 2 on1.0.1— so this isn't purely an emoji-decoding issue, it's specifically the combination of "marker directly followed by a leading glyph" that breaks marker rendering for anything but the last item.Library version
1.0.1(bug also present in1.0.0; not present in0.7.4)Environment info
Steps to reproduce
react-native-enriched-markdown@1.0.1on iOS with the New Architecture enabled.liststyle that sets at leastbulletColor,markerColor,markerMinWidth, andgapWidth:0.7.4(no other code changes, same markdown string, same style props) and re-render — both issues are gone: all emoji render, and every item shows its marker.1.0.1, settingitemSpacing: 0(or omitting it) does not affect either symptom — ruling out the newitemSpacing("space between list items") feature as the cause.Reproducible example repository
I don't have a public standalone repro repo to share right now (this was found while investigating a regression in an internal app's markdown list rendering), but the snippet above combined with any minimal RN 0.85 + New Architecture app should be enough to reproduce it. Happy to put together a minimal repro repository if that would help narrow it down further — just let me know.
Additional context
Since
1.0.0bundles the parser port to iOS, the new theme system, and a list-rendering rewrite all in one release (no intermediate stable npm version between0.7.4and1.0.0), we weren't able to bisect further via published versions. Given the "marker directly followed by a leading glyph" trigger, our best guess is something in the new iOS list/marker renderer indexing content by UTF-16 code units instead of grapheme-cluster boundaries when locating where the marker attachment/marker range ends and the item's own text begins — but we haven't confirmed this against the1.0.xsource, just flagging it as a possible lead.