Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

DeviceActivityReport inside SwiftUI Button doesn’t receive tap gestures (ScreenTime API, iOS 17+)

Hi everyone,

I’m experimenting with the new ScreenTime DeviceActivityReport view in SwiftUI (iOS 17 / Xcode 15). My goal is to show the report inside a Button (or, more generally, capture any tap on it) so that I can push a detail screen when the user selects it.

Here’s the minimal code that reproduces the issue:

import FamilyControls import DeviceActivity import SwiftUI

struct ScreenTimeView: View { let center = AuthorizationCenter.shared

@State private var context: DeviceActivityReport.Context =
    .init(rawValue: "Total Activity")

@State private var filter = DeviceActivityFilter(
    segment: .hourly(
        during: Calendar.current.dateInterval(of: .day, for: .now)!
    ),
    users: .all,
    devices: .init([.iPhone, .iPad])
)

var body: some View {
    ZStack {
        DeviceActivityReport(context, filter: filter)
    }
    .onAppear {
        Task {
            do {
                try await center.requestAuthorization(for: .individual)
            } catch {
                print("Authorization failed:", error)
            }
        }
    }
}

}

struct ContentView: View { var body: some View { ScrollViewReader { _ in ScrollView(showsIndicators: false) { VStack { Button { print("BUTTON TAPPED") // ← never fires } label: { ScreenTimeView() .frame(height: UIScreen.main.bounds.height * 1.4) } } } } } } ** What happens**

DeviceActivityReport renders correctly with hourly bars.

Tapping anywhere inside the Button does not trigger print("BUTTON TAPPED").

I’ve tried replacing Button with .onTapGesture, adding .contentShape(Rectangle()), and .allowsHitTesting(true), but nothing registers.

What I’ve checked

Authorisation succeeds—calling code in .onAppear prints no errors.

Removing DeviceActivityReport and replacing it with a plain Rectangle() lets the tap gesture fire, so the issue seems specific to DeviceActivityReport.

DeviceActivityReport inside SwiftUI Button doesn’t receive tap gestures (ScreenTime API, iOS 17+)
 
 
Q