New Architecture Rollout 업데이트
안녕하세요, 여러분. 이전에 발표한 내용대로,
2022년은 오픈소스에서 새로운 아키텍처의 해가 될 것입니다.
아직 새로운 React Native 아키텍처(Fabric 렌더러와 TurboModule 시스템)를 살펴보지 못했다면, 지금이 가장 좋은 시기입니다!
우리는 이 여정에 모두가 참여할 수 있도록 준비한 몇 가지 계획과 자료를 커뮤니티와 공유하고자 합니다.
작업 그룹 소개
최근 GitHub에 React Native New Architecture Working Group을 출시했다. 이 저장소는 토론 전용으로, 새로운 아키텍처를 생태계 전반에 걸쳐 도입하는 과정을 조율하고 지원하기 위해 만들어졌다.
이 작업 그룹은 커뮤니티가 새로운 아키텍처를 도입하는 과정에서 만나고, 아이디어를 공유하며, 과제를 논의할 수 있는 공간으로 자리 잡길 기대한다. 또한 이 작업 그룹을 통해 더 넓은 커뮤니티와 정보와 업데이트를 공유하여 투명성을 높일 계획이다.
토론이 집중될 수 있도록, 이 작업 그룹은 읽기 권한은 공개하고, 쓰기 권한은 승인된 사용자로 제한하기로 결정했다.
토론에 참여하고 싶다면 이 양식을 작성하여 신청하거나, 토론에 유익한 인물이라고 생각되는 사람을 추천할 수 있다.
누구나 토론에 참여할 수 있다.
모든 토론 포럼과 마찬가지로, 다른 사람의 의견에 존중과 환대의 태도를 유지하는 것이 중요함을 다시 한번 강조한다. 아직 읽지 않았다면 행동 강령을 꼭 확인하기 바란다.
마이그레이션 가이드
여러 차례의 리뷰와 피드백을 거쳐, 마침내 마이그레이션 가이드(이전 명칭: 플레이북)를 병합했다. New Architecture 워킹 그룹 페이지에서 확인할 수 있다.
이 마이그레이션 가이드는 커스텀 Fabric 컴포넌트나 TurboModule을 만드는 방법을 단계별로 안내한다. 또한, 기존 앱이나 라이브러리를 New Architecture에 맞게 수정하는 방법도 설명한다.
또한, 새롭게 개편된 아키텍처 섹션을 소개한다. 이 섹션에서는 React Native의 내부 동작을 깊이 있게 다룬 다양한 글을 찾아볼 수 있다. 특히, Fabric 섹션은 New Architecture 환경에서의 렌더링 파이프라인을 이해하는 데 도움을 준다.
마지막으로, 이 문서 자료에 대한 피드백을 공유해 주길 바란다. 워킹 그룹에서 의견을 나눌 수 있다. 개발자들의 의견을 지속적으로 수렴하고, 가장 유용한 콘텐츠를 제공할 수 있도록 노력하고 있다.
앞으로 몇 달 동안 문서를 더욱 다듬고, 추가 자료를 제공할 예정이다.
새로운 아키텍처 템플릿
React Native 0.68.0 버전이 곧 출시될 예정이다. 이 버전은 새로운 아키텍처 출시에서 중요한 이정표가 된다. 새로운 앱 템플릿에서 옵트인 스위치를 포함하는 첫 번째 버전이기 때문이다.
이제 템플릿에서 단 한 줄만 변경하면 새로운 아키텍처를 시도할 수 있다. 또한 템플릿에 상세한 주석과 문서를 추가해 별도의 학습 없이 바로 사용할 수 있도록 했다. 이를 통해 새로운 아키텍처를 도입할 때 작성해야 하는 코드 양을 줄일 수 있기를 바란다.
다음 릴리스에서는 템플릿을 더욱 간결하고 사용하기 쉽게 업데이트할 계획이다.
각 플랫폼에서 새로운 아키텍처를 활성화하려면 다음 방법을 사용할 수 있다:
- iOS에서는
ios
폴더 내에서RCT_NEW_ARCH_ENABLED=1 bundle exec pod install
명령어를 실행한다. - Android에서는
newArchEnabled
속성을true
로 설정한다. 이는 다음 방법 중 하나로 가능하다:android/gradle.properties
파일에서 해당 라인을 변경한다.- 환경 변수로
ORG_GRADLE_PROJECT_newArchEnabled=true
를 설정한다. - Gradle을
-PnewArchEnabled=true
옵션과 함께 실행한다.
그런 다음 yarn react-native run-android
또는 run-ios
명령어로 앱을 실행하면 Fabric과 TurboModules가 활성화된 상태로 동작한다.
이 새로운 템플릿을 시도해 보고, 발생할 수 있는 버그나 예상치 못한 동작을 보고해 주기 바란다. 지난 몇 달 동안 커뮤니티의 지속적인 피드백과 테스트 없이는 발견하기 어려운 버그와 빌드 실패를 수정하기 위해 노력했다.
서드파티 라이브러리 생태계
서드파티 라이브러리 작성자와 관리자의 전폭적인 지원 없이는 커뮤니티가 새로운 아키텍처로 전환하기 어렵다.
이 과정이 얼마나 지루할 수 있는지 이해하며, 기존 아키텍처와 새로운 아키텍처 둘 다에서 사용자를 지원하는 것이 얼마나 중요한지도 잘 알고 있다. 앞으로 몇 달 동안 라이브러리 개발자들이 전환할 수 있도록 지원하는 데 집중할 계획이다.
라이브러리 개발자라면, 새로운 아키텍처 작업 그룹에 라이브러리 상태를 업데이트하는 것을 권장한다. 이를 통해 초기 사용자를 유치할 수 있고, 어떤 라이브러리가 문제에 직면했는지 파악하는 데도 도움이 될 것이다.
반대로 라이브러리 사용자라면, 여기에 메시지를 게시해 특정 라이브러리의 전환을 요청할 수 있다. 만약 여러 사용자에게 걸림돌이 되는 라이브러리를 발견하면, 해당 관리자에게 직접 연락해 아직 전환하지 않은 이유를 파악하려고 노력할 것이다.
마지막으로, Software Mansion이 두 아키텍처를 모두 지원하는 react-native-screens
의 새 버전을 출시한 것을 축하한다. 또한 그들은 블로그 포스트를 통해 전환 과정을 공유했다. 이 이야기가 여러분의 전환 작업에 영감과 도움을 줄 수 있기를 바란다.
릴리스 정보
0.68 프리릴리스 작업은 지난 반기에 정의한 개선된 릴리스 프로세스의 상당 부분을 구현했다.
0.68 버전에서 우리는 다음과 같은 성과를 거뒀다:
- 릴리스 작업을 내부 로테이션에 성공적으로 적용했다. 이는 개선된 문서 덕분에 가능했으며, 릴리스 프로세스의 버스 팩터를 줄이는 데 기여했다.
- 파트너와 협의를 시작해 Copilot 로테이션을 지원할 계획이다. 이 노력은 프로세스의 투명성을 높이고, 파트너들이 React Native 릴리스와 생태계를 지원하기 위해 투자할 부분을 명확히 하는 데 도움이 될 것이다.
- 커뮤니티에서 여러 릴리스 지원자와 테스터를 모집했다. 지난 반기에 도움을 요청했을 때 많은 사람들이 참여했다! 테스터와 지원자들의 피드백은 특히 새로운 아키텍처와 관련된 중요한 버그와 회귀 문제를 해결하는 데 큰 도움이 됐다. 참여하고 릴리스를 테스트해준 모든 분들에게 감사드린다.
React Native 0.69에서는 이 프로세스를 계속 개선할 예정이다. 파트너들이 더 일찍 릴리스 신호를 제공하고, 코파일럿을 온보딩하는 것이 목표다. 언제나처럼 피드백은 환영한다. 릴리스 테스터나 지원자로 참여하고 싶다면 여기에서 신청할 수 있다.
Hermes를 기본 엔진으로 전환
새로운 아키텍처 롤아웃의 핵심 요소 중 하나는 새로운 자바스크립트 엔진인 Hermes의 도입이다.
새로운 리액트 네이티브 아키텍처에서는 Hermes를 기본 엔진으로 설정할 예정이다. 이는 새로운 문서와 템플릿이 모두 Hermes를 기본으로 활성화한다는 의미다.
다만 **JSC(JavaScript Core)**와 같은 다른 엔진들도 계속 지원할 예정이다. 원한다면 다른 엔진을 사용할 수 있지만, Hermes를 명시적으로 비활성화해야 한다.
Hermes의 안정성을 높이기 위해, Hermes의 배포 모델을 변경하는 작업을 진행 중이다. 구체적으로, Hermes의 릴리스 프로세스가 리액트 네이티브 릴리스 프로세스에 더 가깝게 이루어지도록 할 계획이다.
이를 통해 리액트 네이티브 버전과 완전히 호환되는 자바스크립트 엔진을 함께 배포할 수 있게 된다. 런타임 충돌이나 디버깅과 이해가 어려운 Hermes 호환성 문제를 더 이상 겪지 않아도 된다.
또한, Hermes의 개선 사항과 버그 수정을 더 빠르게 반영할 수 있어, 리액트 네이티브 사용자들의 요구에 더 신속하게 대응할 수 있을 것이다.
앞으로 몇 달 동안 이에 대한 더 자세한 내용을 공유할 예정이다. 그동안 워킹 그룹의 토론에 참여해 의견을 나눠보길 바란다.
아직 Hermes를 사용해보지 않았다면, 지금이 적기다. 사용 중 마주치는 문제나 장애물이 있다면 꼭 알려주길 바란다.
여기까지가 주요 내용이다.
이 블로그 포스트를 검토하고 소중한 기여를 해준 Andrei, Aleksandar, Dmitry, Eli, Luna, Héctor, Neil에게 감사드린다.
여러분의 마이그레이션 이야기를 기대하며 마무리한다.