Proxy를 공식 지원하기 시작한 Hermes 버전이 드디어 나왔답니다.
안드로이드의 자바스크립트 엔진을 기본 JSC에서 Hermes로 변경하면 눈에 띄게 성능이 향상됩니다.
Cake 앱에 오랫동안 적용하면서 안정적으로 동작하는 것까지 검증이 됐으니 맘껏 사용하셔도 괜찮습니다.
성능 최적화를 위해 필요한 스펙만 구현하다 보니 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가지에서 활용 예제를 봐보세요.
별도 Polyfill 없이 기본으로 Proxy를 지원하는 0.5.2-rc1 버전이 출시됐고 개발 중인 Cake 버전에 바로 적용해봤는데 문제 없이 잘 동작하는 것 같습니다. MobX 5로 다시 업그레이드 하느라 살짝 귀찮았지만요. 아직 Proxy 지원이 완벽하지는 않다고 하는데 페북 형들 엄살이라고 생각하고 믿어보려고요~
다행히 RN 0.63과 호환되는 버전이라서 아래처럼 엔진만 설치해 주시면 됩니다. 세상 편함!
$ yarn add [email protected] --dev
Hermes 엔진 내부 문제로 발생한 크래쉬 로그의 Stack Trace를 확인하기가 어려웠는데 unstripped Android libraries를 제공해서 문제가 발생한 지점을 쉽게 찾을 수 있도록 지원한다고 하네요.