Announcing React Native 0.65
· 5 min read
오늘 우리는 React Native 버전 0.65를 출시했다. 이번 버전에는 새로운 Hermes 버전, 접근성 개선, 패키지 업그레이드 등이 포함되어 있다.
Hermes 0.8의 새로운 기능
페이스북의 오픈소스 JavaScript VM인 Hermes가 React Native에 최적화된 버전 0.8.1로 업그레이드되었다. 이번 릴리스에서 주목할 만한 기능은 다음과 같다:
- "Hades"라는 새로운 병렬 가비지 컬렉터가 도입되어 64비트 디바이스에서 최대 30배 짧은 일시 정지 시간을 제공한다. 페이스북 내부 테스트에서 CPU 집약적인 작업 성능이 20%~50% 향상된 것으로 나타났다. Hades에 대한 자세한 내용은 여기서 확인할 수 있다.
- ECMAScript 국제화 API(ECMA-402, 또는
Intl
)이 이제 안드로이드용 Hermes에 기본으로 내장되었다. 각 API의 크기 오버헤드는 57~62K로, JSC의 6MiB에 비해 훨씬 작다. 이 변경으로 Hermes 사용자는 더 이상 locale 폴리필이 필요하지 않다. 이 구현을 주도한 @mganandraj와 마이크로소프트의 파트너들에게 감사한다! - iOS용 Hermes가 이제 Apple M1 Mac과 Mac Catalyst를 지원한다!
- SMI(Small Integers)와 포인터 압축을 포함한 메모리 개선으로 JS 힙 크기가 30% 줄어들었다.
Function.prototype.toString
변경으로 부적절한 기능 감지로 인한 성능 저하 문제가 해결되었고, 소스 코드 주입 사용 사례를 지원한다.
전체 Hermes 변경 로그는 여기서 확인할 수 있다.
아직 Hermes를 사용하지 않았다면 여기서 안내하는 단계를 따라 앱에 Hermes를 적용해 새로운 기능과 성능 향상을 경험해 보자!
접근성 개선 및 추가 기능
지난해 페이스북은 GAAD 서약을 통해 React Native 내 접근성을 개선하기로 약속했다. 0.65 버전에서는 이 서약의 결과물과 기타 접근성 관련 성과를 공유한다! 주요 변경 사항은 다음과 같다:
- iOS에서 고대비 라이트 및 다크 값을 지정할 수 있도록 허용. 자세한 내용은 문서를 참고한다.
- Android에
getRecommendedTimeoutMillis
API 추가. 이는 Android 접근성 옵션에서 설정한 사용자의 기본 타임아웃 값을 노출하며, 컨트롤을 검토하거나 접근하는 데 추가 시간이 필요한 사용자를 위한 기능이다. - TalkBack/VoiceOver가
disabled
및unselected
와 같은 UI 상태를 올바르게 알리도록 일반적인 수정 작업 진행.
진행 중인 접근성 이슈를 확인하거나 기여할 수 있다!
주요 의존성 버전 업데이트 및 주의사항
react-native-codegen
버전0.0.7
을package.json
의devDependency
로 추가해야 한다.- JCenter가 종료되어 이제 읽기 전용 상태다. JCenter를 maven 저장소에서 제거하고, MavenCentral과 Jitpack을 사용하도록 의존성을 업데이트했다.
- OkHttp를 v3에서 v4.9.1로 업그레이드했다. 변경사항에 대한 자세한 내용은 Upgrading to OkHttp 4를 참고한다.
- Xcode 12.5를 지원하기 위해 Flipper를 0.93으로 업그레이드했다. 변경 내역은 Flipper changelog here에서 확인할 수 있다.
- Android Gradle Plugin 7 지원이 추가되었다.
- Apple Silicon에서는 링커 문제를 해결해야 한다. 자세한 내용은 @mikehardy’s note를 참고한다.
감사합니다!
이번 릴리스에는 61명의 기여자가 1100개 이상의 커밋을 작성했다. 이번 릴리스를 지원하고 기여한 모든 분께 감사드린다! 전체 변경 내역은 여기에서 확인할 수 있다.