Skip to main content

0.56 버전 릴리스

· 10 min read
Lorenzo Sciandra
Drivetribe의 코어 메인테이너 & React Native 개발자

오랜 기다림 끝에 React Native 0.56 버전이 드디어 출시되었다 🎉. 이 블로그 포스트는 이번 새 버전에서 소개된 주요 변경 사항을 요약한다. 또한 지난 3월 이후로 무엇을 준비해 왔는지 설명할 기회를 갖고자 한다.

호환성 문제의 딜레마, 또는 "언제 릴리스할 것인가?"​

기여자 가이드는 React Native에 적용되는 모든 변경 사항이 거치는 통합 과정을 설명한다. 이 프로젝트는 다양한 도구들로 구성되어 있어, 모든 기능이 정상적으로 작동하도록 조율과 지속적인 지원이 필요하다. 여기에 프로젝트에 기여하는 활발한 오픈소스 커뮤니티까지 더하면, 그 규모가 얼마나 방대한지 짐작할 수 있다.

React Native의 높은 채택률을 고려할 때, 호환성을 깨는 변경 사항은 신중하게 처리해야 하며, 이 과정은 항상 원활하지는 않다. 코어 팀이 새로운 호환성 변경 사항을 통합하고 테스트할 시간을 확보하기 위해 4월과 5월 릴리스를 건너뛰기로 결정했다. 이 과정에서 전용 커뮤니티 커뮤니케이션 채널을 활용해 2018년 6월(0.56.0) 릴리스를 최대한 문제 없이 적용할 수 있도록 노력했다.

0.56.0이 완벽한가? 그렇지 않다. 모든 소프트웨어가 그렇듯 완벽하지는 않다. 하지만 "더 많은 안정성을 기다리는 것"과 "테스트 결과가 성공적이므로 진행할 수 있다" 사이의 균형점에 도달했고, 이제 릴리스할 준비가 되었다고 판단했다. 또한, 최종 0.56.0 릴리스에서 해결되지 않은 몇 가지 문제들 이 존재한다는 점도 알고 있다. 대부분의 개발자는 0.56.0으로 업그레이드하는 데 문제가 없을 것이다. 앞서 언급한 문제로 차단된 개발자들의 경우, 토론에 참여해 함께 해결책을 모색하기를 기대한다.

0.56.0을 더 안정적인 프레임워크를 위한 기본 구성 요소로 생각할 수 있다. 모든 예외 사항이 해결되기까지는 아마도 1~2주 정도의 광범위한 적용이 필요하겠지만, 이는 2018년 7월(0.57.0) 릴리스를 더욱 향상시킬 것이다.

이 섹션을 마무리하며, 총 818개의 커밋에 기여한 67명의 기여자들에게 감사의 인사를 전한다. 그들의 노력이 여러분의 앱을 더 나은 방향으로 이끌 것이다 👏.

그럼 이제, 더 이상 미루지 않고...

주요 변경 사항​

Babel 7​

여러분도 아시다시피, 최신 자바스크립트 기능을 사용할 수 있게 해주는 트랜스파일러 도구인 Babel이 곧 v7 버전으로 업그레이드된다. 이번 새 버전은 몇 가지 중요한 변화를 가져오기 때문에, Metro가 이러한 개선 사항을 활용할 수 있도록 지금이 업그레이드하기에 적절한 시기라고 판단했다.

업그레이드 과정에서 문제가 발생한다면, 관련 문서 섹션을 참고하길 바란다.

Android 지원 현대화​

Android 환경에서 주변 도구들이 크게 변화했다. Gradle 3.5, Android SDK 26, Fresco 1.9.0, 그리고 OkHttp 3.10.0으로 업데이트했으며, 심지어 NDK API 타겟을 API 16로 조정했다. 이러한 변경 사항은 문제 없이 적용되며 더 빠른 빌드 속도를 제공할 것이다. 더 중요한 점은, 개발자들이 다음 달부터 시행될 새로운 Play Store 요구사항을 준수하는 데 도움이 될 것이다.

이와 관련하여, Dulmandakh에게 많은 PR을 제출해 준 것에 대해 특별히 감사드린다 👏.

이 방향으로 더 나아가기 위해 필요한 몇 가지 단계가 있으며, Android 지원 업데이트에 대한 미래 계획과 논의는 전용 이슈에서 확인할 수 있다. 또한 JSC에 대한 별도의 이슈도 참고할 수 있다.

새로운 Node, Xcode, React, Flow 소식​

이제 React Native의 표준은 Node 8이다. 사실 Node 8은 이미 테스트 중이었지만, Node 6이 유지보수 모드로 전환되면서 본격적으로 채택했다. React도 16.4로 업데이트되었으며, 이번 버전에는 많은 수정 사항이 포함되어 있다.

iOS 8 지원을 중단하고, 이제 iOS 9가 지원 가능한 가장 오래된 버전이 되었다. iOS 8을 실행할 수 있는 기기는 모두 iOS 9로 업그레이드가 가능하므로 이 변경이 문제가 되지 않을 것으로 예상한다. 이로 인해 iOS 8을 실행하는 구형 기기를 위한 우회 코드를 제거할 수 있었다.

지속적 통합(CI) 도구 체인도 Xcode 9.4를 사용하도록 업데이트했다. 이제 모든 iOS 테스트가 애플의 최신 개발 도구에서 실행된다.

Flow 0.75로 업그레이드하여 많은 개발자들이 선호하는 새로운 오류 형식을 사용할 수 있게 되었다. 또한 더 많은 컴포넌트에 대한 타입을 추가했다. 아직 프로젝트에서 정적 타입 검사를 적용하지 않았다면, 런타임이 아닌 코딩 중에 문제를 발견하기 위해 Flow 사용을 고려해 보길 바란다.

그리고 다른 여러 가지...​

예를 들어, YellowBox는 디버깅을 훨씬 더 개선한 새로운 구현체로 교체되었다.

전체 릴리스 노트는 여기에서 확인할 수 있다. 또한 이 새로운 버전으로 업그레이드할 때 문제를 피하려면 업그레이드 가이드를 꼭 참고하길 바란다.


마지막으로, 이번 주부터 React Native 코어 팀이 월간 회의를 다시 시작할 예정이다. 회의에서 다룬 내용을 모두가 알 수 있도록 최신 정보를 제공할 것이며, 여러분의 피드백을 다음 회의에 반영할 수 있도록 노력할 것이다.

모두 즐거운 코딩하길 바란다!

Lorenzo, Ryan, 그리고 React Native 코어 팀 모두

추가: 항상 그렇듯, React Native는 아직 0.x 버전으로 많은 변화가 진행 중임을 상기시킨다. 따라서 업그레이드할 때 무언가가 여전히 충돌하거나 고장날 가능성이 있다는 점을 기억하길 바란다. 이슈나 PR을 제출할 때 서로 도움을 주고받으며, CoC를 준수하길 바란다. 화면 너머에는 항상 사람이 있다는 것을 잊지 말자.