https://stackoverflow.com/questions/79865253/watchos-swiftui-ui-redraws-are-delayed-in-always-on-power-saving-mode-despite

I'm working on a watchOS app using SwiftUI that updates its UI based on regular, time-driven logic. On a real Apple Watch, after the app has been running for ~1 minute, the device enters Always-On / power-saving display mode (screen dimmed, wrist down). From that point on, SwiftUI UI updates become noticeably delayed. The underlying logic continues to run correctly, but the UI only redraws sporadically and often "catches up" once the screen becomes fully active again. The app is running in workout mode, which keeps it alive and maintains WatchConnectivity, but this does not prevent UI redraw throttling. Below is a minimal reproducible example that demonstrates the issue.

PlaybackModel.swift

import SwiftUI

@MainActor
final class PlaybackModel: ObservableObject {
    @Published var beat: Int = 0
    private var timer: Timer?

    func start() {
        timer?.invalidate()
        timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { _ in
            Task { @MainActor in
                self.beat += 1
            }
        }
    }

    func stop() {
        timer?.invalidate()
    }
}

ContentView.swift (watchOS)

import SwiftUI

struct ContentView: View {
    @StateObject private var model = PlaybackModel()

    var body: some View {
        VStack {
            Text("Beat: \(model.beat)")
                .font(.largeTitle)
        }
        .onAppear {
            model.start()
        }
        .onDisappear {
            model.stop()
        }
    }
}

Observed Behavior • The beat value continues to increase reliably. • After the watch enters Always-On / power-saving mode, SwiftUI redraws are delayed or skipped. • When the screen becomes fully active again, the UI catches up.

Questions: • Is this UI redraw throttling in Always-On / power-saving mode an unavoidable system limitation on watchOS? • Is there any supported way to keep consistent SwiftUI update frequency while the app is visible but dimmed?

Answered by DTS Engineer in 872089022

What you see is as-designed – In the Always On state, apps running a background session (a workout session in your case) can continue to update its interface, but to preserve battery life, the system only refreshes the user interface about once per second. This is documented in here.

Your timer repeats every 0.5 second, and so I won't expect that the screen update can catch up every change on beat. Depending on your use case, if you can reduce the timer interval to 1 second or longer, the system will likely be able to catch up.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

What you see is as-designed – In the Always On state, apps running a background session (a workout session in your case) can continue to update its interface, but to preserve battery life, the system only refreshes the user interface about once per second. This is documented in here.

Your timer repeats every 0.5 second, and so I won't expect that the screen update can catch up every change on beat. Depending on your use case, if you can reduce the timer interval to 1 second or longer, the system will likely be able to catch up.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

https://stackoverflow.com/questions/79865253/watchos-swiftui-ui-redraws-are-delayed-in-always-on-power-saving-mode-despite
 
 
Q