ARTICLE AD BOX
A TimelineView or a timer with .common RunLoop mode causes a Menu's submenu in the same view hierarchy, even if not a parent of the menu, to flicker.
However, this only happens if the Menu has a .buttonStyle(.plain) modifier applied.
I believe this obscure bug appeared in macOS 26.1. I'm not sure if this is also an issue on iOS.
If .buttonStyle(.plain) is removed from the Menu, this issue disappears.
This is the code I used:
struct ContentView: View { var body: some View { TimelineView(.periodic(from: .distantPast, by: 1)) { _ in Text(Date.now.formatted(.dateTime.hour().minute().second())) } Menu { Menu { Button("Item") {} } label: { Text("Submenu") } } label: { Text("Menu") } .buttonStyle(.plain) } }The same thing happens if I use a timer with a .common RunLoop mode, e.g.
struct TimerView<Content: View>: View { let interval: TimeInterval let content: (Date) -> Content @State private var currentTime = Date.now @State private var timer: Timer? init(interval: TimeInterval, @ViewBuilder content: @escaping (Date) -> Content) { self.interval = interval self.content = content } var body: some View { content(currentTime) .onAppear { let newTimer = Timer(timeInterval: interval, repeats: true) { _ in currentTime = Date.now } RunLoop.current.add(newTimer, forMode: .common) timer = newTimer } .onDisappear { timer?.invalidate() timer = nil } } } struct ContentView: View { var body: some View { TimerView(interval: 1) { _ in Text(Date.now.formatted(.dateTime.hour().minute().second())) } Menu { Menu { Button("Item") {} } label: { Text("Submenu") } } label: { Text("Menu") } .buttonStyle(.plain) } }If I change to .default mode, the issue disappears again.
Is there a workaround for this?

