Skip to main content

React Native 오픈소스 업데이트 (2019년 3월)

· 10 min read
Christoph Nakazawa
Christoph Nakazawa
Former Engineer at Facebook

2018년 4분기에 우리는 React Native 오픈소스 커뮤니티에 더 많은 투자를 하기로 결정한 후 React Native 오픈소스 로드맵을 발표했다.

첫 번째 목표로 우리는 커뮤니티에서 가장 눈에 띄는 부분을 파악하고 개선하는 데 집중했다. 주요 목표는 미처리된 풀 리퀘스트를 줄이고, 프로젝트의 범위를 축소하며, 주요 사용자 문제를 식별하고, 커뮤니티 관리 가이드라인을 마련하는 것이었다.

지난 두 달 동안 우리는 예상보다 더 많은 진전을 이루었다. 자세한 내용은 아래에서 확인할 수 있다:

풀 리퀘스트 관리

건강한 커뮤니티를 구축하려면 코드 기여에 신속하게 대응해야 한다. 지난 몇 년간 커뮤니티 기여 리뷰를 우선순위에서 밀려나게 하며 280개의 풀 리퀘스트가 누적되었다(2018년 12월 기준). 첫 번째 마일스톤에서 열려 있던 풀 리퀘스트 수를 약 65개로 줄였다. 동시에 하루 평균 풀 리퀘스트 개수는 3.5개에서 7개로 증가했으며, 이는 지난 3개월 동안 약 600개의 풀 리퀘스트를 처리했음을 의미한다.

풀 리퀘스트 중 약 3분의 2는 병합했고, 나머지 3분의 1은 닫았다. 병합하지 않고 닫은 경우는 오래되었거나 품질이 낮았거나, 프로젝트의 범위를 불필요하게 확장시키는 경우였다. 병합된 풀 리퀘스트 대부분은 버그 수정, 크로스 플랫폼 일관성 개선, 새로운 기능 도입과 관련이 있었다. 주목할 만한 기여로는 타입 안전성 개선과 AndroidX 지원 작업이 있다.

Facebook에서는 마스터 브랜치에서 React Native를 실행하므로, 모든 변경 사항을 React Native 릴리스에 반영하기 전에 먼저 테스트한다. 병합된 풀 리퀘스트 중 문제를 일으킨 것은 6개뿐이었다. 이 중 4개는 내부 개발에만 영향을 미쳤고, 2개는 릴리스 후보 단계에서 발견되었다.

커뮤니티 기여 중 눈에 띄는 예로는 업데이트된 “RedBox” 화면이 있다. 이는 커뮤니티가 개발자 경험을 더 친화적으로 만드는 좋은 사례다.

핵심 기능 최적화

현재 React Native는 매우 넓은 기능 범위를 가지고 있으며, Facebook에서 자주 사용하지 않는 여러 유지보수되지 않은 추상화들이 포함되어 있다. 우리는 React Native를 더 작고 가볍게 만들기 위해 기능 범위를 줄이고, Facebook에서 주로 사용되지 않는 추상화들을 커뮤니티가 더 잘 관리할 수 있도록 작업 중이다.

첫 번째 단계로, Lean Core 프로젝트에 대해 커뮤니티에 도움을 요청했다. 응답은 압도적이었고, 모든 진행 상황을 따라가기 어려울 정도였다. 한 달도 채 되지 않은 기간 동안 완료된 작업을 확인해 보라!

가장 기쁜 점은 유지보수 담당자들이 오랫동안 해결되지 않은 문제들을 수정하고, 테스트를 추가하며, 오랫동안 요청받던 기능을 지원하기 위해 적극적으로 참여했다는 것이다. 이러한 모듈들은 React Native 내에서보다 더 많은 지원을 받고 있으며, 이는 커뮤니티에게 큰 도약임을 보여준다. 예를 들어, WebView많은 풀 리퀘스트를 받았고, CLI는 이제 커뮤니티 멤버들에 의해 유지보수되며 필요한 개선과 수정을 받았다.

주요 사용자 문제

12월에 커뮤니티에 React Native에 대해 불만스러운 점을 물었다. 응답을 모아 각 문제에 대해 답변을 달았다. 다행히 커뮤니티가 겪는 많은 문제는 Facebook에서도 마찬가지로 발생하는 문제다. 다음 마일스톤에서 주요 문제 중 일부를 해결할 계획이다.

가장 많은 표를 받은 문제 중 하나는 React Native의 최신 버전으로 업그레이드할 때의 개발자 경험이었다. 불행히도 이 문제는 우리가 master 브랜치에서 React Native를 실행하기 때문에 직접 경험하지는 않는다. 다행히 커뮤니티 멤버들이 이 문제를 해결하기 위해 나섰다:

0.59 릴리스

React Native 커뮤니티, 특히 Mike GrabowskiLorenzo Sciandra의 도움 없이는 이번 릴리스를 진행할 수 없었다. 우리는 릴리스 관리 프로세스를 개선하고 앞으로 더 적극적으로 참여할 계획이다:

  • 주요 릴리스마다 커뮤니티 멤버들과 함께 블로그 포스트를 작성할 것이다.
  • 사용자가 새 버전으로 업그레이드할 때 CLI에서 주요 변경 사항을 직접 보여줄 것이다.
  • 릴리스에 걸리는 시간을 줄일 것이다. 자동화된 테스트를 늘리고 개선된 수동 테스트 계획을 마련하는 방법을 모색 중이다.

이러한 계획 중 상당 부분이 곧 출시될 React Native 0.59 릴리스에 반영될 것이다. 0.59 버전은 React Hooks, Android용 64비트 JavaScriptCore 버전, 그리고 다양한 성능 및 기능 개선 사항을 포함한다. 현재 릴리스 후보로 출시되었으며, 다음 2주 안에 안정화될 예정이다.

다음 단계

앞으로 두 달 동안 우리는 진행 상황을 유지하면서 풀 리퀘스트를 계속 관리할 것이다. 동시에 미해결된 GitHub 이슈의 수를 줄이기 시작할 것이다. Lean Core 프로젝트를 통해 React Native의 범위를 계속 축소할 계획이다. 우리는 커뮤니티에서 가장 중요한 문제 5가지를 해결할 것이다. 커뮤니티 가이드라인을 마무리하면서 웹사이트와 문서 작업에 집중할 예정이다.

3월에는 Facebook 런던 사무소에서 커뮤니티 기여자 10명 이상을 초청해 여러 작업을 함께 진행할 예정이다. 여러분이 React Native를 사용하고 있다는 사실에 기쁘게 생각하며, 2019년에 우리가 진행 중인 개선 사항을 직접 확인하고 느낄 수 있기를 바란다. 몇 달 후에 또 다른 업데이트로 찾아뵙겠다. 그동안 여러분의 풀 리퀘스트를 병합할 예정이다! ⚛️✌️