Belajar Hermes JS Engine - Instalasi & Setup Hermes
Episode 3 of 23

Belajar Hermes JS Engine - Instalasi & Setup Hermes

Praktik pertama: menambahkan Hermes ke project React Native, baik lewat opsi default, konfigurasi Android di gradle.properties, maupun iOS di Podfile. Termasuk menyiapkan build environment Android/iOS, membangun hermesc dari source, dan memverifikasi Hermes benar-benar berjalan di perangkat atau emulator.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 2 kita memahami arsitektur Hermes secara teori. Sekarang saatnya mengotori tangan: menginstal dan menyiapkan Hermes di project React Native.

Episode 3 berisi tiga hal: menambahkan Hermes ke project, menyiapkan build environment untuk Android dan iOS, lalu memverifikasi bahwa runtime yang berjalan benar-benar Hermes. Sepanjang jalan, kita juga membangun hermesc dari source sebagai persiapan episode 4.

Hermes di React Native Modern

Kabar baik: sejak React Native 0.70, Hermes adalah engine default di Android dan iOS. Jika project kalian dibuat dengan versi itu, Hermes sudah aktif tanpa konfigurasi tambahan. Tapi penting tahu cara mematikan dan menyalakannya kembali — karena di project lama atau saat rollback, kalian akan butuh ini.

Menambahkan Hermes ke Project Baru

Buat project baru dengan template resmi, lalu pastikan Hermes aktif:

Buat project baru dengan Hermes
npx react-native init BelajarHermes --version latest
cd BelajarHermes
npx react-native config

Pada React Native modern, output dari npx react-native config tidak langsung menampilkan engine. Cara pasti mengeceknya adalah di file konfigurasi native, seperti yang kita bahas di bawah. Untuk project lama yang belum memakai Hermes, kalian hanya perlu mengaktifkan dua flag berikut.

Konfigurasi Android

Untuk Android, Hermes dikontrol dari file android/gradle.properties. Tambahkan baris ini:

android/gradle.properties
hermesEnabled=true

Nilai false akan mengembalikan JavaScriptCore. Setelah mengubah file ini, sinkronkan Gradle:

Sinkronkan Gradle
cd android
./gradlew clean

Info

Di React Native 0.64 ke atas, pengecekan hermesEnabled dilakukan otomatis oleh Gradle plugin. Pastikan tidak ada konfigurasi tumpang tindih di android/app/build.gradle yang menimpa nilai dari gradle.properties.

Konfigurasi iOS

Untuk iOS, Hermes dikontrol dari ios/Podfile. Aktifkan dengan baris :hermes_enabled pada target aplikasi:

ios/Podfile
# IOS
platform :ios, min_ios_version_supported
prepare_react_native_project!
 
use_react_native!(
  :path => config[:reactNativePath],
  :hermes_enabled => true
)

Setelah mengubah Podfile, install ulang pods:

Install CocoaPods
cd ios
bundle exec pod install

bundle exec pod install membaca Podfile dan menyertakan runtime Hermes ke dalam project Xcode. Tanpa baris :hermes_enabled => true, iOS akan jatuh kembali ke JavaScriptCore.

Membangun hermesc dari Source

Meski runtime Hermes ikut ter-bundel di React Native, membangun hermesc sendiri berguna untuk eksperimen bytecode di episode 4 dan 5. Repo yang di-clone di episode 0 dibangun dengan CMake:

Konfigurasi build hermesc
cd hermes
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
Kompilasi hermesc
cmake --build build --target hermesc -j 4

Jika berhasil, binary hermesc berada di build/bin/hermesc. Verifikasi:

Cek versi hermesc
build/bin/hermesc -version

Keluaran menampilkan versi Hermes dan SHA commit yang dipakai. Cara cepat lain yang tidak perlu build lama: install compiler yang sudah jadi dari npm, misalnya hermes-compiler, dengan npm install -g hermes-compiler.

Menyiapkan Build Environment Android

Sebelum menjalankan app, pastikan toolchain Android lengkap:

  • JDK 17 untuk AGP versi modern — cek dengan java -version.
  • Android SDK dengan platform terbaru dan build-tools.
  • Emulator atau perangkat fisik dengan ADB aktif.

Jalankan pemeriksaan otomatis:

Periksa toolchain React Native
npx react-native doctor

Perintah ini memvalidasi JDK, Android SDK, emulator, dan koneksi perangkat. Apabila semua hijau, jalankan app:

Build dan install ke emulator Android
npx react-native run-android

Menyiapkan Build Environment iOS

Untuk iOS, syarat utama: macOS dengan Xcode dan CocoaPods. Pastikan lisensi Xcode disetujui:

Persetujuan lisensi Xcode
sudo xcodebuild -license accept

Kemudian build dari project Xcode atau langsung dari CLI React Native:

Build dan install ke simulator iOS
npx react-native run-ios

Simulator iOS memakai Hermes sejak React Native 0.70, sehingga hasil verifikasi di langkah berikut berlaku juga di sini.

Verifikasi Hermes di Perangkat atau Emulator

Ada tiga cara memastikan Hermes benar-benar yang berjalan.

Cara 1 — melalui global HermesInternal. Hermes mengekspos object global HermesInternal. Cek lewat developer console atau di dalam kode:

JSCek keberadaan HermesInternal
const isHermes = typeof globalThis.HermesInternal === "object";
console.log("Running on Hermes:", isHermes);

Cara 2 — lewat menu developer. Di emulator, tekan kombinasi Ctrl+M (Android) atau Cmd+D (iOS) untuk membuka Dev Menu, lalu buka Settings. Jika engine yang ditampilkan adalah Hermes, konfigurasi berhasil.

Cara 3 — lewat ADB. Untuk Android, tekan Ctrl+M, pilih View Logs, dan cari baris yang menyebut Hermes di adb logcat. Kita bisa menyaringnya langsung:

Saring log Hermes
adb logcat -s ReactNative:V | grep -i hermes

Success

Jika HermesInternal terdefinisi dan Dev Settings menampilkan Hermes, konfigurasi selesai. Mulai episode 4, kita akan bermain dengan bytecode dan pipeline build — dua hal yang dihasilkan oleh konfigurasi ini.

Penutup

Hermes sudah terpasang dan terverifikasi. Inilah yang wajib kalian bawa pulang:

  • Hermes adalah default di React Native 0.70+, tetapi aktivasi eksplisit tetap penting dipahami.
  • Android dikontrol lewat hermesEnabled=true di android/gradle.properties.
  • iOS dikontrol lewat :hermes_enabled => true di ios/Podfile, lalu pod install.
  • hermesc bisa dibangun dari source dengan CMake atau dipasang cepat dari npm.
  • Verifikasi engine lewat HermesInternal, Dev Menu settings, atau adb logcat.

Selanjutnya, di episode 4 kita membedah pipeline build: integrasi Hermes dengan Metro bundler, peran HermesBytecodePlugin, dan cara membaca artifact output beserta source maps. Sampai jumpa!