Memahami model API plugin Capacitor, perbedaan plugin resmi vs komunitas, serta mengintegrasikan lima core plugins — App, Haptics, Status Bar, Share, dan Screen Orientation — ke aplikasi contoh.

Setelah di episode 4 kita setup live reload dan workflow development yang nyaman, pada episode ini kita masuk ke jantung Capacitor: plugin system. Plugin adalah alasan utama Capacitor bisa mengakses hardware dan API native dari JavaScript. Memahami cara kerja plugin adalah kunci untuk memanfaatkan seluruh potensi platform.
Mengapa plugin penting? Karena WebView sendiri hanya menjalankan kode web biasa. Untuk mengakses kamera, GPS, notifikasi, dan hardware lainnya, kalian membutuhkan plugin yang menjembatani JavaScript ke native code.
Setiap plugin Capacitor terdiri dari tiga lapisan:
Ketika kalian memanggil Camera.getPhoto(), bridge mengirim pesan ke kode native yang menjalankan kamera perangkat, lalu mengembalikan hasilnya ke JavaScript sebagai Promise.
Dikeluarkan dan dipelihara oleh Ionic/Capacitor team. Kualitas production-ready, dokumentasi lengkap, dan diuji di kedua platform. Beberapa contoh:
| Plugin | Fungsi |
|---|---|
@capacitor/camera | Akses kamera dan galeri |
@capacitor/filesystem | Baca/tulis file di storage native |
@capacitor/geolocation | Akses GPS dan lokasi |
@capacitor/local-notifications | Notifikasi lokal terjadwal |
@capacitor/push-notifications | Push notification (FCM/APNs) |
@capacitor/preferences | Key-value storage persisten |
@capacitor/share | Share content ke app lain |
@capacitor/haptics | Feedback haptic |
@capacitor/status-bar | Kontrol status bar |
@capacitor/splash-screen | Splash screen |
Dikembangkan oleh komunitas, tersedia di npm dengan prefix @capacitor-community/. Contoh: @capacitor-community/firebase-analytics, @capacitor-community/barcode-scanner. Kualitas bervariasi — selalu cek jumlah install, maintenance terakhir, dan kompatibilitas versi.
npm search @capacitor
npm search @capacitor-communitynpm install @capacitor/app @capacitor/haptics @capacitor/status-bar @capacitor/share @capacitor/screen-orientation
npx cap syncSetelah install, npx cap sync mendaftarkan plugin ke kedua platform native.
import { App } from '@capacitor/app';
import { Haptics, ImpactStyle } from '@capacitor/haptics';
import { StatusBar, Style } from '@capacitor/status-bar';
// Dengarkan lifecycle app
App.addListener('appStateChange', ({ isActive }) => {
console.log('App state changed. Is active:', isActive);
});
// Trigger haptic feedback
await Haptics.impact({ style: ImpactStyle.Medium });
// Ubah style status bar
await StatusBar.setStyle({ style: Style.Dark });import { Share } from '@capacitor/share';
async function shareContent() {
await Share.share({
title: 'Lihat ini!',
text: 'Artikel menarik tentang Capacitor',
url: 'https://capacitorjs.com',
});
}import { ScreenOrientation, OrientationLockTypes } from '@capacitor/screen-orientation';
// Lock ke portrait
await ScreenOrientation.lock({ orientation: OrientationLockTypes.PORTRAIT });
// Dapatkan orientasi saat ini
const orientation = await ScreenOrientation.orientation();
console.log('Current orientation:', orientation.type);App plugin memberikan akses ke lifecycle events yang penting untuk aplikasi mobile:
import { App } from '@capacitor/app';
App.addListener('appStateChange', ({ isActive }) => {
if (!isActive) {
// App masuk background — simpan state, pause animasi
saveApplicationState();
} else {
// App kembali ke foreground — refresh data
refreshData();
}
});
App.addListener('backButton', ({ canGoBack }) => {
if (canGoBack) {
window.history.back();
} else {
// Tampilkan dialog konfirmasi exit
showExitDialog();
}
});Tip
Selalu gunakan App.addListener('appStateChange') untuk menyimpan state penting. Aplikasi mobile bisa di-pause oleh sistem kapan saja — berbeda dari browser tab yang biasanya persisten.
Saat membutuhkan fitur native, langkah pertama adalah mengecek plugin resmi:
npm search @capacitor atau npm search @capacitor-community.Pada episode 5 ini, kalian telah memahami:
npx cap sync → import di kode → panggil API.Di episode 6 selanjutnya, kita akan membahas Camera, Filesystem, dan Media — API untuk mengambil foto, membaca/menulis file di storage native, dan membangun fitur upload foto avatar end-to-end. Sampai jumpa!