Emoji renders as [?] boxes on iOS 26 simulator (Xcode 26)
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- C++
- Star
- 127k
- Fork
- 25.3k
- Merge trung bình
- 1 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 4
Mô tả
Description
Emoji characters render as [?] placeholder boxes in React Native <Text> components on the iOS 26 simulator (Xcode 26.3, build 17C529). This affects all emoji — inline, standalone, flag sequences, and Unicode escape sequences.
Safari running in the same simulator renders emoji correctly, confirming the font (AppleColorEmoji) is present and registered. The issue is specific to React Native's CoreText text rendering path.
Steps to reproduce
- Create a new React Native project (tested with RN 0.84.1 via
@react-native-community/cli) - Add emoji to a
<Text>component:<Text>Hello 🚀 World 🎨 Test ✅</Text> <Text>Pure emoji: 😀😃😄😁😆😅🤣😂</Text> <Text>Flags: 🇺🇸 🇨🇳 🇯🇵 🇬🇧</Text> - Run on iOS 26 simulator (any device — iPhone 16, iPhone 17 Pro, etc.)
- All emoji appear as
[?]boxes
Expected behavior
Emoji should render using the AppleColorEmoji font, as they do in Safari and native UIKit apps on the same simulator.
Actual behavior
All emoji render as [?] replacement characters/boxes.
Environment
- React Native: 0.84.1 (also reproduced on 0.83.2)
- JS Engine: Hermes (also tested with JSC — same result)
- Architecture: New Architecture / Fabric (also tested with Old Architecture — same result)
- Xcode: 26.3 (build 17C529)
- iOS Simulator: 26.3.1 (23D8133)
- macOS: Darwin 25.3.0 (arm64)
Investigation done
- ✅ Confirmed
AppleColorEmoji-160px.ttcexists in the simulator runtime atCoreAddition/AppleColorEmoji-160px.ttc - ✅ Confirmed font is registered (
CTFontManagerRegisterFontsForURLreturns "already exists") - ✅ Confirmed Safari in the same simulator renders emoji correctly
- ✅ Tested Hermes vs JSC — no difference
- ✅ Tested New Architecture vs Old Architecture — no difference
- ✅ Tested RN 0.83.2 and 0.84.1 — both affected
- ✅ Attempted
RCTSetDefaultFontHandlerwith AppleColorEmoji in cascade list — no effect - ❌ Unable to test on iOS 18 simulator (Xcode 26 only ships iOS 26 runtime)
Notes
- This may be an iOS 26 simulator-specific issue (real devices may be unaffected)
- The root cause appears to be in how React Native's native text rendering (via CoreText/TextKit) resolves the emoji font cascade on iOS 26
- No older iOS simulator runtimes are available through Xcode 26 to compare
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Tái hiện vấn đề với React Native 0.84.1 bằng cách sử dụng một component trên trình mô phỏng iOS 26, sau đó điều tra đường dẫn kết xuất CoreText/TextKit native và cơ chế phân tầng phông chữ emoji. So sánh hành vi với Safari hoặc UIKit trên cùng trình mô phỏng; được xem là hoàn tất khi emoji nội tuyến, emoji độc lập, cờ và các chuỗi escape Unicode được kết xuất thay vì các ô thay thế.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- ios, react-native
- Lĩnh vực
- mobile
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100