React Native uygulamalarında JavaScript motoru seçimi, performans üzerinde doğrudan etkilidir. Varsayılan olarak kullanılan JSC (JavaScriptCore) yerine Hermes motoruna geçiş, özellikle Android'de uygulama başlatma süresini %50'ye kadar düşürebilir. Hermes, açık kaynaklı, optimize edilmiş bir JavaScript motorudur ve React Native 0.64 ve sonrasında yerleşik olarak sunulur. Aşağıda, Hermes'i projenize başarıyla entegre etmek ve en iyi performansı almak için pratik ipuçları ve bir kontrol listesi bulacaksınız.
Hermes Motoru Nedir ve Neden Kullanılmalı?
Hermes, Facebook tarafından geliştirilen, React Native uygulamalarının başlatılma hızını ve bellek kullanımını iyileştirmek için tasarlanmış bir JavaScript motorudur. JSC'ye kıyasla daha küçük ikili boyut ve daha hızlı başlatma sunar. Özellikle alt seviye Android cihazlarda fark edilir iyileştirmeler sağlar. Redis vs Memcached yazımızda önbellekleme çözümlerinin performansa etkisini incelediğimiz gibi, Hermes de benzer şekilde runtime performansını optimize eder.
Hermes'i Etkinleştirme Kontrol Listesi
Hermes'i kullanmaya başlamak için aşağıdaki adımları izleyin. Bu kontrol listesi, Android ve iOS için gerekli yapılandırmaları kapsar.
- Android için:
android/app/build.gradledosyasındaenableHermes: truesatırını ekleyin. Varsayılan olarakfalsegelir; manuel olarak açmanız gerekir. - iOS için:
ios/Podfiledosyasında:hermes_enabled => trueseçeneğini etkinleştirin vepod installkomutunu çalıştırın. - Kodu Temizleyin:
cd android && ./gradlew cleanvecd ios && xcodebuild cleanile önbellekleri temizleyin. - Uygulamayı Yeniden Derleyin: Hermes etkinleştirildikten sonra uygulamayı sıfırdan derleyin. Hızlı yeniden yüklemeler çalışmaz; tam derleme gerekir.
- Performansı Doğrulayın:
react-native startile Metro bundler'ı başlatın ve konsolda "Hermes engine" ifadesini görün. Ayrıca Chrome DevTools yerine Hermes Debugger (React Native Debugger) kullanmanız gerekebilir.
Performans İyileştirme İpuçları
Hermes'i etkinleştirdikten sonra aşağıdaki pratik ipuçlarıyla performansı daha da artırabilirsiniz.
1. JavaScript Kodunu Derleme Aşamasında Optimize Edin
Hermes, JavaScript kodunu AOT (Ahead-of-Time) derleme ile bytecode'a çevirir. Bu sayede yorumlama aşaması ortadan kalkar. Ancak, kodunuzu Hermes'e uygun hale getirmek için:
- ES6+ özelliklerini kullanmaktan kaçının; Hermes, ES6'yı tam olarak desteklemez. Örneğin,
Symbol,Proxy,Reflectgibi özellikler çalışmayabilir. - Polyfill kullanıyorsanız, Hermes ile uyumlu olduğundan emin olun (örneğin,
core-jsyerine Hermes'in kendi polyfill'lerini tercih edin). - Üçüncü parti kütüphanelerin Hermes ile uyumluluğunu kontrol edin. Bazı kütüphaneler JSC'ye özgü API'ler kullanabilir.
2. Bellek Kullanımını İzleyin
Hermes, bellek yönetiminde JSC'den daha verimlidir. Ancak, bellek sızıntılarını önlemek için:
- Uzun süreli referansları temizleyin (örn.
useEffectcleanup fonksiyonlarını unutmayın). - Büyük listeler için
FlatListveyaSectionListkullanarak sanallaştırma yapın. - Görselleri optimize edin ve gereksiz animasyonlardan kaçının.
3. State Management Seçiminizi Gözden Geçirin
State management, uygulama performansını etkileyen kritik bir faktördür. Context API veya Redux Toolkit kullanıyorsanız, her birinin Hermes ile nasıl çalıştığını test edin. React'te State Management yazımızda bu iki yaklaşımı karşılaştırdık; Hermes ile birlikte hangisinin daha iyi performans sunduğunu değerlendirebilirsiniz.
4. Hermes Debugger ile Profil Oluşturun
Hermes, kendi hata ayıklama araçlarını sunar. Chrome DevTools yerine Hermes Debugger (React Native Debugger ile birlikte) kullanarak bellek kullanımı ve CPU profilini inceleyin. Özellikle hermes-profile aracıyla CPU tüketimini analiz edin.
Sık Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
Hermes geçişi sırasında karşılaşılabilecek yaygın sorunlar:
- Uyumsuz Kütüphaneler: Bazı native modüller Hermes ile çalışmaz. Örneğin,
react-native-reanimated1.x sürümü desteklenmez; 2.x sürümüne geçin. - Source Map Eksikliği: Hermes, JSC'den farklı bir bytecode formatı kullanır. Hata raporlaması için source map'leri doğru yapılandırdığınızdan emin olun.
- IOS'ta Ek Yapılandırma: iOS'ta Hermes, JSC yerine kullanılır ancak bazı API'ler (örneğin,
Intl) eksik olabilir. Gerekirse polyfill ekleyin. - Test Ortamı: Hermes, geliştirme modunda farklı davranabilir. Üretim build'inde test yapmayı unutmayın.
Performans sorunlarıyla karşılaşırsanız, REST API'lerde Rate Limiting yazımızda olduğu gibi, sistematik bir yaklaşımla sorun giderme yapabilirsiniz.
Sonuç Olarak Hermes ile Kazanımlar
Hermes motoru, React Native uygulamalarınızın açılış süresini %50'ye kadar azaltır, bellek kullanımını düşürür ve APK boyutunu küçültür. Yukarıdaki kontrol listesi ve ipuçlarını takip ederek Hermes'i sorunsuz bir şekilde devreye alabilir, kullanıcı deneyimini önemli ölçüde iyileştirebilirsiniz. Unutmayın, her proje farklıdır; bu nedenle performans ölçümlerini Hermes öncesi ve sonrasında karşılaştırarak karar verin.
Sık Sorulan Sorular
Hermes motoru nedir ve React Native için neden önemlidir?
Hermes, React Native uygulamalarının başlatılma hızını ve bellek kullanımını iyileştiren bir JavaScript motorudur. JSC'ye kıyasla daha hızlı çalışır, özellikle düşük seviye Android cihazlarda performansı belirgin şekilde artırır.
Hermes'i etkinleştirmek için hangi adımları izlemeliyim?
Android için build.gradle dosyasında enableHermes: true ekleyin; iOS için Podfile'da :hermes_enabled => true ile etkinleştirin. Ardından temiz derleme yaparak uygulamayı yeniden oluşturun.
Hermes ile uyumlu olmayan kütüphaneler var mı?
Evet, bazı kütüphaneler JSC'ye özgü API'ler kullanır. Örneğin react-native-reanimated 1.x sürümü desteklenmez; 2.x sürümüne geçilmelidir. Geçiş öncelikle projenizdeki tüm bağımlılıkların uyumluluğunu kontrol edin.
Hermes kullanırken hata ayıklama nasıl yapılır?
Hermes, Chrome DevTools yerine Hermes Debugger veya React Native Debugger ile çalışır. Ayrıca hermes-profile aracıyla CPU ve bellek profili alabilirsiniz.
Hermes performansını nasıl test edebilirim?
Uygulamanın başlatılma süresini, bellek kullanımını ve APK boyutunu Hermes öncesi ve sonrası ölçerek karşılaştırın. Android Studio'nun Profiler aracını veya Hermes'in kendi performans metriklerini kullanabilirsiniz.






