Repository navigation
CJK (Chinese/Japanese/Korean) IME input is fundamentally broken on iOS Fabric — affecting all New Architecture users since 0.76 #56463
Description
Description
CJK (Chinese, Japanese, Korean) IME input on iOS TextInput has been broken since the introduction of the New Architecture (Fabric). This affects hundreds of millions of potential users across East Asia — arguably the largest language group using IME-based input.
The issues include:
- Composition underline disappears or never renders — users cannot see which characters are being composed
- Composition state is destroyed mid-input — typed characters are lost or corrupted during IME conversion
maxLengthblocks IME mid-composition — Korean syllable building (ㅎ→하→한) and Chinese Pinyin input are truncated prematurely- Controlled
valueprop interferes with composition — standard React patterns break CJK input entirely
This is not a minor visual glitch — it makes TextInput unusable for CJK languages on Fabric. Users are forced to either disable the New Architecture entirely or build native workarounds.
Steps to reproduce
- Create a new React Native project with New Architecture enabled (Fabric)
- Add a
TextInputcomponent (controlled withvalue/onChangeTextor uncontrolled) - Run on iOS
- Switch to a CJK keyboard (Japanese Romaji, Chinese Pinyin, or Korean)
- Type text — e.g., "shinkansen" for Japanese, "zhongguo" for Chinese Pinyin, or any Korean syllable
- Observe: Composition underline is missing, composition state is destroyed, or characters are corrupted
React Native Version
0.76.5 ~ 0.82+ (all Fabric-enabled versions)
Affected Platforms
- Runtime - iOS
Areas
- Fabric - The New Renderer
Output of npx @react-native-community/cli info
System:
OS: macOS 15.1.1
CPU: (8) arm64 Apple M2
Memory: 164.45 MB / 8.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.5.1
path: ~/.nvm/versions/node/v22.5.1/bin/node
npm:
version: 10.8.2
path: ~/.nvm/versions/node/v22.5.1/bin/npm
SDKs:
iOS SDK:
Platforms:
- iOS 18.2
- macOS 15.2
IDEs:
Xcode:
version: 16.2/16C5032a
path: /usr/bin/xcodebuild
npmPackages:
react: 18.3.1
react-native: 0.76.5 ~ 0.82+
(Aggregated from multiple reporters — see #48497 and #55257 for individual environment details)
Stacktrace or Logs
No crash — this is a rendering/input behavior regression.
The IME composition state is silently destroyed by Fabric's synchronous
updateEventEmitter:/updateState: calls and defaultTextAttributes reapplication.
Reproducer
Expo Snack: https://snack.expo.dev/@hujbvf/missing-underline-during-japanese-ime-composition-on-ios?platform=ios
Reproducer repo (from #48497): https://github.com/haruki-m/react-native-text-input-issue
Screenshots and Videos
Reproduction video — Japanese IME composition underline missing (from #55257)
screen.mov
Reproduction video — CJK composition broken (from #48497)
Simulator.Screen.Recording.-.iPhone.SE.3rd.generation.-.2025-01-05.at.22.41.05.mp4
Fix verification — CJK (Chinese, Japanese, Korean) working correctly after fix (from PR #56082)
ime.testing.video.mp4
Fix verification — English no regression (from PR #56082)
english.test.mp4
Impact
- Languages affected: Chinese (Pinyin, Wubi, Zhuyin), Japanese (Romaji, Kana), Korean
- Versions affected: 0.76.5 through at least 0.81.4 (all Fabric-enabled versions)
- Workaround: Disable New Architecture, or use a native module workaround
- User reports: See [IOS] No/disappearing Conversion Line when Typing CJK (Chinese, Japanese, Korean) Characters into TextInput (0.76.5) #48497 (open since Jan 2025, 15+ months) and [Japanese Market Blocker] Missing IME Composition Underline - High-Priority Regression for Multilingual Support #55257 (14 👍, open since Jan 2026)
Existing Fix
PR #56082 provides a comprehensive fix addressing 7 distinct root causes in the Fabric TextInput implementation. It includes:
- 22 native XCTests covering full composition lifecycles for Korean, Japanese, Chinese, and mixed input
- 18 JS tests covering controlled/uncontrolled components, maxLength interaction, and cross-language switching
- Manual verification videos demonstrating correct behavior in all four languages (English, Chinese, Japanese, Korean)
- Detailed root-cause analysis for each of the 7 issues
The PR was submitted on March 13, 2026, test videos were provided upon request on March 19, and it has been waiting for review since then — over 4 weeks with no further feedback.
Why This Needs Attention
- New Architecture is now the default — CJK users cannot simply opt out forever
- The fix is ready — thoroughly tested, well-documented, and waiting for review
- The community is waiting — multiple users in [IOS] No/disappearing Conversion Line when Typing CJK (Chinese, Japanese, Korean) Characters into TextInput (0.76.5) #48497 have reported the same issue over 15 months, with no official fix in sight
- East Asian market adoption risk — apps targeting Chinese, Japanese, or Korean users cannot confidently adopt the New Architecture while basic text input is broken
References
- Original issue: [IOS] No/disappearing Conversion Line when Typing CJK (Chinese, Japanese, Korean) Characters into TextInput (0.76.5) #48497 (Jan 2025)
- Related issue: [Japanese Market Blocker] Missing IME Composition Underline - High-Priority Regression for Multilingual Support #55257 (Jan 2026)
- Fix PR: Fix iOS TextInput IME composition issues for CJK languages #56082 (Mar 2026, awaiting review)
Activity
react-native-bot commentedon Apr 16, 2026
Warning
Missing reproducer: We could not detect a reproducible example in your issue report. Reproducers are mandatory and we can accept only one of those as a valid reproducer:
You can read more about about it on our website: How to report a bug.
kdwkr commentedon Apr 16, 2026
I believe PR #56082 addresses the core problems described here. That said, given the complexity of the changes — touching 7 distinct code paths in the Fabric TextInput implementation — I can't guarantee there won't be any unintended side effects.
The reason I'm putting this effort into both the PR and this issue is that this problem is significant enough to warrant attention. It's not just my own experience — as shown in #48497 and #55257, developers across the CJK community have been struggling with this for over a year. Basic text input is a fundamental feature, and it being broken on the New Architecture is a real barrier for adoption in East Asian markets.
I'd really appreciate it if the team could take the time to review the PR and help get this resolved. Thank you.
voidsatisfaction commentedon Apr 16, 2026
I completely agree. Because of this issue, we can’t move to the new architecture. I know the team must be very busy, but I really hope this gets reviewed and merged soon so the problem can be resolved.
liy010 commentedon Apr 19, 2026
I didn't see this issue. If I had known, I wouldn't have upgraded the version
Fanzzzd commentedon Apr 20, 2026
This issue has been troubling me for a long time. When using a custom text input, it's difficult to ensure consistent styling, and even issues like different font weights before and after input can occur
shutoo commentedon May 5, 2026
I’m also facing this issue in my app. We received multiple user complaints because of it and had to roll back last year, and we’ve held off on upgrading ever since because of this issue alone.
Fanzzzd commentedon May 24, 2026
I have also been troubled by this issue for a long time and hope it can be properly resolved.
I believe many users who need to input CJK (Chinese, Japanese, and Korean) characters—especially developers—are frustrated by these related problems.