Lagi asik-asiknya ngulik Nuxt dan ekosistem web, belakangan ini gua lagi nyoba nyebrang ke dunia Apple. Ya, nyoba belajar Swift dan bikin aplikasi native iOS.

Buat yang udah bertahun-tahun mainan DOM, HTML, dan CSS, nyebrang ke mobile native ternyata ngasih banyak banget kejutan. Bukan cuma beda bahasa, tapi mental model-nya beneran harus di-reset di beberapa bagian.

Izin share beberapa hal yang bikin kaget (dan kadang bikin garuk kepala) pas awal-awal pegang Swift dan ekosistem iOS.

1. Declarative UI itu mirip, tapi beda rasa

Kalau lu terbiasa pakai Vue atau React, pas lihat SwiftUI pasti kerasa ada kemiripan. Kita sama-sama bikin UI berdasarkan state. Tapi bedanya, di web kita sangat leluasa mainan CSS. Mau bikin layout seaneh apa pun, CSS Grid dan Flexbox selalu bisa diandalkan.

Di SwiftUI, cara ngatur layout pakai VStack, HStack, dan ZStack itu emang intuitif, tapi pas butuh styling yang pixel-perfect dan spesifik, rasanya nggak sebebas CSS. Belum lagi kalau harus nyentuh UIKit pakai SnapKit, rasanya kayak belajar ngerakit mesin dari awal.

2. State Management yang super strict

Di Vue, kita punya ref() atau Pinia. Tinggal panggil, ubah value, dan UI langsung update. Nggak terlalu pusing sama tipe data selama linter nggak teriak.

Di Swift, type safety itu harga mati. Konsep @State, @Binding, @ObservedObject emang elegan, tapi compiler Swift galak banget. Nggak bisa tuh asal lempar data beda tipe atau lupa ngasih default value. Compiler-nya bakal langsung nolak build. Awalnya emang ngeselin, tapi lama-lama kerasa kalau ini ngebantu banget buat mencegah bug aneh tembus ke production.

3. Drama Build Time dan Xcode

Di web, kita dimanjakan sama Vite atau Nuxt dev server. Save file, kurang dari sedetik UI langsung update (hot module replacement).

Di iOS? Selamat datang di Xcode. Waktu build bisa lumayan berasa, apalagi kalau project-nya udah gede. Belum lagi kalau mulai urusan sama Certificate, Provisioning Profile, dan drama Code Signing pas mau test di device asli. Jujur aja, urusan setup environment di iOS jauh lebih ribet dibanding web yang tinggal npm install.

Tetap worth it buat dipelajari

Meski banyak kagetnya, belajar ekosistem baru ini beneran ngebuka wawasan. Kita jadi paham kenapa aplikasi native itu rasanya lebih snappy, gimana cara OS nge-handle memory, dan pastinya nambah tooling di sabuk senjata kita.

Buat temen-se-frontend yang mau coba belajar Swift, saran gua: kosongin gelas dulu. Jangan paksain cara kerja web ke iOS. Nikmatin aja proses belajarnya, termasuk proses berantem sama Xcode-nya.

Ada yang lagi nyoba belajar mobile native juga nggak akhir-akhir ini?