Skip to content

[iOS/iPad Safari] Editor causes global page freezeΒ #7514

@roobox

Description

@roobox

Affected Packages

core

Version(s)

3.0.0

Bug Description

πŸ“ Issue Description:

Summary

On iOS/iPadOS Safari, performing rapid text selections or repeated selection changes in the TipTap editor causes all click events outside the editor to stop working globally. The page becomes unresponsive to clicks/taps, but touchstart/touchend events still fire. The freeze persists even after unmounting the editor component.
This issue is reproducable in the TipTap default editor: https://tiptap.dev/docs/examples/basics/default-text-editor (see attached video).

Consequence

A lot of users of my web app complain currently, that my web app freezes and nothing works anymore after they edit some text in the editor. Only refreshing the overall page makes it work again.

Environment

  • Device: iPhone 16 Pro
  • OS: iOS 26.2.1
  • Browser: Safari (WebKit)

Reproduction Steps

  1. Open any TipTap editor on an iOS/iPadOS device via the Safari browser (https://tiptap.dev/docs/examples/basics/default-text-editor)
  2. Rapidly select and deselect text (perform also multiple rapid selection changes)
  3. Try to click any button outside the editor (e.g., navigation, modal close button)

Expected: Button responds to click/tap
Actual: Button doesn't respond. No click events are fired anywhere outside the editor.

Technical Details

Console observations during freeze:

  • There is no overlay catching the all the clicks. Its only that no click events are synthesized** by Safari after touchend anymore
  • touchstart and touchend events do fire on buttons and bubble correctly to window (when I add onTouchEnd-Handler to the button, then this javascript code is executed successfully, but NOT the onClick code)
  • getComputedStyle(button).pointerEvents returns "auto" (not blocked by CSS)
  • Removing all event listeners (including passive: false) does not fix the issue
  • Even after unmounting the TipTap component, clicks remain broken globally

Browser state:

  • :hover pseudo-class gets stuck on <html> element
  • Safari appears to be in a corrupted "touch gesture in progress" state
  • Click synthesis (touch β†’ click conversion) is globally disabled

Impact

  • Severity: Critical for mobile users
  • All UI outside the editor becomes non-interactive
  • Only page reload recovers functionality
  • Affects production apps with mobile traffic

Workarounds Tested

❌ Removing all event listeners β†’ No effect
❌ Clearing selection (window.getSelection().removeAllRanges()) β†’ No effect
❌ Dispatching touchcancel events β†’ No effect
βœ… Using onTouchEnd instead of onClick on buttons β†’ Works, but not scalable

Video Evidence

ScreenRecording_02-10-2026.11-05-53_1.MOV

See attached screen recording where I enforce this freeze using the default TipTap editor from the official website. At the end of the video, I click on several buttons, but no onClick event is triggered -> Buttons do not respond and overall page appears freezed.
In the video you can see that I selected text very often and very fast using double-taps. But users report that just a single normal text selection already caused their page to freeze. So it does NOT need crazy behaviour like I showed in the video.

Browser Used

Safari

Code Example URL

https://tiptap.dev/docs/examples/basics/default-text-editor

Expected Behavior

onClick Listeners of all the html elements should still work. Overall page should not freeze.

Additional Context (Optional)

No response

Dependency Updates

  • Yes, I've updated all my dependencies.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Open SourceThe issue or pull reuqest is related to the open source packages of Tiptap.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions