Skip to content

iOS: text after currency is dropped in paragraph with prior bold spans #264

@jasonjei

Description

@jasonjei

Summary

On iOS, react-native-markdown-display 7.0.2 drops trailing text in a paragraph when the paragraph contains bold spans earlier and later includes a currency value like $3.75.

The persisted content and a plain React Native <Text> render both preserve the full sentence. The disappearance only happens when rendering through react-native-markdown-display.

Environment

  • react-native-markdown-display: 7.0.2
  • React Native: 0.81.5
  • Expo SDK: 54
  • Platform observed: iOS

Repro content

Maison Benoit is a French artisanal bakery in **Danville, CA** (East Bay) — not a restaurant per se, but it made a serious splash. Owner Benoît Vialle left careers at Microsoft and the wine industry to open it, and his pastry chef Lucile Espeillac came from Paris' La Tour d'Argent. They just won the **2025 Best Croissant San Francisco** competition, beating out 349 contenders including perennial favorites like Arsicault. Their croissants are $3.75.

Located at 402 Railroad Ave, Danville — open 7 AM to 4 PM daily. Worth the drive if you're ever out that way.

Expected behavior

The first paragraph should end with:

Their croissants are $3.75.

Actual behavior

The first paragraph renders as if it ends at:

Their croissants

The trailing phrase are $3.75. is not visible. The next paragraph then starts normally.

Things tried / ruled out

  • Rendering the same content as plain React Native <Text> shows the missing phrase correctly.
  • The app-side parsed string still includes Their croissants are $3.75..
  • Escaping $ before passing markdown did not fix it.
  • Adding styles for textgroup / text like width: '100%' and flexShrink: 1 did not fix it.
  • Overriding paragraph to render as <Text> instead of the default <View> did not fix it.

Notes

This appears related to the library's inline text grouping / nested <Text> rendering path on iOS, especially after previous bold spans in the same paragraph. We worked around it by replacing this library on our chat surface with a small purpose-built renderer that treats currency as ordinary text.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions