-
Notifications
You must be signed in to change notification settings - Fork 41
Description
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