Skip to content

File Shelf: ~10s stall + Core Drag reentrancy when dropping a file onto the notch (macOS 26) #650

Description

@mehmetefeaytas

Summary

On macOS 26 (Tahoe), dragging a file from Finder onto the notch to drop it into the File Shelf stalls for ~10 seconds — the file "waits" at the entry stage with a loading indicator before it is finally added.

Environment

  • macOS 26.5.2 (Tahoe), build 25F84
  • Atoll built from source (dev)

Console signature

During the drag, the system logs Core Drag reentrancy:

Reentrant message: kDragIPCWithinWindow, current message: kDragIPCWithinWindow
Reentrant message: kDragIPCLeaveApplication, current message: kDragIPCEnterLeaveHandler

plus [MusicControl] ... floating window sync (force: true) while deferred piling up (main runloop busy during the drag).

Root cause

When a drag enters the notch, dragDetector opens the notch (ContentViewopenNotch()DynamicIslandViewModel.open()), which synchronously resizes the notch NSPanel on the main thread via window.setFrame(targetFrame, display: true) (AppDelegate.resizeWindow in DynamicIslandApp.swift).

Resizing the drag-destination window during an active drag — inside AppKit's Core Drag IPC handler — triggers the reentrancy above, and display: true forces a synchronous redraw of the heavy SwiftUI hierarchy inside the drag callback. The drag IPC doesn't get a timely response, so AppKit falls back to a ~10s timeout before the drop completes.

Contributing factors: coordinator.currentView = .shelf triggers a second resize via the $currentView sink, the reminder-activity observer can trigger a third, and anyDropZoneTargeting has no debounce — so cursor enter/leave over the resizing window multiplies the reentrancy.

What does NOT fix it

Deferring the open (DispatchQueue.main.async) and debouncing anyDropZoneTargeting reduce the reentrancy count (e.g. 7 → 1) but do not remove the stall — even a single window resize during the active drag re-triggers it.

Suggested fix

Avoid changing the notch window's geometry during an active drag. Either keep the notch panel a fixed size and animate only the content reveal (so the drop-destination window never resizes mid-drag), or use a separate fixed-size transparent drop-catcher window for drag detection and open the visual shelf after the drop completes.

Related

Likely the drag-in counterpart of #646 (dragging out of the shelf gets stuck) — both look like macOS 26/27 Core Drag + window-manipulation interactions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions