Section 10/102 menit
10. Ringkasan dan Checklist Migrasi
10. Ringkasan dan Checklist Migrasi
Checklist Fase per Fase
Fase 1 — Setup (Minggu 1)
- Upgrade Xcode ke versi terbaru (Xcode 16+)
- Pastikan semua target masih
SWIFT_VERSION = 5 - Build dan pastikan tidak ada error baru
- Aktifkan
Strict Concurrency = Minimaluntuk baseline
Fase 2 — Observasi Warning (Minggu 2-3)
- Naikkan
Strict Concurrency = Targeted - Catat semua warning yang muncul
- Kategorikan: mana yang mudah fix, mana yang kompleks
- Jangan fix dulu — pahami polanya dulu
Fase 3 — Fix Layer per Layer (Minggu 4-8)
- Models/Entities: jadikan
Sendable struct - Service/Worker: jadikan
actor - Repository: jadikan
actoratau@MainActor - ViewModel: anotasi
@MainActor - View/ViewController: anotasi
@MainActor - Callback/Delegate: refactor ke
async/awaitatau@MainActor
Fase 4 — Upgrade Target (Minggu 8-12)
- Mulai dari target paling sedikit dependency
- Set
SWIFT_VERSION = 6satu target pada satu waktu - Fix error yang muncul (warning sudah jadi error)
- Lanjut ke target berikutnya setelah yang sebelumnya green
Fase 5 — Full Swift 6 (Bulan 3+)
- Semua target sudah Swift 6
- Hapus
#if swift(<6.0)compatibility blocks yang tidak lagi diperlukan - Refactor
@unchecked Sendableke implementasi yang proper - Aktifkan Swift Testing untuk test baru
Quick Reference Directive
swift
// Guard berdasarkan:
#if swift(>=6.0) // Language version (SWIFT_VERSION build setting)
#if compiler(>=6.0) // Toolchain version (Xcode version)
#if canImport(Module) // Ketersediaan module di platform
#if hasFeature(Feature) // Fitur language spesifik
#available(iOS 18, *) // OS version (runtime check)
@available(iOS 18, *) // OS version (declaration annotation)
swift
// Package.swift settings:
.swiftLanguageVersion(.v5) // tetap Swift 5
.swiftLanguageVersion(.v6) // upgrade ke Swift 6
.enableUpcomingFeature("StrictConcurrency") // opt-in warning concurrency
.enableUpcomingFeature("TypedThrows") // opt-in typed throws
.enableUpcomingFeature("ExistentialAny") // opt-in any keyword
swift
// Xcode Build Settings:
SWIFT_VERSION = 5 // tetap Swift 5
SWIFT_VERSION = 6 // Swift 6 mode
SWIFT_STRICT_CONCURRENCY = minimal // warning minimal
SWIFT_STRICT_CONCURRENCY = targeted // warning relevan
SWIFT_STRICT_CONCURRENCY = complete // semua warning Swift 6
Dibuat: 2026-05-09 | Swift 5 → Swift 6 Migration | Xcode 16+