Skip to content

Commit 19941ee

Browse files
committed
perf(Preview): parallelize store loading and skip monitoring
- Load GlanceStore and InsightsStore concurrently using async let - Add startMonitoring parameter to InsightsStore.initializeIfNeeded() - Skip directory monitoring in previews to reduce initialization time
1 parent 011f233 commit 19941ee

2 files changed

Lines changed: 10 additions & 9 deletions

File tree

Packages/ClaudeUsage/Sources/App/AppEnvironment+Preview.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,11 @@ public struct PreviewEnvironment: PreviewModifier {
1818
public static func makeSharedContext() async throws -> AppEnvironment {
1919
print("\(timestamp()) PreviewEnvironment: Making shared context")
2020
let env = AppEnvironment.live()
21-
print("\(timestamp()) PreviewEnvironment: glanceStore.loadData start")
22-
await env.glanceStore.loadData()
23-
print("\(timestamp()) PreviewEnvironment: glanceStore.loadData end")
24-
print("\(timestamp()) PreviewEnvironment: insightsStore.loadData start")
25-
await env.insightsStore.loadData()
26-
print("\(timestamp()) PreviewEnvironment: insightsStore.loadData end")
21+
print("\(timestamp()) PreviewEnvironment: loading stores in parallel")
22+
async let glance: () = env.glanceStore.loadData()
23+
async let insights: () = env.insightsStore.initializeIfNeeded(startMonitoring: false)
24+
_ = await (glance, insights)
25+
print("\(timestamp()) PreviewEnvironment: stores loaded")
2726
return env
2827
}
2928

Packages/ClaudeUsage/Sources/Insights/Stores/InsightsStore.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,14 @@ public final class InsightsStore {
4141

4242
// MARK: - Public API
4343

44-
func initializeIfNeeded() async {
44+
func initializeIfNeeded(startMonitoring: Bool = true) async {
4545
guard !hasInitialized else { return }
4646
hasInitialized = true
4747

48-
await service.startMonitoring { [weak self] in
49-
Task { await self?.loadData() }
48+
if startMonitoring {
49+
await service.startMonitoring { [weak self] in
50+
Task { await self?.loadData() }
51+
}
5052
}
5153
await loadData()
5254
}

0 commit comments

Comments
 (0)