Skip to main content

React Native 0.69 출시 소식

· 8 min read
Marek Fořt
Marek Fořt
Software Engineer at Shopify
Nicola Corti
Nicola Corti
Software Engineer at Meta

React Native의 새로운 버전인 0.69.0을 발표하게 되어 기쁘게 생각한다. 이번 버전에는 React Native의 새로운 아키텍처를 위한 여러 개선 사항과 새로운 기능들이 포함되어 있다. 주요 내용으로는 React 18 지원과 번들링된 Hermes가 있다. 더 자세한 내용을 확인해 보자!

섹션

React 18

React Native 0.69가 React 18을 지원하는 첫 번째 릴리스라는 소식을 전하게 되어 기쁩니다. React 18은 useId와 같은 새로운 훅을 포함해 많은 개선 사항을 제공합니다. 또한 useTransition이나 완전한 Suspense 지원과 같은 새로운 동시성 기능도 포함하고 있습니다.

React Native 0.69에서는 기본적으로 React 18이 활성화됩니다. 하지만 새로운 아키텍처로 마이그레이션하지 않은 경우, 동시 렌더링과 동시성 기능을 사용하지 않는 기능만 활용할 수 있습니다. 새로운 아키텍처는 동시 렌더링을 염두에 두고 설계되었지만, 기존 아키텍처에서는 이를 지원할 수 없습니다.

React Native에서 React 18 지원에 대해 더 자세히 알아보려면 여기를 참고하세요.

번들링된 Hermes

이번 릴리스 전까지 Hermes와 React Native는 별도로 출시되었다. 이로 인해 어떤 버전의 Hermes가 어떤 React Native 버전과 호환되는지 혼란이 생겼다. 이 문제를 해결하기 위해 React Native 0.69부터 호환되는 Hermes 버전을 React Native와 함께 제공한다. 이 변경 사항은 React Native에서 Hermes를 더 안정적으로 사용할 수 있게 해준다.

적절한 Hermes 버전 사용은 React Native가 처리한다. 하지만 통합이 의도한 대로 동작하는지 확인하려면 업그레이드 헬퍼의 단계를 따라야 한다. 아직 Hermes를 활성화하지 않았다면 여기의 단계를 따라 진행할 수 있다. 다른 자바스크립트 엔진도 계속 지원하지만, 최상의 경험을 위해 모두 Hermes로 마이그레이션할 것을 권장한다. 이렇게 하면 더 나은 지원을 받을 수 있다.

새로운 아키텍처를 사용하는 Android 사용자는 Hermes를 소스에서 빌드해야 한다. Windows 사용자는 추가로 이 단계를 따라야 한다.

React Native가 Hermes를 어떻게 번들링하는지 더 깊이 알고 싶다면 여기의 심층 문서를 확인할 수 있다.

새로운 아키텍처

안드로이드와 iOS 모두에 대해 새로운 아키텍처를 계속해서 출시하고 있다. 아직 앱이나 라이브러리를 마이그레이션하지 않았다면 여기의 단계를 따르면 된다. 또한 새로운 아키텍처에 대한 도구와 리소스에 관한 최신 업데이트를 읽어 더 자세히 알아볼 수 있다.

0.69 버전의 주요 변경 사항

앞서 언급한 대로, 이번 릴리스의 가장 중요한 개선 사항은 React 18 지원과 번들링된 Hermes에 초점이 맞춰져 있다. 하지만 이 외에도 주목할 만한 변경 사항이 있다:

  • iOS/tvOS SDK 11.0 지원 중단, 이제 버전 12.4 이상 필요
  • 안드로이드 개발을 위한 M1 사용자 지원 개선
  • node 실행 파일을 더 확실하게 소싱하기 위한 새로운 .xcode.env 설정 파일 추가
  • React Native가 이제 Android 11의 최신 상태 표시줄 API를 사용
  • C++17 지원
  • iOS 디버그 메뉴에 새로운 hotkeysEnabled 옵션 추가

주요 변경 사항

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

  • React Native CLI가 8.0 버전으로 업그레이드됨:
    • linkunlink 커맨드가 제거되고, 대신 자동 연결(autolinking) 기능이 도입됨
    • 더 이상 사용되지 않는 initCompat가 제거됨. 대신 init 커맨드를 사용해야 함
    • run-android에서 더 이상 사용되지 않는 속성이 제거됨
    • installuninstall 커맨드가 제거됨
    • react-native.config.js에서 assets와 hooks 관련 속성이 제거됨. 설정 파일에서 이 속성을 삭제해야 함
    • iOS 의존성 설정에서 podspecPath가 제거됨
    • run-ios에서 --project-path 옵션이 제거됨
    • iOS 소스 디렉터리 감지 방식이 Xcode 프로젝트에서 Podfile을 찾는 방식으로 변경됨
  • console.disableYellowBox 지원이 중단됨 (링크)
  • 더 이상 사용되지 않는 prop types가 제거됨 (cdfddb4dad, 3e229f27bc, 10199b1581)
  • RN 0.65부터 더 이상 사용되지 않던 removeListener가 Appearance에서 제거됨 (링크)
  • SegmentedComponentIOS를 사용 중이었다면, 이제 segmented-control과 같은 서드파티 라이브러리로 대체해야 함 (235f168574)

업그레이드

다음과 같은 의존성(dependencies)을 업그레이드했다:

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

감사의 말

이번 릴리즈를 가능하게 해준 80명의 기여자와 629개의 커밋에 깊은 감사를 표합니다. 여러분 모두에게 감사드립니다.

또한 릴리즈 테스터와 지원자, 그리고 이번 릴리즈가 최대한 안정적이도록 피드백을 제공해 주신 모든 분들께도 감사의 인사를 전합니다.