0.56 버전 릴리스
오랜 기다림 끝에 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를 준수하길 바란다. 화면 너머에는 항상 사람이 있다는 것을 잊지 말자.