Pengembangan aplikasi mobile semakin populer dengan meningkatnya permintaan untuk aplikasi lintas platform (cross-platform). Framework seperti React Native memungkinkan developer membuat aplikasi untuk Android dan iOS menggunakan basis kode yang sama, yang tentunya menghemat waktu dan biaya. Salah satu tool paling populer dalam ekosistem React Native adalah Expo.
Perkembangan, Tantangan, dan Kebutuhan Pengembangan Aplikasi yang Cepat dan Efektif.
Dilansir oleh Appicial, pada akhir 2022 terdapat sekitar 2,1 juta aplikasi di App Store dan 2,8 juta aplikasi di Google Play Store. Angka ini menunjukkan bahwa pasar aplikasi mobile terus berkembang pesat, dan dengan proyeksi penggunaan perangkat mobile yang mencapai lebih dari 70% populasi dunia pada tahun 2025, pilihan aplikasi yang tersedia akan semakin beragam. Kenaikan ini tidak hanya mendorong inovasi di bidang teknologi mobile, tetapi juga menciptakan peluang besar bagi perusahaan untuk tampil menonjol di tengah persaingan aplikasi yang kian padat.
Permintaan akan solusi mobilitas, terutama di kalangan pengguna digital, telah mendorong industri pengembangan aplikasi mobile ke tingkat yang lebih tinggi. Konsumen kini menginginkan akses cepat dan instan ke layanan, mendorong perusahaan untuk beradaptasi dan mengembangkan aplikasi yang intuitif dan mudah diakses. Hal ini membuka peluang besar bagi perusahaan teknologi untuk berinovasi, karena pengguna kini lebih memilih layanan yang bisa diakses langsung dari perangkat mereka.
Banyak perusahaan beralih ke solusi lintas platform atau hybrid, yang terbukti lebih hemat biaya dan mampu menjangkau lebih banyak pengguna di berbagai perangkat. Solusi lintas platform memungkinkan aplikasi untuk berjalan di iOS dan Android dengan satu kode dasar, mengurangi waktu dan biaya pengembangan secara signifikan. Dengan teknologi seperti React Native dan Expo, pengembang dapat membangun aplikasi mobile berkualitas tinggi tanpa perlu menciptakan dua versi terpisah untuk setiap platform.
Expo lahir dari kebutuhan developer untuk mempermudah proses pengembangan aplikasi mobile yang responsif, serbaguna, dan dapat digunakan lintas platform. Didirikan pada tahun 2015, Expo menawarkan serangkaian alat yang memungkinkan developer untuk membangun aplikasi mobile dengan JavaScript/Typescript dan React Native tanpa perlu mengatur native code yang rumit. Expo pada awalnya dikenal karena membuat pengembangan aplikasi menjadi lebih cepat dan efisien berkat fitur seperti Expo Go, yang memungkinkan pengguna untuk langsung menguji aplikasi pada perangkat tanpa proses build manual.
Expo sebagai React Native Framework
Expo adalah framework yang dikembangkan untuk mendukung proses pembuatan aplikasi mobile berbasis React Native yang lebih sederhana, cepat, dan terstruktur. Sebagai lapisan di atas React Native, Expo memungkinkan developer untuk mengakses alat dan API yang siap digunakan tanpa perlu menangani konfigurasi kompleks di native code. Dengan menggunakan bahasa pemrograman JavaScript atau TypeScript, React Native Expo memungkinkan pembuatan aplikasi iOS dan Android sekaligus, sehingga meminimalkan waktu dan biaya dalam mengembangkan aplikasi lintas platform.
Seiring dengan perkembangannya, Expo telah menambahkan banyak fitur yang membantu developer memenuhi kebutuhan aplikasi yang lebih canggih dan kompleks. Expo menyediakan dua jenis workflow: Managed Workflow dan Bare Workflow. Dalam Managed Workflow, Expo menangani semua konfigurasi native, memudahkan developer dengan proyek yang lebih sederhana. Sementara itu, Bare Workflow memberikan fleksibilitas bagi developer yang membutuhkan kendali lebih dalam konfigurasi native, memungkinkan mereka menambahkan kode native secara langsung jika dibutuhkan.
Jika kita membuka website resmi react native saat ini, pada bagian environtment setup (https://reactnative.dev/docs/environment-setup), maka kita akan menemukan statement bahwa menggunakan React Native bersama framework seperti Expo adalah cara terbaik untuk membangun aplikasi siap-produksi. Expo menyediakan berbagai API penting yang mempermudah pengembangan, seperti sistem routing berbasis file, perpustakaan universal berkualitas tinggi, serta dukungan untuk membuat plugin yang dapat memodifikasi kode native tanpa perlu mengelola file-file native secara langsung.
Dalam beberapa tahun terakhir, Expo menjadi semakin populer karena dukungannya pada DevOps dan Continuous Integration/Continuous Delivery (CI/CD) yang semakin penting di kalangan developer. Alat-alat ini memungkinkan proses pengembangan dan deployment menjadi lebih cepat, efisien, dan stabil dengan integrasi otomatis. Selain itu, komunitas dan dokumentasi yang luas menjadikan Expo sebagai pilihan yang kuat untuk tim dan developer individual yang mencari solusi lintas platform yang efisien dan efektif.
Mengapa Memilih Expo?
Expo sangat membantu bagi mereka yang ingin memulai dengan cepat tanpa mengorbankan fungsionalitas aplikasi. Berikut beberapa alasan mengapa banyak developer memilih Expo:
- Sederhana dan Mudah Diakses: Expo mempermudah pengaturan dan menjalankan proyek React Native.
- Pengembangan Cepat: Expo menyediakan alat pengujian cepat, seperti Hot Reloading dan Expo Go, yang memungkinkan kita langsung melihat perubahan di perangkat.
- Komunitas yang Besar dan Dokumentasi yang Lengkap: Expo memiliki komunitas yang aktif dan dokumentasi yang detail, sehingga mudah menemukan solusi jika terjadi masalah.
- Lintas Platform: Dengan Expo, kita bisa mengembangkan aplikasi yang kompatibel di iOS, Android, dan bahkan di web.
Ragam Fitur Expo untuk Mempercepat Pengembangan dan Delivery Aplikasi
Expo menawarkan berbagai fitur yang mendukung pengembangan aplikasi lintas platform, mulai dari build sistem, pengelolaan proyek, hingga berbagai pustaka yang siap digunakan. Berikut beberapa fitur utama Expo yang dapat mempercepat pengembangan aplikasi:
- SDK yang Kaya Fitur: Expo memiliki modul SDK yang luas seperti akses kamera, notifikasi, GPS, hingga integrasi sosial media, yang semuanya mudah diimplementasikan tanpa kode asli tambahan. Hal ini membuat pengembangan lebih efisien karena banyak fungsi penting sudah tersedia dan siap pakai dalam bentuk API yang sederhana.
- Expo Application Services (EAS): EAS mencakup beberapa layanan utama seperti EAS Build, EAS Submit, dan EAS Update. EAS Build memungkinkan pengembang untuk membuat aplikasi lintas platform (iOS dan Android) tanpa harus menyiapkan konfigurasi native. Sementara itu, EAS Update memungkinkan pengiriman update over-the-air (OTA) secara langsung tanpa melewati proses App Store atau Play Store, memudahkan perbaikan bug dan penyempurnaan fitur tanpa mengganggu pengalaman pengguna.
- Pengembangan Tanpa Mac untuk iOS: Salah satu kelebihan unik Expo adalah kemampuannya untuk membangun aplikasi iOS tanpa memerlukan perangkat Mac. Ini dicapai melalui layanan EAS Build, yang memungkinkan pembuatan file .ipa ataupun .app (file aplikasi iOS) secara cloud-based. Ini sangat memudahkan tim yang tidak memiliki akses ke Mac untuk tetap bisa mengembangkan dan menguji aplikasi di iOS.
- Expo Router dan File-based Routing: Untuk navigasi yang lebih intuitif dan mudah dikelola, Expo menyediakan Expo Router, yang menggunakan sistem file-based routing. Dengan cara ini, struktur navigasi dapat diatur secara rapi hanya dengan menambahkan atau menghapus file, serupa dengan Next.js pada pengembangan web, yang sangat memudahkan organisasi kode dan modul dalam proyek yang besar.
- Snack untuk Prototyping: Expo Snack adalah alat berbasis web untuk membuat prototipe dan mencoba kode aplikasi secara instan, tanpa harus mengatur proyek lokal. Snack mendukung berbagai paket npm dan menyediakan emulator yang langsung terlihat di browser, memungkinkan kolaborasi dan pengujian cepat antar tim pengembang.
- Distribusi Aplikasi Mudah: Dengan fitur-fitur seperti preview builds dan pengiriman distribusi beta yang mudah, Expo sangat memudahkan berbagi aplikasi dengan anggota tim atau pengguna untuk pengujian tanpa kerumitan distribusi tradisional. Hal ini mempersingkat waktu yang dibutuhkan untuk mendapatkan umpan balik dan mempercepat siklus pengembangan aplikasi.
Fitur-fitur di atas dirancang untuk membuat pengembangan aplikasi lintas platform lebih sederhana dan efisien. Anda bisa mengeksplorasi lebih lanjut di situs Expo Documentation untuk informasi info lebih lanjut.
Memulai Proyek Expo
1. Instalasi Expo CLI
Untuk memulai, pastikan sudah memiliki Node.js dan npm yang terbaru. Kemudian, instal Expo CLI secara global menggunakan perintah berikut:
npm install -g expo-cli
2. Membuat Proyek Baru
Setelah Expo CLI terinstal, kita bisa membuat proyek baru dengan menjalankan perintah:
expo init myApp
Expo akan menampilkan beberapa opsi template yang bisa kita pilih, seperti blank, tabs, dan lain-lain. Pilih blank jika Anda ingin memulai dari awal.
3. Menjalankan Proyek
Setelah proyek berhasil dibuat, masuk ke direktori proyek dan jalankan:
cd myApp
expo start
Ini akan membuka Metro Bundler di browser, dan kita bisa memilih opsi untuk menjalankan aplikasi di emulator atau perangkat fisik. Gunakan aplikasi Expo Go di ponsel untuk memindai QR code dan mulai melihat aplikasi langsung di perangkat.
Struktur Dasar Proyek Expo
Saat kita membuat proyek dengan Expo, ada beberapa file dan direktori utama yang perlu diperhatikan:
- App.js: Ini adalah file utama di mana logika aplikasi kita ditempatkan.
- assets/: Direktori ini berisi file statis seperti gambar, font, dll.
- node_modules/: Berisi semua dependensi atau pustaka yang diinstal untuk proyek.
- app.json: Berfungsi untuk konfigurasi proyek seperti nama aplikasi, ikon, dan lainnya.
Menggunakan Expo SDK
Expo SDK menyediakan berbagai API untuk mengakses fitur-fitur perangkat seperti kamera, lokasi, push notification, dan lainnya. Berikut adalah beberapa fitur yang sering digunakan.
1. Kamera dan Gambar
Fitur kamera sangat penting dalam aplikasi yang melibatkan pengambilan gambar. Expo menyediakan expo-image-picker untuk memilih gambar dari galeri atau menggunakan kamera.
Instal Image Picker:
expo install expo-image-picker
Contoh penggunaan:
import * as ImagePicker from 'expo-image-picker';
const pickImage = async () => {
let result = awaitImagePicker.launchCameraAsync({
mediaTypes: ImagePicker.MediaTypeOptions.All,
allowsEditing: true,
quality: 1,
});
if (!result.cancelled) {
setImage(result.uri);
}
};
Kode ini memungkinkan kita untuk membuka kamera dan mengambil gambar, yang kemudian dapat ditampilkan dalam aplikasi
2. Geolokasi
Expo SDK menyediakan Location API yang memungkinkan kita mendapatkan informasi lokasi pengguna, yang sangat berguna untuk aplikasi yang bergantung pada lokasi.
Instal modul lokasi:
expo install expo-location
Contoh penggunaan:
import * as Location from 'expo-location';
const getLocation = async () => {
let { status } = awaitLocation.requestForegroundPermissionsAsync();
if (status !== 'granted') {
alert('Permission to access location was denied');
return;
}
let location = await Location.getCurrentPositionAsync({});
console.log(location);
};
API ini meminta izin pengguna untuk mengakses lokasi dan kemudian mengembalikan data lokasi pengguna.
3. Push Notification
Push notification dapat menambah keterlibatan pengguna. Expo menawarkan API push notification yang memudahkan pengaturan notifikasi.
Pertama, install paket yang dibutuhkan:
expo install expo-notifications
Selanjutnya, atur push notification di App.js:
import * as Notifications from 'expo-notifications';
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowAlert: true,
shouldPlaySound: false,
shouldSetBadge: false,
}), });
const schedulePushNotification = async() => {
await Notifications.scheduleNotificationAsync({
content: {
title: "You've got mail! 📬",
body: 'Here is the notification body',
},
trigger: { seconds: 2 },
});
};
Membangun dan Mendistribusikan Aplikasi
Expo menawarkan beberapa metode untuk membangun dan mendistribusikan aplikasi, baik melalui Managed Workflow atau Bare Workflow.
Managed Workflow
Dalam Managed Workflow, Expo mengelola semua dependensi aplikasi, dan kita tidak perlu mengatur Android Studio atau Xcode. Untuk membuat build, jalankan perintah berikut:
expo build:android
expo build:ios
Expo akan membangun aplikasi di server mereka, dan kita akan mendapatkan tautan unduhan setelah proses selesai.
Bare Workflow
Dalam beberapa kasus, kita mungkin membutuhkan kontrol lebih. Bare Workflow memungkinkan kita mengekspor proyek ke format native, sehingga kita bisa mengeditnya dengan Android Studio atau Xcode.
Integrasi dengan Tools Pihak Ketiga
- Integrasi Firebase dengan Expo: Firebase menyediakan solusi untuk otentikasi, penyimpanan data, dan analytics, yang sangat membantu dalam membangun aplikasi lengkap. Expo mendukung integrasi Firebase, tetapi ada beberapa konfigurasi yang perlu dilakukan untuk mengatur Firebase dengan baik.
- Integrasi dengan GraphQL dan REST API: Membahas cara menghubungkan aplikasi Expo dengan GraphQL atau REST API bisa bermanfaat, terutama untuk aplikasi yang memerlukan data dinamis dari server.
Penggunaan TypeScript di Expo
Banyak proyek sekarang beralih ke TypeScript untuk memanfaatkan tipe data statis dan mengurangi kesalahan di runtime. Expo mendukung TypeScript, dan menambahkan beberapa panduan untuk mengonfigurasi TypeScript akan bermanfaat bagi developer yang ingin menggunakannya untuk proyek mereka.
Performa dan Optimalisasi Aplikasi Expo
- Optimasi Performa: Bagian ini dapat membahas teknik untuk mempercepat aplikasi, seperti pengelolaan state secara efisien menggunakan hooks (misalnya useMemo, useCallback), optimasi gambar, lazy loading, dan lain-lain.
- Mengurangi Ukuran Build: Menggunakan modul Expo secara selektif untuk mengurangi ukuran aplikasi yang dihasilkan, serta membahas fitur “tree shaking” untuk menghapus modul yang tidak terpakai.
Pros dan Cons
Seperti teknologi lainnya, Expo memiliki kelebihan dan kekurangan yang perlu diperhatikan:
Kelebihan:
- Cepat dan Mudah – Expo sangat cocok untuk prototyping atau membuat aplikasi sederhana.
- Fitur Lengkap – Banyak API bawaan untuk kebutuhan umum aplikasi.
- Testing yang Mudah – Dapat diuji langsung di perangkat fisik tanpa melakukan build.
Kekurangan:
- Terbatas pada Fitur Sistem yang Didukung – Jika kita membutuhkan fitur yang tidak didukung Expo, kita mungkin perlu menggunakan Bare Workflow atau bahkan beralih dari Expo.
- Ukuran Aplikasi Lebih Besar – Aplikasi yang dibuat dengan Expo biasanya lebih besar daripada aplikasi React Native biasa karena adanya modul tambahan.
- Bergantung pada Internet – Saat menjalankan proyek menggunakan Expo Go, perangkat harus terhubung ke internet.
Kesimpulan
Expo adalah pilihan yang sangat baik bagi developer yang ingin mulai membuat aplikasi mobile dengan cepat dan mudah. Dengan adanya Managed Workflow, API bawaan, dan kemampuan uji coba di perangkat nyata melalui Expo Go, Expo memungkinkan pengembangan aplikasi yang cepat tanpa banyak hambatan teknis. Meskipun memiliki beberapa keterbatasan, khususnya bagi developer yang membutuhkan fleksibilitas penuh, Expo tetap menawarkan banyak keuntungan.
Expo membantu banyak developer membuat aplikasi lintas platform secara efisien, dan bagi pemula, ini adalah titik awal yang tepat sebelum melangkah lebih jauh ke pengembangan aplikasi React Native murni atau aplikasi native. Jika Anda tertarik untuk memulai, cobalah buat aplikasi pertama Anda dengan Expo dan rasakan kemudahan serta kecepatannya!