react / react/react-native

[Android] Last emoji in a Text is cut off when the text contains the 🫨 emoji (U+1FAE8)

Open
#57,995 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Needs: Author Feedback Platform: Android Type: Unsupported Version
Dominant language
C++
Stars
127k
Forks
25.3k
Avg merge
1d 23h
Merged PRs (30d)
4

Description

Description

A <Text> whose content contains the 🫨 emoji (U+1FAE8, Unicode 15.0) renders with the last emoji of the line partially or fully cut off at specific text widths on Android. iOS is unaffected.

What we verified:

  • The 🫨 emoji is the trigger. We compared emoji suffixes of the same length (14 emoji) at the same text widths: a sequence containing 🫨 (😂🙁☠️😠🤔🥶🫨😺👏🏻🙁😂🥶😂😠) clips; 14 keycap sequences (1️⃣…🔟) and 14 single-codepoint emoji (🔴🟠🟡…) do not. Replacing 🫨 with another emoji in the failing sequence stops the clipping.
  • Width-dependent. Only strings whose width lands near the line-wrap boundary clip; adding or removing one letter makes the bug appear or disappear.
  • Device-dependent. Different devices clip at different string lengths (verified on Huawei P30 Pro VOG-L29 / Android 10 and a Samsung device; exact failing rows differ).
  • Version- and architecture-independent. Reproduces identically on RN 0.73 (old architecture) and RN 0.83.6 (new architecture) in the same app.
  • Not markdown/library related. Reproduces with a bare <Text>.
Steps to reproduce
  1. Clone https://github.com/mariia-korzun/EmojiEndClipRepro — a fresh community template where only App.tsx changed. It renders a sweep of 1–40 letters + a 14-emoji suffix in several layouts (chat bubble, fixed width, full width) plus a no-emoji control section, with the three suffix constants for comparison.
  2. yarn install && yarn android on an affected device.
  3. Scroll the EMOJI section: several rows show the last emoji clipped or invisible. The CONTROL section never clips. Replace 🫨 in the suffix — no row clips.

Expected: the trailing emoji is fully visible (as on iOS, and as with sequences without 🫨). So 😠 in the end should be visible

Actual: at specific widths the last emoji of the line is cut off. Screenshot attached.

With colors and numbers emojis all fine. Issue just when 🫨 in list. So 😠 in the end not visible

Image Image Image
React Native Version

0.83.6

Affected Platforms

Runtime - Android

Output of npx @react-native-community/cli info
System:
  OS: macOS 26.5.2
  CPU: (12) arm64 Apple M3 Pro
  Memory: 133.59 MB / 36.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.19.4
    path: /Users/mariiakorzun/.nvm/versions/node/v20.19.4/bin/node
  Yarn:
    version: 3.6.4
    path: /Users/mariiakorzun/.nvm/versions/node/v20.19.4/bin/yarn
  npm:
    version: 10.8.2
    path: /Users/mariiakorzun/.nvm/versions/node/v20.19.4/bin/npm
  Watchman:
    version: 2024.11.11.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:
      - "31"
      - "33"
      - "34"
      - "35"
      - "36"
    Build Tools:
      - 33.0.0
      - 33.0.1
      - 34.0.0
      - 35.0.0
      - 36.0.0
    System Images:
      - android-29 | Google Play ARM 64 v8a
      - android-33-ext5 | Google Play ARM 64 v8a
      - android-33 | ARM 64 v8a
      - android-33 | Google APIs ARM 64 v8a
      - android-33 | Google Play ARM 64 v8a
      - android-34 | Google APIs ARM 64 v8a
      - android-36 | Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2024.3 AI-243.22562.218.2431.13114758
  Xcode:
    version: 26.6/17F113
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.10
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 20.0.0
    wanted: 20.0.0
  react:
    installed: 19.2.0
    wanted: 19.2.0
  react-native:
    installed: 0.83.6
    wanted: 0.83.6
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: false
Stacktrace or Logs
-
MANDATORY Reproducer

https://github.com/mariia-korzun/EmojiEndClipRepro

Screenshots and Videos

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the mandatory EmojiEndClipRepro repository and its App.tsx, then run yarn install && yarn android on an affected Android device. Compare the EMOJI and CONTROL sections and the suffixes containing 🫨; done means the trailing emoji remains fully visible at the previously failing widths without regressing other layouts or emoji sequences.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, react-native
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.