Skip to main content

Announcing React Native 0.70

· 10 min read
Dmytro Rykun
Dmytro Rykun
Software Engineer at Meta
Thibault Malbranche
Thibault Malbranche
Lead Mobile Engineer at Brigad
Nicola Corti
Nicola Corti
Software Engineer at Meta
Lorenzo Sciandra
Lorenzo Sciandra
Senior Software Engineer at Microsoft

React Native의 새로운 버전인 0.70.0을 발표하게 되어 기쁘게 생각한다. 이번 버전에서는 Codegen을 위한 새로운 통합 설정, 기본 엔진으로 Hermes 도입, Android 빌드를 위한 완전한 CMake 지원, 그리고 새로운 아키텍처를 위한 문서 업데이트 등 여러 가지 개선 사항이 포함되었다. 자세한 내용을 계속해서 확인해 보자!

섹션

새로운 아키텍처의 새로운 문서

지난 몇 달 동안 새로운 아키텍처 문서 섹션에 더 많은 콘텐츠를 추가하기 위해 노력해왔다. 새로운 섹션에서는 마이그레이션 가이드, 예제, 튜토리얼 등을 찾아볼 수 있다. 이를 통해 빠르게 적응할 수 있을 것이다.

또한 새로운 아키텍처가 필요한 이유그 주요 구성 요소에 대해 깊이 있게 다룬 새로운 문서도 확인할 수 있다. 이를 통해 새로운 API의 배경과 목적을 더 잘 이해할 수 있길 바란다.

피드백은 언제나 환영이다. react-native-website 저장소를 통해 의견을 공유해 주길 바란다.

Hermes를 기본 엔진으로 사용

React Native 0.70은 자체 개발한 JavaScript 엔진인 Hermes가 기본으로 활성화된 첫 번째 버전이다.

이번 업데이트는 Hermes 팀과 React Native 팀의 협력, 그리고 커뮤니티의 소중한 기여로 이루어졌다. Hermes의 성능을 개선하고 커뮤니티가 요청한 주요 기능을 추가하기 위해 노력했다.

자세한 내용은 공식 발표 블로그 포스트에서 확인할 수 있다.

코드 생성(Codegen)을 위한 새로운 통합 설정

0.70 버전부터 iOS와 Android 모두에 대한 Codegen 스펙을 정의하는 통합 방식을 도입했다. 이전에는 Android 설정을 별도의 build.gradle 파일에 작성해야 했다.

이제는 package.json에서 직접 정의할 수 있다:

  "codegenConfig": {
"name": "CustomAnimationView",
"type": "components",
"jsSrcsDir": "./src",
"android": {
"javaPackageName": "com.custom.animation"
}
}

이 개선 사항은 라이브러리 관리자가 New Architecture로 코드베이스를 마이그레이션할 때 더 일관된 경험을 제공한다.

라이브러리 관리자라면, React Native New Architecture 워킹 그룹이 토론에서 진행 상황을 공유해 주기 바란다.

새로운 아키텍처 라이브러리를 위한 Android 자동 연결

0.70 버전부터 새로운 아키텍처를 사용하는 경우, Android.mk나 CMake 파일에 추가 설정 없이도 라이브러리를 자동으로 연결할 수 있다.

자동 연결은 React Native 개발 경험에서 중요한 부분이다. 이 기능을 통해 CocoaPods나 Gradle 설정을 건드리지 않고 yarn add 명령어만으로 외부 라이브러리를 추가할 수 있다.

새로운 아키텍처는 Codegen을 사용하고 네이티브 코드를 앱 개발자에게 노출하는 라이브러리를 지원하기 위해 자동 연결 기능을 조정할 것을 요구했다.

iOS에서는 새로운 아키텍처 라이브러리에 대해 자동 연결이 잘 동작했지만, Android에서는 그렇지 않았다. 0.70 버전에서 이 차이를 해결했고, 이제 yarn add로 라이브러리를 프로젝트에 추가하면 어떤 아키텍처에서도 올바르게 연결된다.

Android 빌드를 위한 CMake 완전 지원

0.70 버전부터 사용자는 CMake를 사용해 네이티브 빌드를 설정할 수 있다. 앱 사용자가 직접 C++ 코드를 작성할 필요는 없지만, 네이티브 컴파일을 위한 진입점은 여전히 필요하다.

이제 프로젝트에서 Android/네이티브 관련 작업을 할 때 Android.mk 파일 대신 CMakeLists.txt 파일을 사용할 수 있다.

이 변경 사항은 New Architecture를 사용하는 앱과 라이브러리 사용자 모두에게 다음과 같은 이점을 제공한다:

  • 앱에서 생성된 CMake 파일은 훨씬 더 간결하다. (3줄의 코드 vs 50줄 이상의 Android.mk 파일). 이로 인해 향후 React Native 버전 간 업데이트가 더 쉬워지고, 유지보수해야 할 코드가 줄어든다.
  • Codegen이 이제 Android.mkCMakeLists.txt를 모두 생성하므로, New Architecture 라이브러리를 위해 제공하는 기본 설정을 사용하는 경우 라이브러리 개발자는 별도의 작업을 할 필요가 없다.
  • 앞서 언급한 Auto-linking은 CMake와 Android.mk 파일 모두에서 즉시 작동한다.
  • 앱이 Android.mk나 CMake 파일 중 어느 것을 사용하더라도 자유롭지만, 향후 권장되는 솔루션은 CMake 파일이다. (더 나은 문서화, 도구, 그리고 CMake 생태계 때문이다.)

0.70 버전 주요 변경 사항

앞서 언급했듯이, 이번 릴리스에서 가장 중요한 개선 사항은 새로운 아키텍처 경험에 초점을 맞추고 있다. 하지만 그 외에도 주목할 만한 변경 사항이 있다:

  • Catalyst 수정 사항이 적용되었다. Podfile에서 mac_catalyst_enabledtrue로 설정하면 된다. 자세한 내용은 업그레이드 헬퍼의 diff를 참고한다.
  • Metro를 0.72.0 버전으로 업그레이드하여 새로운 React JSX Transform을 사용할 수 있게 되었다. 자세한 내용은 React 공식 블로그를 참고한다.
  • reactnativeutilsjni를 제거했다. 이제 reactnativejni와 동일한 소스에서 빌드되며, 이를 통해 모든 Android APK 빌드에서 약 220KB를 절약할 수 있다. 자세한 내용은 GitHub 풀 리퀘스트를 참고한다.

주요 변경 사항

몇 가지 주요 변경 사항이 있습니다:

또한 Metro 버전이 0.72로 업데이트되었으며, 이 버전에는 5가지 주요 변경 사항이 포함되어 있습니다.

업그레이드 내용

다음과 같이 일부 의존성을 업그레이드했다:

  • RN CLI를 v9.0.0으로 업그레이드
  • Android Gradle 플러그인을 7.2.1로 업그레이드
  • Gradle을 7.5.1로 업그레이드
  • RCT-Folly를 2021-07-22 버전으로 업그레이드
  • Metro를 0.72로 업그레이드
  • SoLoader를 0.10.4로 업그레이드

변경 사항 전체 목록은 체인지로그에서 확인할 수 있다.

감사의 말

이번 릴리스에 기여해 주신 88명의 컨트리뷰터와 493개의 커밋 덕분에 성공적으로 마칠 수 있었습니다. 모두에게 감사드립니다. 또한 이번 릴리스가 최대한 안정적이 될 수 있도록 피드백을 주신 모든 분들께도 깊은 감사를 표합니다.