···88@main
99struct GrainApp: App {
1010 init() {
1111+ LaunchMetrics.beginTFP()
1212+ LaunchMetrics.beginPreBody()
1113 appSignposter.emitEvent("GrainAppInitBegin")
1214 // Defer Nuke DataCache setup off the main-thread init path — no images
1315 // load during the ~800ms before MainTabView.task fires, so this is safe.
···46464747 var body: some View {
4848 let _ = launchSignposter.emitEvent("MainTabViewBodyBegin")
4949+ let _ = LaunchMetrics.endPreBodyOnce()
4950 let _ = Self.badgeAppearanceConfigured
5051 Group {
5152 if let client {