TCA Migration
Remove The Composable Architecture from Leavn codebase.
Find TCA Usage
grep -r "Reducer" --include=".swift" | grep -v "Pods|DerivedData" grep -r "Store|ViewStore" --include=".swift" grep -r "@Dependency" --include=".swift" grep -r "ComposableArchitecture" --include=".swift"
Migration Pattern
TCA Feature → @Observable ViewModel
Before (TCA):
@Reducer struct MyFeature { @ObservableState struct State { var count = 0 } enum Action { case increment } var body: some ReducerOf<Self> { ... } }
After (@Observable):
@Observable @MainActor class MyViewModel { var count = 0 func increment() { count += 1 } }
Removal Order
-
Leaf features (no child reducers)
-
Parent features (after children migrated)
-
App-level store (last)
-
Remove TCA from Package.swift
Audit Command
find . -name "*Feature.swift" -o -name "*Reducer.swift" | wc -l
Use when: TCA removal, migration tracking, @Observable conversion