Typing becomes slow with large contenteditable content
OS: Any Ubuntu 22.04 · Device: Desktop or Laptop Any · Browser: Chrome 120.0 · Keyboard: US
Open case →Scenario
Huge DOM trees make each keystroke expensive: layout, style recalc, and spellcheck can block input—virtualization or chunking is often required.
Huge DOM trees make each keystroke expensive: layout, style recalc, and spellcheck can block input—virtualization or chunking is often required.
Visual view of how this scenario connects to its concrete cases and environments. Nodes can be dragged and clicked.
Each row is a concrete case for this scenario, with a dedicated document and playground.
| Case | OS | Device | Browser | Keyboard | Status |
|---|---|---|---|---|---|
| ce-0026-performance-large-content | Any Ubuntu 22.04 | Desktop or Laptop Any | Chrome 120.0 | US | draft |
Open a case to see the detailed description and its dedicated playground.
OS: Any Ubuntu 22.04 · Device: Desktop or Laptop Any · Browser: Chrome 120.0 · Keyboard: US
Open case →Other scenarios that share similar tags or category.
getSelection(), getRangeAt, and DOM walks over very large contenteditable trees can block the main thread when the user selects all or drags across thousands of nodes—mobile devices suffer first.
When a ResizeObserver is attached to a contenteditable element, the observer may trigger during editing as content changes size. This can cause layout recalculations and visual jumps, especially when the contenteditable has dynamic height.
A known Chromium regression around spellcheck and large contenteditable regions caused severe typing lag—documented for planning workarounds such as spellcheck=false or chunking.
When a contenteditable element has CSS filters applied (blur, brightness, etc.), editing performance may be degraded. Typing may lag, and selection may be slow to update.
When a contenteditable element has CSS will-change property set, performance may be affected. In some cases, it may improve performance by hinting the browser about upcoming changes. In other cases, it may degrade performance by creating unnecessary layers.
Have questions, suggestions, or want to share your experience? Join the discussion below.