React Native 0.60 출시 소식
수백 명의 기여자가 수개월간 열심히 노력한 끝에, React Native 코어 팀은 버전 0.60 출시를 발표하게 되어 기쁘게 생각한다. 이번 릴리스는 Android와 iOS 플랫폼 모두에서 중요한 마이그레이션을 처리하며, 많은 문제도 해결했다. 이 블로그 포스트는 이번 릴리스의 주요 내용을 다룬다. 항상 그렇듯, 더 자세한 정보는 변경 로그를 참고하기 바란다. 마지막으로, 이번 이정표를 달성하는 데 도움을 준 모든 기여자에게 감사한다!
접근성에 초점을 맞추기
접근성 API에는 announceForAccessibility와 같은 다양한 개선 사항이 추가되었다. 또한 역할(roles), 액션 지원(action support), 플래그(flags) 등 여러 부분에서 개선이 이루어졌다. 접근성은 복잡한 분야이지만, 이러한 개선 사항이 A11Y를 조금 더 쉽게 만들어 줄 것으로 기대한다. 자세한 내용은 2019년 6월 React Native 오픈소스 업데이트를 참고하면 된다.
새로운 시작
React Native의 시작 화면이 업데이트됐다! 새로운 UI를 만드는 데 도움을 준 많은 기여자들에게 감사한다. 이 새로운 "Hello World" 화면은 사용자를 더 친근하고 매력적인 방식으로 생태계에 맞이한다.
AndroidX 지원
AndroidX는 안드로이드 생태계에서 중요한 발전을 이루었다. 기존의 지원 라이브러리 아티팩트는 더 이상 사용되지 않는다. React Native 0.60 버전부터는 AndroidX로 마이그레이션되었다. 이는 주요 변경 사항이며, 여러분의 네이티브 코드와 의존성도 마이그레이션해야 한다.
이 변경으로 인해 React Native 앱은 AndroidX를 사용해야 한다. 한 앱에서 둘을 동시에 사용할 수 없으므로, 앱 코드와 의존성 코드 모두 AndroidX 또는 기존 지원 라이브러리 중 하나를 사용해야 한다.
여러분의 네이티브 코드는 직접 마이그레이션해야 하지만, @mikehardy, @cawfree, 그리고 @m4tt72가 node_modules
를 패치할 수 있는 똑똑한 도구 "jetifier"를 만들었다. 라이브러리 관리자들은 업그레이드해야 하지만, 이 도구는 임시 해결책을 제공하며 AndroidX 버전을 출시할 시간을 벌어준다. 따라서 AndroidX 마이그레이션과 관련된 오류가 발생하면 이 도구를 사용해 보자.
기본 CocoaPods 설정
이제 CocoaPods가 React Native iOS 프로젝트의 일부로 포함되었다. 이전에 사용하지 않았다면, 앞으로 iOS 플랫폼 코드를 열 때 xcworkspace
파일을 사용해야 한다. (팁: 루트 프로젝트 디렉토리에서 xed ios
를 실행해 보자.) 또한, 내부 패키지의 podspec
이 Xcode 프로젝트와 호환되도록 변경되었다. 이는 문제 해결과 디버깅에 도움이 될 것이다. 0.60 버전으로 업그레이드하면서 몇 가지 간단한 변경을 Podfile
에 적용해야 한다. use_frameworks!
와 관련된 호환성 문제가 있음을 알고 있으며, 이를 해결하기 위한 이슈를 추적 중이다.
Lean Core 제거 작업
WebView와 NetInfo는 이전에 별도의 저장소로 분리되었으며, React Native 0.60에서는 이들을 React Native 저장소에서 완전히 이관했다. 또한, 새로운 App Store 정책에 대한 커뮤니티 피드백을 반영해 Geolocation도 분리했다. 아직 마이그레이션을 완료하지 않았다면 react-native-webview, @react-native-community/netinfo, @react-native-community/geolocation에 의존성을 추가해 작업을 완료해야 한다. 자동화된 솔루션을 원한다면 rn-upgrade-deprecated-modules를 사용해 볼 수 있다. 분리 이후 이 저장소들에는 100개 이상의 커밋이 이루어졌으며, 커뮤니티의 지속적인 지원이 기대된다!
네이티브 모듈 자동 연결 기능 추가
React Native CLI 팀은 네이티브 모듈 연결 방식을 크게 개선한 자동 연결(autolinking) 기능을 도입했다. 이제 대부분의 경우 react-native link
명령어를 사용할 필요가 없다. 동시에 팀은 일반적인 연결 프로세스도 전면 개편했다. 위 문서에서 언급한 대로 기존에 연결된 의존성은 react-native unlink
로 해제해야 한다.
업그레이드 헬퍼
@lucasbento, @pvinis, @kelset, 그리고 @watadarkstar가 Upgrade Helper라는 훌륭한 도구를 개발했다. 이 도구는 업그레이드 과정을 더 간단하게 만들어준다. React Native 사용자가 브라운필드 앱이나 복잡한 커스텀 설정을 가진 경우, 버전 간 변경 사항을 쉽게 확인할 수 있도록 도와준다. 업그레이드 문서를 확인하고, 오늘 바로 여러분의 업그레이드 경로에 이 도구를 활용해보자!
라이브러리 관리자를 위한 주의사항
AndroidX로의 변경은 거의 대부분 라이브러리 업데이트를 필요로 한다. 따라서 가능한 한 빨리 지원을 추가해야 한다. 아직 업그레이드할 준비가 되지 않았다면, 사용자가 빌드 시 라이브러리를 패치할 수 있는지 확인하기 위해 jetifier를 사용해 라이브러리를 점검해 보는 것이 좋다.
설정과 README를 업데이트하려면 autolinking 문서를 검토한다. 라이브러리가 이전에 어떻게 통합되었는지에 따라 추가 변경이 필요할 수도 있다. 의존성 인터페이스를 정의하는 방법에 대한 정보는 CLI의 dependencies 가이드를 참고한다.
감사합니다
이번에 소개한 내용은 주요 업데이트 중 일부에 불과합니다. 더 많은 변화를 확인하려면 변경 로그를 살펴보세요. 앞으로도 더 많은 소식에 주목해 주시기 바랍니다. 그동안 0.60 버전을 즐겨보세요!