Overview › SwiftUI & UIKit Layer
SwiftUI & UIKit Layer
288 SwiftUI imports adopted across features; UIKit + 29 storyboards + 33 XIBs persist.
65
SCORE
Summary
Mixed UIKit + SwiftUI surface. 288 files import SwiftUI across feature modules; UIKit persists in main app screens, with 29 storyboards + 33 XIBs still active. Migration is in progress; the design system CostcoDesignSystem exposes both PalletUIKit and SwiftUI variants.
Findings
PASS
Design system supports both UI frameworks
CostcoDesignSystem ships PalletUIKit and Pallet SwiftUI tokens — the right structure for a mixed codebase.HIGH
Storyboards + XIBs still primary in main app
29 storyboards + 33 XIBs. Storyboards make merge conflicts painful and resist refactors. SwiftUI Previews are nonexistent in storyboard-driven flows.
Recommendation: Inventory remaining storyboards by traffic; prioritize Cart, Search, PDP for SwiftUI rebuild.
MEDIUMSwiftUI
SwiftUI @Preview coverage low
Some SwiftUI screens lack
#Preview blocks. Without previews, design iteration is slow.Recommendation: Mandate at least one
#Preview per public View; add a Snapshot test that uses Previews as input.MEDIUM
Hardcoded UIFont sizes — no Dynamic Type
Onboarding, LocationFilters, and other UIKit screens use
UIFont.systemFont(ofSize: 14) or similar hardcoded sizes — they don't honor Larger Text setting.Recommendation: Use
UIFont.preferredFont(forTextStyle: .body); in SwiftUI use semantic font styles or .dynamicTypeSize ranges.LOW
UIHostingController bridging
When SwiftUI views are embedded in UIKit (and vice versa), confirm
UIHostingController bridges adopt sizing properly and don't break safe-area insets.Recommendation: Smoke test rotation + safe-area on each hybrid screen.
Findings in this category
Costco iOS · Code Review Report · Generated 2026-05-07 · 88 machine-curated findings