Overview › SwiftUI & UIKit Layer

SwiftUI & UIKit Layer

288 SwiftUI imports adopted across features; UIKit + 29 storyboards + 33 XIBs persist.

15 findings in this category · iOS
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.
MEDIUM

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

15 shown
Costco iOS · Code Review Report · Generated 2026-05-07 · 88 machine-curated findings