Skip to content

Drag-and-drop functionality broken in Chrome 134+ due to BoundaryEventDispatchTracksNodeRemoval flag #89

@matti-tumo

Description

@matti-tumo

Drag-and-drop functionality for Blockly blocks is completely broken in Chrome version 134 and later. Blocks cannot be dragged from the toolbox or repositioned in the workspace. The issue is resolved by disabling the Chrome flag chrome://flags/#boundary-event-dispatch-tracks-node-removal.
Steps to Reproduce

Open any Blockly-based editor (e.g., https://lab.open-roberta.org/) in Chrome 134 or later
Attempt to drag a block from the toolbox to the workspace
Attempt to drag an existing block to reposition it

Expected Behavior:
Blocks should be draggable and repositionable as normal.
Actual Behavior:
Blocks do not respond to drag operations. The drag action fails to initiate or complete.
Environment

Browser: Google Chrome
Chrome Version: 134.x and 135.x (confirmed broken)
Operating System: macOS (also affects other platforms)
Blockly Version: As implemented in Open Roberta Lab (https://lab.open-roberta.org/)
Working Version: Chrome 133 and earlier

Workaround
Disabling the Chrome flag chrome://flags/#boundary-event-dispatch-tracks-node-removal (set to "Disabled") restores normal drag-and-drop functionality.
Impact
This is a critical issue affecting educational environments where:

Chrome browser restrictions prevent users from switching to other browsers
Students and teachers cannot access Blockly-based programming tools
Enterprise/education deployments cannot easily deploy Chrome flag modifications at scale

Technical Details
The Chrome flag "Boundary Event Dispatch Tracks Node Removal" was enabled by default in Chrome 134. This flag changes how the browser handles DOM event dispatching when elements are removed or repositioned during drag operations.
The issue likely relates to how Blockly manages:

Pointer/mouse events during drag operations
The drag surface layer (SVG manipulation during drags)
DOM node removal/repositioning while drag events are active

Additional Context
This issue is blocking production use in enterprise/educational settings where Chrome is the mandated browser and administrative deployment of Chrome flags is not feasible through standard MDM solutions like Jamf Pro.
Requested Action

Investigate event handling code related to drag operations
Update Blockly's drag implementation to be compatible with Chrome's new boundary event dispatch behavior
Consider adding compatibility shims if the old behavior can be safely maintained

Related Information

Chrome flag documentation: chrome://flags/#boundary-event-dispatch-tracks-node-removal
Confirmed working browsers: Safari, Firefox, Chrome 133 and earlier
Affected platforms: Open Roberta Lab and likely all Blockly-based editors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions