After investigating the HelixNotes codebase and Tauri's drag-and-drop behavior, I've identified why drag'n'drop isn't working on Android and Windows:
Tauri 2.0 blocks native DOM drag-and-drop events by default.
The app uses TipTap editor (a ProseMirror-based editor) which relies on native browser drag-and-drop events (ondrop, ondragover, ondragenter) to handle:
However, Tauri 2.0 enables its own internal drag-and-drop handler by default (dragDropEnabled: true), which:
tauri://file-drop) insteadSince HelixNotes doesn't have code to listen for Tauri's file-drop events, the drops are intercepted and silently ignored.
src-tauri/tauri.conf.json)json{ "app": { "windows": [{ "title": "HelixNotes", "label": "main", // ❌ MISSING: "dragDropEnabled": false }] } }
The dragDropEnabled flag is not set, so it defaults to true, blocking native DOM events.
From Tauri's own documentation and community discussions:
"When using Tauri, if a developer would like to use native DOM drag and drop events, it is necessary to set
dragDropEnabledtofalse"
— Tauri Issue #14373
"Tauri's internal drag and drop system is enabled, and DOM drag and drop is disabled"
— Tauri Docs
The TipTap Image extension and custom file handling in HelixNotes use standard browser APIs:
event.dataTransfer.files for dropped filesondrop / ondragover handlers on the editorAdd dragDropEnabled: false to your window config in src-tauri/tauri.conf.json:
json{ "app": { "windows": [{ "title": "HelixNotes", "label": "main", "width": 1200, "height": 800, "dragDropEnabled": false // ✅ Enable native DOM events }] } }
This will:
Alternatively, you could keep Tauri's handler and listen for its events:
typescript// In your frontend code import { listen } from '@tauri-apps/api/event'; listen('tauri://file-drop', (event) => { const { paths, position } = event.payload; // Handle dropped files manually });
But this requires rewriting all drag-and-drop logic in HelixNotes to use Tauri's API instead of native events.
The HelixNotes codebase shows:
const isMobile = /android|ios/i.test(navigator.userAgent)For Android:
dragDropEnabled: false fix should workEdit src-tauri/tauri.conf.json:
json"windows": [{ "dragDropEnabled": false }]
Test on all platforms:
For Android improvements (optional):
touchstart, touchmove, touchend eventsSummary: The fix is simple - just add "dragDropEnabled": false to your Tauri window configuration. This will unblock native DOM drag-and-drop events that TipTap and your custom code rely on.