React Native에서 Hermes 엔진 도입 후기
배경
회사 Android 앱의 초기 실행 속도가 느리다는 사용자 피드백이 계속 들어왔다. 프로파일링 결과 JS 번들 파싱 시간이 병목이었고, React Native 0.63부터 정식 지원하는 Hermes 엔진을 도입하기로 결정했다.
적용 과정
android/app/build.gradle에서 한 줄만 수정하면 된다.
project.ext.react = [
enableHermes: true
]
클린 빌드 후 APK 크기를 확인했더니 약 30% 감소했다. JSC 엔진을 번들에 포함하지 않아도 되기 때문이다.
성능 개선
- 앱 초기 실행: 4.2초 → 2.8초 (약 33% 개선)
- APK 크기: 28MB → 19MB
- 메모리 사용량: 큰 차이 없음
체감 속도가 확실히 빨라졌다. 특히 저사양 기기에서 차이가 컸다.
이슈 대응
디버깅 시 Chrome DevTools 대신 Flipper를 사용해야 했다. 팀원들이 익숙하지 않아 초반에 혼선이 있었지만, Flipper의 네트워크 인스펙터와 레이아웃 뷰어가 오히려 더 편리했다.
일부 라이브러리에서 Proxy 객체 관련 에러가 발생했는데, hermes.enableProxy 옵션으로 해결했다.
// metro.config.js
module.exports = {
transformer: {
hermesParser: true,
},
};
결론
Android 앱이라면 Hermes 도입을 적극 권장한다. 설정은 간단하고 성능 개선 효과는 확실하다. iOS는 아직 실험 단계라 프로덕션에 적용하지 않았다.