Announcing React Native 0.66
오늘 우리는 안드로이드 12와 iOS 15 지원을 포함한 React Native v0.66을 출시한다. 이번 버전에는 다양한 수정 사항과 일반 업데이트가 포함되어 있다.
주요 내용
- Android에서 부모 경계 밖의 뷰 탭 처리
- Android의 새로운 블루투스 권한
- Apple Silicon, Xcode 13, iOS 15에 대한 향상된 지원
- Hermes 0.9.0
- Nightly 및 "Commitly" 릴리스
Android에서 부모 경계 밖의 자식 뷰 탭 처리하기
overflow: visible
을 통해 부모 뷰 경계 밖에서 렌더링된 자식 뷰의 상호작용을 지원하는 기능을 추가해 준 @hsource에게 감사드립니다. 이는 일반적인 사용 사례이며, React Native의 Android 동작을 웹 표준에 더 가깝게 맞추는 데 기여합니다.
더 자세한 내용은 풀 리퀘스트에서 확인할 수 있습니다.
Android의 새로운 블루투스 권한
Android 12를 대비해 새로운 블루투스 권한 지원을 추가했다. 다음 릴리스에서는 targetSDKVersion
을 31로 업데이트할 계획이다.
Apple Silicon, Xcode 13, iOS 15 지원 강화
이번 릴리스에서는 Apple Silicon(M1) Mac에서 iOS용 Xcode 빌드를 더 안정적으로 만들기 위한 여러 가지 해결책을 제공한다.
특히, 새로운 앱 템플릿에는 CocoaPods 우회 방법이 포함되었다(@mikehardy에게 감사드린다!). 이를 적용하려면 앱의 Podfile에서 post_install
단계에 __apply_Xcode_12_5_M1_post_install_workaround(installer)
를 추가해야 한다.
또한 RCT-Folly.podspec
이 arm64 링커 오류를 방지하도록 업데이트되었다.
iOS 15와 Android 12를 위한 앱 준비에 관한 포스트도 확인해 보자.
Hermes 0.9.0
Hermes 0.9.0은 주로 Hermes 릴리스 시점과 이번 React Native 릴리스 간의 차이를 줄이는 데 초점을 맞췄다.
약 400개의 커밋 중에는 일반적인 버그 수정과 함께 메모리 및 크기 최적화가 포함되어 있다.
자세한 내용은 Hermes 0.9.0 릴리스 이슈를 참고한다.
나이틀리 릴리스와 "커밋리" 릴리스
최근 블로그 포스팅에서 2021년 하반기 목표 중 하나로 릴리스 프로세스를 더 빠르고 안정적으로 개선하는 것을 언급했다. 이를 위해 메인 브랜치에서 React Native의 안정성을 높이고, 릴리스 후보(RC) 과정에서 발견되는 버그를 줄이기 위해 노력하고 있다.
React Native의 나이틀리 릴리스를 1년 넘게 제공해 왔지만, 대부분의 프로젝트에서 이를 효과적으로 활용하지 못했다. 이제 나이틀리 릴리스에 접근하기 쉬워졌으며, 앞으로 이를 릴리스 후보로 사용할 계획이다. 나이틀리 릴리스는 npm에서 "nightly" 태그로 배포된다.
개별 커밋을 테스트하는 과정을 개선하기 위해, React Native의 CI가 이제 메인 브랜치와 릴리스 브랜치의 각 커밋 및 PR에 대해 tarball 아티팩트를 생성한다. 이를 "커밋리"라고 부른다. 커밋리는 npm에 배포되지 않지만, CircleCI에서 직접 다운로드할 수 있다. 자세한 방법은 아래 안내를 참고한다.
PR이 머지되는 데 도움을 주고 싶은가? 관련 커밋리를 테스트하고 변경 사항을 검증하면, 해당 변경 사항이 적용되는 데 유용한 신호를 제공할 수 있다!
Nightly 릴리스 사용하기 (Nightlies)
프로젝트를 React Native Nightly 릴리스로 마이그레이션하는 과정은 일반 버전으로 업그레이드할 때와 매우 유사하다. 단, Upgrade Helper와 같은 도구는 현재 Nightly 버전에서 작동하지 않는다는 점에 유의해야 한다. 따라서 아직 최신 안정 버전으로 업그레이드하지 않았다면, 먼저 프로젝트를 최신 안정 버전으로 업그레이드하는 것을 권장한다. 그런 다음 yarn upgrade react-native@nightly
명령을 실행해 최신 Nightly 릴리스를 설치한다. Nightly 릴리스에서 프로젝트가 정상적으로 작동하려면 추가적인 변경이 필요할 수 있다는 점을 기억하자.
커밋리 릴리스 사용하기 (커밋리)

커밋과 관련된 "build_npm_package-1" 작업을 찾아 "Artifacts" 패널로 이동한 후 커밋리의 tarball을 다운로드한다.
나이틀리 릴리스와 마찬가지로, 먼저 프로젝트가 최신 안정 버전으로 업그레이드되었는지 확인한다. 그런 다음, Circle CI의 react-native
대시보드로 이동해 해당 커밋으로 트리거된 워크플로우를 찾는다. 여기서 build_npm_package
라는 작업을 확인할 수 있다. 이 작업에는 "Artifacts" 패널이 있으며, 여기서 tarball 파일을 다운로드할 수 있는 링크를 제공한다. 그런 다음 다음 명령어를 실행한다:
# 선호하는 패키지 매니저를 사용해 react-native 의존성을 tarball로 업데이트한다
$ yarn add <tarball 경로>
$ npm add <tarball 경로>
감사의 말
이번 릴리스에는 621개의 커밋과 92명의 기여자가 참여했습니다. 새로운 기여자와 기존 기여자 모두에게 감사드립니다! 전체 변경 로그는 여기에서 확인할 수 있습니다.
또한, 이번 릴리스를 준비하고 테스트하며 문제를 해결하는 데 도움을 준 다음 기여자들에게도 감사드립니다!