Case ce-0581 · Scenario scenario-ime-interaction-patterns

Android Chrome: Emoji insertion cancels composition without committing

OS: Android 14.0 / 15.0 Device: Smartphone Any Browser: Chrome 131.0+ Keyboard: Gboard (Emoji) Status: confirmed
android chrome-131 emoji composition data-loss

Phenomenon

A data-loss bug exists in high-version Chromium for Android (131+) when mixing complex IME composition with emoji input. If a user is in the middle of typing a character (especially in CJK or Thai) and switches to the emoji keyboard to insert an icon, the browser triggers a compositionend event with data: "" or null. This effectively wipes out the currently composing character instead of finalizing it.

Reproduction Steps

  1. Open a contenteditable editor on Android.
  2. Use a CJK IME (like Korean Gboard).
  3. Type a character so that the underline is visible (active composition).
  4. Without hitting Space or Enter, open the Emoji menu and select an emoji.
  5. Check if the composing character remains in the DOM.

Observed Behavior

  • Buffer Wipeout: The compositionupdate text disappears from the DOM.
  • Missing Events: The browser fails to send an insertReplacementText or insertText event for the ghost-character.
  • Inconsistent ‘beforeinput’: beforeinput types for the emoji are fired, but no events are fired to “clean up” the previous session.

Impact

  • Information Loss: Users lose the last syllable of their sentence if they punctuate with an emoji.
  • Frustration: Users must switch back keyboards, re-type the character, and then re-add the emoji.

Browser Comparison

  • Chrome for Android (131+): Confirmed regression.
  • iOS Safari: Correctly flushes the composition buffer before inserting the emoji.
  • Firefox for Android: Generally stable; correctly handles the keyboard switch.

References & Solutions

Mitigation: manual flush

Developers can watch for a keyboard type change (if detectable) or manually capture the last compositionupdate value. If a focus-like or input-mode change occurs while isComposing is true, manually insert the cached text.

1. Active Composition
Hang|
User is mid-composition for a Korean syllable (e.g., 'ㄱ').
2. Insert Emoji
The user switches to the emoji pane and inserts an icon.
vs
✅ Expected
Hang😊|
Expected: The browser should flush the composition buffer ('g') before inserting the emoji.

Browser compatibility matrix

This matrix shows which browser and OS combinations have documented cases for this scenario. The current case is highlighted. Click on a cell to view other cases.

Current case
Confirmed
Draft
No case documented

All variants (detailed table)

Complete list of all cases for this scenario with full environment details.

Case OS Device Browser Keyboard Status
ce-0002-ime-enter-breaks Windows 11 Desktop or Laptop Any Chrome 120.0 Korean (IME) draft
ce-0004-ime-backspace-removes-whole-syllable Windows 11 Desktop or Laptop Any Chrome 120.0 Korean (IME) draft
ce-0022-ime-enter-breaks-firefox Windows 11 Desktop or Laptop Any Firefox 120.0 Korean IME draft
ce-0030-backspace-composition-chrome macOS Ubuntu 22.04 Desktop or Laptop Any Chrome 120.0 Japanese IME draft
ce-0035-backspace-deletes-whole-word macOS Ubuntu 22.04 Desktop or Laptop Any Safari 120.0 US draft
ce-0042-input-events-duplicate Windows 11 Desktop or Laptop Any Edge 120.0 US draft
ce-0058-contenteditable-with-autocomplete macOS Ubuntu 22.04 Desktop or Laptop Any Chrome 120.0 US draft
ce-0070-contenteditable-with-autocapitalize iOS 17.0 iPhone Any Safari 17.0 US draft
ce-0071-contenteditable-with-autocorrect iOS 17.0 iPhone Any Safari 17.0 US draft
ce-0181-japanese-ime-enter-breaks-chrome Windows 11 Desktop or Laptop Any Chrome 120.0 Japanese (IME) draft
ce-0182-chinese-ime-enter-breaks-safari macOS 14.0 Desktop or Laptop Any Safari 17.0 Chinese (IME - Pinyin) draft
ce-0185-japanese-ime-backspace-granularity-chrome Windows 11 Desktop or Laptop Any Chrome 120.0 Japanese (IME) draft
ce-0186-chinese-ime-backspace-granularity-safari macOS 14.0 Desktop or Laptop Any Safari 17.0 Chinese (IME - Pinyin) draft
ce-0195-thai-ime-enter-breaks-chrome Windows 11 Desktop or Laptop Any Chrome 120.0 Thai (IME) draft
ce-0196-vietnamese-ime-enter-breaks-edge Windows 11 Desktop or Laptop Any Edge 120.0 Vietnamese (IME) draft
ce-0199-thai-ime-backspace-granularity-chrome Windows 11 Desktop or Laptop Any Chrome 120.0 Thai (IME) draft
ce-0200-vietnamese-ime-backspace-granularity-edge Windows 11 Desktop or Laptop Any Edge 120.0 Vietnamese (IME) draft
ce-0217-keyboard-handlers-iscomposing-false-ios-safari-korean iOS 17.0+ iPhone or iPad Any Safari 17.0+ Korean (IME) draft
ce-0565-chrome-121-oninput-offset-0 Windows 11 Desktop Any Chrome 121.0.6167.86 US QWERTY confirmed
ce-0579 macOS 15.0 (Sequoia) Desktop Any All Browsers (ProseMirror context) Latest (Nov 2025) Apple Magic Keyboard (US) confirmed
ce-0581 Android 14.0 / 15.0 Smartphone Any Chrome 131.0+ Gboard (Emoji) confirmed

Playground for this case

Use the reported environment as a reference and record what happens in your environment while interacting with the editable area.

Reported environment
OS: Android 14.0 / 15.0
Device: Smartphone Any
Browser: Chrome 131.0+
Keyboard: Gboard (Emoji)
Your environment
Sample HTML:
Event log
Use this log together with the case description when filing or updating an issue.
0 events
Interact with the editable area to see events here.

Comments & Discussion

Have questions, suggestions, or want to share your experience? Join the discussion below.