Proxy를 공식 지원하기 시작한 Hermes 버전이 드디어 나왔답니다.

# 검증된 JS 엔진

안드로이드의 자바스크립트 엔진을 기본 JSC에서 Hermes로 변경하면 눈에 띄게 성능이 향상됩니다.

[참고] Hermes 성능 개선 관련 글

Cake 앱에 오랫동안 적용하면서 안정적으로 동작하는 것까지 검증이 됐으니 맘껏 사용하셔도 괜찮습니다.

# 가장 큰 단점 Proxy 미지원

성능 최적화를 위해 필요한 스펙만 구현하다 보니 Proxy 지원이 빠져 있었습니다. 많은 사람들이 가장 아쉬워 했던 부분이고 요청이 많았던 기능 중 하나였죠. 저도 처음에 적용했을 때 아래 에러에 털썩!

ERROR Error: [mobx] MobX 5+ requires Proxy and Symbol objects. If your environment doesn't support Symbol or Proxy objects, please downgrade to MobX 4. For React Native Android, consider upgrading JSCore., js engine: hermes

MobX 4로 다운그레이드 하면서 Hermes를 적용시켰는데 MobX 4를 적용하는 과정이 간단하고 4, 5 버전을 동시에 유지 보수해줬기 때문에 괜찮았지 그 과정이 복잡했거나 개발자가 4 버전을 버렸다면 선택을 많이 망설였을 것 같네요.

여기서 잠깐! Proxy란?

객체를 랩핑해서 객체의 프로퍼티가 변경되는 것을 가로채서 특정 로직을 실행하거나 값을 조작할 수 있는 ES6 기능입니다. 기본 스펙을 여기에서 이해하고 ES6 기능 - 프락시 사용 사례 10가지에서 활용 예제를 봐보세요.

# 드디어 Proxy 공식 지원

별도 Polyfill 없이 기본으로 Proxy를 지원하는 0.5.2-rc1 버전이 출시됐고 개발 중인 Cake 버전에 바로 적용해봤는데 문제 없이 잘 동작하는 것 같습니다. MobX 5로 다시 업그레이드 하느라 살짝 귀찮았지만요. 아직 Proxy 지원이 완벽하지는 않다고 하는데 페북 형들 엄살이라고 생각하고 믿어보려고요~

다행히 RN 0.63과 호환되는 버전이라서 아래처럼 엔진만 설치해 주시면 됩니다. 세상 편함!

$ yarn add [email protected] --dev

# 또 하나의 선물 디버깅 지원

Hermes 엔진 내부 문제로 발생한 크래쉬 로그의 Stack Trace를 확인하기가 어려웠는데 unstripped Android libraries를 제공해서 문제가 발생한 지점을 쉽게 찾을 수 있도록 지원한다고 하네요.

[공식 문서] Reporting native crashes