diff --git a/Sources/WindowToolbarController.swift b/Sources/WindowToolbarController.swift index fedadd35..c340ce88 100644 --- a/Sources/WindowToolbarController.swift +++ b/Sources/WindowToolbarController.swift @@ -133,8 +133,12 @@ final class WindowToolbarController: NSObject, NSToolbarDelegate { updateSizeCancellables[key] = updateViewModel.$state .receive(on: DispatchQueue.main) .sink { [weak self, weak view] _ in - guard let self, let view else { return } - self.sizeToolbarItem(for: key, hostingView: view) + // @Published fires on willSet, so SwiftUI hasn't processed the + // new state yet. Defer measurement to the next run loop cycle. + DispatchQueue.main.async { [weak self, weak view] in + guard let self, let view else { return } + self.sizeToolbarItem(for: key, hostingView: view) + } } return item }