Apple memperkenalkan SwiftUI pada 2019, dan setiap tahun sejak itu SwiftUI mendapat fitur yang dulu hanya bisa dikerjakan dengan UIKit. Fitur baru platform Apple, widget, dan contoh kode semakin sering hadir untuk SwiftUI lebih dulu. Meski begitu, UIKit tetap ada. UIKit masih menjalankan sangat banyak aplikasi dan tetap jadi alat yang lebih baik untuk beberapa pekerjaan. Untuk proyek baru atau tim yang sedang merencanakan beberapa tahun ke depan, pertanyaan yang lebih berguna adalah seberapa banyak porsi masing-masing. Berikut cara kami memutuskannya.
Perbedaan Mendasar
UIKit bersifat imperatif. Anda membuat view controller dan view, mengatur posisinya dengan Auto Layout, lalu memperbaruinya setiap kali data berubah. SwiftUI bersifat deklaratif. Anda menulis body view yang menggambarkan UI untuk state saat ini, dan SwiftUI memperbarui layar ketika state berubah. Ide yang sama dipakai Jetpack Compose di Android dan React di web, sehingga SwiftUI lebih mudah dipelajari oleh developer yang datang dari platform itu.
Perbandingan Langsung
| Aspek | SwiftUI | UIKit |
|---|---|---|
| Kecepatan membangun layar standar | Cepat, kodenya sedikit dan ada live preview di Xcode | Lebih lambat, butuh lebih banyak kode untuk layout dan pembaruan |
| Kendali detail atas layout dan animasi | Bagus dan terus membaik, dengan beberapa kasus pinggir yang sulit dikendalikan | Kendali penuh, matang, dan mudah ditebak |
| Daftar yang sangat besar atau rumit | Biasanya aman, tapi optimasinya bisa lebih sulit | UICollectionView dengan compositional layout sudah terbukti di skala besar |
| Multiplatform | Banyak kode UI bisa dipakai bersama di iOS, iPadOS, macOS, watchOS, dan visionOS | iOS dan iPadOS, ditambah Mac Catalyst untuk Mac |
| Fitur platform terbaru | Sering hadir untuk SwiftUI lebih dulu atau hanya untuk SwiftUI, misalnya widget | Masih didukung, tapi sebagian fitur datang belakangan atau tidak sama sekali |
| Rekrutmen dan kode yang sudah ada | Developer baru biasanya mempelajari ini lebih dulu | Sebagian besar codebase lama dan banyak developer senior bergantung padanya |
Versi iOS Minimum Sangat Menentukan
Banyak fitur yang membuat SwiftUI nyaman dipakai di production baru hadir di rilis-rilis berikutnya. NavigationStack hadir di iOS 16, sedangkan framework Observation dengan macro @Observable hadir di iOS 17 dan membuat pengelolaan state lebih sederhana dan efisien. Kalau aplikasi Anda masih harus mendukung versi iOS yang lebih lama, Anda akan menemui kekurangan dan butuh jalan pintas atau UIKit. Cek data analytics Anda. Sebagian besar pengguna iPhone cepat memperbarui sistemnya, jadi mendukung dua versi mayor terakhir sudah umum, tapi aplikasi bisnis yang dipakai di perangkat kantor yang lebih lama mungkin perlu dukungan lebih luas.
Keduanya Bisa Dipakai Bersamaan
- UIHostingController menaruh view SwiftUI di dalam aplikasi UIKit, sehingga aplikasi lama bisa membangun layar baru dengan SwiftUI.
- UIViewRepresentable dan UIViewControllerRepresentable membungkus komponen UIKit supaya bisa dipakai di SwiftUI, misalnya tampilan kamera atau peta dengan perilaku khusus.
- Model, networking, dan logika bisnis tidak bergantung pada framework UI sama sekali, jadi bisa dipakai di keduanya tanpa perubahan.
Cara Kami Memutuskan
- 1Aplikasi baru dengan versi iOS minimum yang cukup baru: SwiftUI sebagai pilihan utama, dengan UIKit dibungkus untuk beberapa komponen yang memang membutuhkannya.
- 2Aplikasi UIKit yang sudah berjalan: pertahankan, lalu bangun layar dan fitur baru dengan SwiftUI lewat UIHostingController.
- 3Aplikasi dengan custom drawing yang berat, editing teks yang rumit, atau kebutuhan scroll yang sangat berat: UIKit untuk layar-layar itu, SwiftUI di sekitarnya.
- 4Tim yang sebagian besar berpengalaman dengan UIKit: sediakan waktu belajar, karena cara berpikir berbasis state butuh beberapa minggu sampai terasa alami.
Apa yang Dipelajari Lebih Dulu
Untuk yang baru mulai belajar pengembangan iOS, kuasai Swift dengan baik, lalu SwiftUI, termasuk state dengan @State, @Binding, dan @Observable, navigasi, daftar, dan memuat data secara async dengan async dan await. Setelah itu pelajari UIKit secukupnya untuk membaca kode lama, memahami lifecycle view controller, dan membungkus view UIKit saat diperlukan. Sebagian besar lowongan kerja melibatkan keduanya, dan developer yang nyaman berpindah di antara keduanya paling berguna di proyek nyata.
SwiftUI adalah arah yang dituju Apple. UIKit adalah tempat sebagian besar kode yang sudah ada berada. Tim iOS yang baik fasih di keduanya.
Pelatihan iOS Swift kami dimulai dari SwiftUI dan framework Observation, lalu membahas interoperabilitas dengan UIKit, supaya peserta bisa mengerjakan aplikasi baru sekaligus merawat aplikasi yang sudah ada.
Poin penting
- SwiftUI bersifat deklaratif dan lebih cepat untuk sebagian besar layar, sedangkan UIKit memberi kendali penuh dan sudah terbukti di skala besar.
- Versi iOS minimum berpengaruh besar, karena fitur seperti NavigationStack dan @Observable butuh iOS 16 dan 17.
- Kedua framework bisa bekerja bersama lewat UIHostingController dan protokol Representable.
- Jadikan SwiftUI pilihan utama untuk aplikasi baru, dan tambahkan layar SwiftUI secara bertahap ke aplikasi UIKit.
- Pelajari Swift dan SwiftUI lebih dulu, lalu UIKit secukupnya untuk membaca dan mengembangkan kode lama.


