Skip to main content

51 posts tagged with "announcement"

View All Tags

Announcing React Native 0.66

· 8 min read
Luna Wei
Luna Wei
Software Engineer at Meta

오늘 우리는 안드로이드 12와 iOS 15 지원을 포함한 React Native v0.66을 출시한다. 이번 버전에는 다양한 수정 사항과 일반 업데이트가 포함되어 있다.

주요 내용

React Native의 다중 플랫폼 비전

· 17 min read
Christine Abernathy
Christine Abernathy
Developer Advocate at Meta
Eli White
Eli White
Software Engineer at Meta
Luna Wei
Luna Wei
Software Engineer at Meta
Timothy Yung
Timothy Yung
Software Engineer at Meta

React Native는 페이스북과 업계 전반에서 모바일 개발의 기준을 크게 높이는 데 성공했다. 우리가 컴퓨터와 새로운 방식으로 상호작용하고 새로운 기기가 등장함에 따라, React Native가 모두를 위해 존재하기를 바란다. React Native가 처음에는 모바일 앱 개발을 위해 만들어졌지만, 다양한 플랫폼에 초점을 맞추고 각 플랫폼의 강점과 제약을 고려해 개발하는 것이 상호 시너지 효과를 낸다고 믿는다. 이 기술을 데스크톱과 가상 현실로 확장했을 때 큰 이점을 확인했으며, 이게 React Native의 미래에 어떤 의미를 지니는지 공유하게 되어 기쁘다.

React Native in H2 2021

· 11 min read
Luna Wei
Luna Wei
Software Engineer at Meta

지난 한 해 동안 우리 세상에는 많은 변화가 있었고, React Native도 예외는 아니었다. 우리 팀에는 새로운 멤버들이 합류했고(얼른 직접 만나고 싶다!), 프로젝트들은 성숙해졌으며 새로운 기회들이 생겨났다. 이 모든 것을 이번 글과 앞으로의 글들을 통해 여러분과 공유하게 되어 기쁘다.

페이스북에서는 팀이 반년 단위로 사이클을 돌며 일한다. 매 반년마다 전략을 검토하고 계획을 세우며 내부적으로 공유한다. 오늘 우리는 커뮤니티를 위해 H2 계획을 공유하고자 한다.

2021년 H2는 React Native에게 흥미로운 시기다. 우리의 주요 관심사는 커뮤니티 육성, 새로운 아키텍처를 오픈소스에 롤아웃하기 시작하는 것, 그리고 기술을 앞으로 나아가게 하는 것이다.

Announcing React Native 0.65

· 5 min read
Luna Wei
Luna Wei
Software Engineer at Meta

오늘 우리는 React Native 버전 0.65를 출시했다. 이번 버전에는 새로운 Hermes 버전, 접근성 개선, 패키지 업그레이드 등이 포함되어 있다.

Hermes 0.8의 새로운 기능

페이스북의 오픈소스 JavaScript VM인 Hermes가 React Native에 최적화된 버전 0.8.1로 업그레이드되었다. 이번 릴리스에서 주목할 만한 기능은 다음과 같다:

전체 Hermes 변경 로그는 여기서 확인할 수 있다.

아직 Hermes를 사용하지 않았다면 여기서 안내하는 단계를 따라 앱에 Hermes를 적용해 새로운 기능과 성능 향상을 경험해 보자!

접근성 개선 및 추가 기능

지난해 페이스북은 GAAD 서약을 통해 React Native 내 접근성을 개선하기로 약속했다. 0.65 버전에서는 이 서약의 결과물과 기타 접근성 관련 성과를 공유한다! 주요 변경 사항은 다음과 같다:

  • iOS에서 고대비 라이트 및 다크 값을 지정할 수 있도록 허용. 자세한 내용은 문서를 참고한다.
  • Android에 getRecommendedTimeoutMillis API 추가. 이는 Android 접근성 옵션에서 설정한 사용자의 기본 타임아웃 값을 노출하며, 컨트롤을 검토하거나 접근하는 데 추가 시간이 필요한 사용자를 위한 기능이다.
  • TalkBack/VoiceOver가 disabledunselected와 같은 UI 상태를 올바르게 알리도록 일반적인 수정 작업 진행.

진행 중인 접근성 이슈를 확인하거나 기여할 수 있다!

주요 의존성 버전 업데이트 및 주의사항

  • react-native-codegen 버전 0.0.7package.jsondevDependency로 추가해야 한다.
  • JCenter가 종료되어 이제 읽기 전용 상태다. JCenter를 maven 저장소에서 제거하고, MavenCentral과 Jitpack을 사용하도록 의존성을 업데이트했다.
  • OkHttp를 v3에서 v4.9.1로 업그레이드했다. 변경사항에 대한 자세한 내용은 Upgrading to OkHttp 4를 참고한다.
  • Xcode 12.5를 지원하기 위해 Flipper를 0.93으로 업그레이드했다. 변경 내역은 Flipper changelog here에서 확인할 수 있다.
  • Android Gradle Plugin 7 지원이 추가되었다.
  • Apple Silicon에서는 링커 문제를 해결해야 한다. 자세한 내용은 @mikehardy’s note를 참고한다.

감사합니다!

이번 릴리스에는 61명의 기여자1100개 이상의 커밋을 작성했다. 이번 릴리스를 지원하고 기여한 모든 분께 감사드린다! 전체 변경 내역은 여기에서 확인할 수 있다.

GAAD 서약 - 1년 후

· 9 min read
Alexandra Marlette
Alexandra Marlette
GAAD Pledge Open Source Accessibility Community Manager for React Native

페이스북이 GAAD Pledge를 통해 React Native의 접근성을 개선하겠다고 약속한 지 1년이 되었다. 이 프로젝트는 우리의 기대를 뛰어넘는 성과를 거두었다. 우리는 이 프로젝트가 2021년에도 계속될 것임을 발표하게 되어 기쁘며, 지금까지의 진행 상황을 모두에게 공유하고자 한다. 지난해 React Native의 접근성 격차를 철저히 분석한 후, 이러한 격차를 해소하기 위한 작업이 시작되었다.

우리는 90개의 중요 격차 분석 이슈로 시작했으며, 2021년 3월 GitHub에서 프로젝트가 시작된 이후 현재까지 다음과 같은 성과를 거두었다:

  • 커뮤니티가 11개의 이슈를 해결했다.

  • React Native 팀이 19개의 이슈를 평가하고 해결했다.

  • 9개의 풀 리퀘스트가 병합되었다.

  • React Native 문서에 1개의 풀 리퀘스트가 병합되었다.

지난 1년간 더 나은 React Native 접근성을 위해 큰 진전을 이룬 React Native 커뮤니티에 감사와 존경을 표한다. 모든 기여자의 노력이 React Native 접근성 개선에 중요한 역할을 했다.

수정 사항

9개의 풀 리퀘스트를 통해 여러 컴포넌트에서 두 가지 유형의 이슈가 해결되었고, API에 새로운 기능이 추가되었습니다.

  • 7개의 컴포넌트에서 비활성 상태(Disabled state)와 관련된 이슈가 해결되었습니다.

  • 2개의 컴포넌트에서 선택 상태(Selected state)와 관련된 이슈가 해결되었습니다.

  • React Native API에 새로운 기능이 추가되어 AccessibilityManager.getRecommendedTimeoutMillis()를 쿼리할 수 있는 기능이 추가되었습니다.

비활성화 상태 알림 및 비활성화 기능

간극 분석 과정에서 발견된 가장 흔한 문제 중 하나는 일부 컴포넌트가 기능을 알리지 않거나 비활성화하지 않는 것이었다. 이제 일곱 개의 컴포넌트가 비활성화 상태를 알리거나 클릭 기능을 비활성화한다.

비활성화 시 알림

비활성화 prop이 있을 때 클릭 기능 비활성화

선택 상태 알림 개선

포커스 상태에서 선택 상태를 알리지 않던 일부 컴포넌트들이 있었습니다. 이 문제는 컴포넌트가 포커스 상태일 때 AccessibilityState가 selected로 설정되거나 컴포넌트가 selected로 변경될 때 알림이 발생하도록 수정되었습니다.

선택 상태 알림이 추가된 컴포넌트:

접근성 타임아웃 설정

이전에는 Android에서 접근성 타임아웃 설정을 조회할 방법이 없었다. 이번 수정으로 AccessibilityManager.getRecommendedTimeoutMillis()를 통해 조회할 수 있게 되었다. 이 기능은 UI 엘리먼트가 자동으로 사라지거나 진행되기 전의 "조치 시간"을 조회한다.

문서 업데이트

React Native 문서는 사용 가능한 API에 추가되거나 변경된 사항을 반영하기 위해 업데이트해야 한다. React Native 문서의 새로운 추가 내용은 AccessibilityInfo에 getRecommendedTimeoutMillis()가 추가된 것을 다룬다.

커뮤니티 기여

아래에 소개된 모든 기여자들에게 깊은 감사를 전한다. 풀 리퀘스트를 제출하고 머지한 분들, 그리고 이슈를 리뷰하고 코멘트를 남긴 모든 분들의 노력에 감사드린다.

병합된 풀 리퀘스트

다른 방식으로 시간을 내어 기여한 커뮤니티 멤버들에게 감사드립니다!

Simek, saurabhkacholiya, meehawk, intergalacticspacehighway, chrisglein, jychiao, 그리고 Waltari10

함께 참여하세요!

우리는 많은 진전을 이루었지만 아직 끝내지 못했습니다. 마무리하기 위해 여러분의 도움이 필요합니다. Facebook의 React Native 팀은 접근성 격차 분석 이슈를 해결하는 기여자들을 지원하기로 약속했습니다. 그들은 접근성 이슈에 대한 댓글에 계속 응답하고 풀 리퀘스트를 처리할 예정입니다. React Native 팀은 또한 가장 어려운 접근성 격차 분석 이슈 중 일부를 해결하고 있습니다. 이 작업에는 접근성 역할(accessibilityRoles)을 다른 언어로 정확히 번역하는 것과 특정 컴포넌트에 대한 오류 텍스트를 명시하는 것이 포함됩니다.

나머지 작업을 함께 해결해 보세요. 개선된 React Native 접근성 프로젝트 보드에는 아직 해결되지 않은 접근성 이슈가 남아 있습니다. 체크/언체크 상태, 컬렉션 진입/퇴장, 그리고 컬렉션 내 위치와 같은 이슈들은 현재와 새로운 기여자들이 더 접근성 높은 React Native를 만들기 위해 기여할 수 있는 좋은 기회입니다.

더 알아보기

갭 분석이 어떻게 진행되었는지 Facebook Tech 블로그에서 읽어보거나, GitHub 이슈 출시에 관한 내용을 React Native 블로그에서 확인할 수 있다.

GAAD 서약 - 3월 접근성 이슈 업데이트

· 5 min read
Alexandra Marlette
Alexandra Marlette
GAAD Pledge Open Source Accessibility Community Manager for React Native

React Native 접근성 개선을 위해 GitHub 커뮤니티에 간격 분석과 이슈 목록을 공유한 지 4주가 지났다. React Native 커뮤니티의 도움으로 접근성 개선 작업은 이미 큰 진전을 이루고 있다. 커뮤니티 멤버들은 기여자를 지원하고, 테스트를 검토하며, 이전의 접근성 이슈에 주목하고 있다. 3월 8일 이후로 커뮤니티는 6개의 이슈를 해결했고, 4개의 풀 리퀘스트를 완료했다. 또한 7개의 풀 리퀘스트가 검토를 위해 대기 중이다.

이 작업이 진행되는 동안 Facebook의 React Native와 접근성 팀은 이 프로젝트 이전에 제출된 접근성 버그와 이슈를 평가하고 있다. 이들은 현재의 간격 분석으로 이미 해결되었는지, 아니면 프로젝트에 추가로 포함해야 할 이슈가 있는지 확인 중이다. 이미 새로운 이슈 하나가 발견되어 프로젝트에 추가되었고, 4개의 이슈는 기존 이슈와 직접적으로 연결되었다. 또한 2개의 이슈는 근본 원인을 해결함으로써 곧 종료될 예정이다.

참여해 준 모든 커뮤니티 멤버들에게 감사드린다. 여러분의 노력이 React Native를 모두에게 더 접근 가능한 도구로 만드는 데 큰 기여를 하고 있다!

React Native 0.64 발표: iOS에서 Hermes 지원 추가

· 6 min read
Mike Grabowski
Mike Grabowski
CTO and Co-Founder at Callstack

오늘 우리는 iOS에서 Hermes를 지원하는 React Native 0.64를 출시한다.

iOS에서 Hermes 선택적 사용

Hermes는 React Native 실행을 최적화한 오픈소스 자바스크립트 엔진이다. 메모리 사용량을 줄이고, 다운로드 크기를 줄이며, 앱이 사용 가능해지는 시간(Time to Interactive, TTI)을 단축함으로써 성능을 향상시킨다.

이번 릴리즈에서 iOS에서도 Hermes를 사용해 빌드할 수 있게 되었다는 소식을 전한다. iOS에서 Hermes를 활성화하려면 Podfile에서 hermes_enabledtrue로 설정하고 pod install을 실행하면 된다.

use_react_native!(
:path => config[:reactNativePath],
# iOS에서 Hermes를 활성화하려면 `false`를 `true`로 변경하고 pods를 설치한다
:hermes_enabled => true
)

iOS에서의 Hermes 지원은 아직 초기 단계임을 유의해야 한다. 추가 벤치마킹을 진행 중이므로 선택적으로 사용할 수 있도록 했다. 여러분의 애플리케이션에서 직접 시도해보고 결과를 알려주길 바란다!

기본값으로 활성화된 인라인 요구(Inline Requires)

인라인 요구는 Metro의 설정 옵션 중 하나로, JavaScript 모듈의 실행을 앱 시작 시점이 아니라 실제 사용 시점으로 지연시켜 시작 시간을 단축한다.

이 기능은 몇 년 전부터 선택적 설정 옵션으로 존재해왔으며, 문서의 성능 섹션에서 추천해왔다. 이제는 새로운 애플리케이션에서 기본값으로 활성화되어, 추가 설정 없이도 빠른 React Native 애플리케이션을 만들 수 있도록 돕는다.

인라인 요구는 Babel 변환 기능으로, 모듈 임포트를 인라인 형태로 변환한다. 예를 들어, 인라인 요구는 파일 상단에 위치한 모듈 임포트를 실제 사용되는 위치로 이동시킨다.

변경 전:

import {MyFunction} from 'my-module';

const MyComponent = props => {
const result = MyFunction();

return <Text>{result}</Text>;
};

변경 후:

const MyComponent = props => {
const result = require('my-module').MyFunction();

return <Text>{result}</Text>;
};

인라인 요구에 대한 더 자세한 정보는 성능 문서에서 확인할 수 있다.

Chrome에서 Hermes 트레이스 확인하기

지난 한 해 동안 Facebook은 Major League Hacking fellowship을 후원하며 React Native에 기여할 수 있는 기회를 제공했다. Jessie NguyenSaphal Patro는 Chrome DevTools의 Performance 탭을 사용해 Hermes를 사용 중인 애플리케이션의 실행 과정을 시각화할 수 있는 기능을 추가했다.

자세한 내용은 새로운 문서 페이지를 참고한다.

프록시 지원이 추가된 Hermes

Hermes에 프록시 지원 기능을 추가해 react-native-firebase와 mobx 같은 인기 커뮤니티 프로젝트와의 호환성을 확보했다. 기존에 이 패키지들을 사용 중이라면 이제 프로젝트에서 Hermes로 마이그레이션할 수 있다.

다가오는 릴리스에서 Hermes를 Android의 기본 자바스크립트 엔진으로 지정할 예정이므로, Hermes 사용 시 남아 있는 문제점들을 해결하기 위해 노력 중이다. 여러분의 앱이 Hermes를 도입하는 데 걸림돌이 되는 문제가 있다면 Hermes GitHub 저장소에 이슈를 등록해 주세요.

React 17

React 17은 개발자에게 새로운 기능을 추가하거나 주요 변경 사항을 포함하지 않는다. React Native 애플리케이션의 경우, 주요 변경 사항은 새로운 JSX 변환으로, 이제 파일에서 JSX를 사용하기 위해 React를 임포트할 필요가 없어졌다.

React 17에 대한 더 많은 정보는 React 블로그에서 확인할 수 있다.

주요 의존성 버전 변경 사항

  • Android API 레벨 16-20 지원 중단. Facebook 앱은 사용량이 충분히 낮은 Android 버전에 대한 지원을 지속적으로 중단한다. Facebook 앱이 더 이상 이 버전들을 지원하지 않고, React Native의 주요 테스트 환경이기 때문에 React Native도 지원을 중단한다.
  • Xcode 12와 CocoaPods 1.10이 필수로 요구된다.
  • 최소 Node 지원 버전이 10에서 Node 12로 상향 조정되었다.
  • Flipper 버전이 0.75.1로 업데이트되었다.

감사의 말

0.64 버전을 만드는 데 도움을 준 수백 명의 기여자들에게 감사드립니다! 0.64 변경 로그에서 이번 릴리스에 포함된 모든 변경 사항을 확인할 수 있습니다.

The GAAD Pledge - 리액트 네이티브 접근성 개선

· 4 min read
Alexandra Marlette
Alexandra Marlette
GAAD Pledge Open Source Accessibility Community Manager for React Native

안녕하세요, React Native 커뮤니티 여러분,

2020년 5월, Facebook은 GAAD 서약을 처음으로 이행한 기업이 되었다. 이를 통해 Facebook은 접근성을 React Native 오픈소스 프로젝트의 핵심 부분으로 만들겠다는 약속을 했다. 5월 이후로 Facebook은 React Native 내의 접근성 격차를 신중하게 검토하고 문서화하는 데 시간을 투자했다. 지금까지의 격차 분석 결과 90개의 이슈가 발견되었으며, 이 모든 이슈는 GitHub 이슈로 변환되었다.

전반적으로, React Native API는 접근성을 강력하게 지원한다고 판단했다. 그러나 많은 핵심 컴포넌트가 아직 플랫폼의 접근성 API를 완전히 활용하지 못하며, 일부 플랫폼 특화 기능에 대한 지원이 부족하다는 점도 발견했다.

React Native의 개발에는 항상 기여자들의 열정과 다양성이 중요한 역할을 해왔다. 이러한 접근성 격차는 현재와 새로운 기여자들에게 훌륭한 기회가 될 것이다. React Native에 기여하고 싶었던 분들이라면, React Native를 더 접근성 있게 만드는 데 함께 참여해주길 권한다.

기여자들의 노력을 인정하기 위해, 접근성 이슈가 해결되고 풀 리퀘스트에 연결되면, 커뮤니티 매니저가 트위터를 통해 기여자들을 언급할 예정이다. 코드베이스에 풀 리퀘스트가 반영된 기여자들은 React Native 블로그의 월간 이슈 업데이트에서 소개될 것이다.

모두가 더 쉽게 사용할 수 있는 React Native를 만들기 위해 함께해주길 바란다.

여러분이 도울 수 있는 방법:

  • 새로운 기여자는 기여 가이드를 읽고, React Native GitHub에서 46개의 좋은 첫 이슈 목록을 살펴보세요.

  • 조금 더 노력이 필요한 이슈에 관심이 있는 기여자는 Improved React Native Accessibility 프로젝트 페이지를 방문해 React Native 지식이 필요한 GitHub 이슈를 확인하세요.

  • React Native 문서를 업데이트해 접근성 격차를 해결하고자 하는 기술 작가 분들은 React Native Docs를 방문해 보세요.

  • 이 프로젝트를 도울 수 있는 사람들에게 공유해 주세요!

  • GAAD Pledge Open Source Accessibility Community Manager for React Native의 최신 소식을 알고 싶다면 TwitterFacebook을 팔로우하세요.

React Native Documentation Update

· 6 min read
Rachel Nabors
Documentation Engineer at Facebook

지난해 우리는 React Native 문서를 어떻게, 언제 사용하는지 더 잘 이해하기 위해 사용자 인터뷰를 진행하고 설문조사를 실시했다. 24건의 인터뷰와 3000건 이상의 설문 응답을 통해 얻은 데이터와 인사이트를 바탕으로 React Native 문서를 개선했으며, 오늘 그 결과를 공유하게 되어 기쁘다:

인터뷰와 설문조사에 참여해주신 분들, 그리고 문서 작업에 기여해주신 모든 분들께 진심으로 감사드린다. 여러분의 협력 덕분에 이 모든 것이 가능했다.

React Native Team Principles

· 10 min read
Eli White
Eli White
Software Engineer at Meta

Facebook의 React Native 팀은 React Native 작업의 우선순위를 결정하는 데 도움이 되는 원칙을 따릅니다. 이 원칙들은 우리 팀의 특성을 반영하며, React Native 커뮤니티의 모든 이해관계자를 대표하지는 않습니다. 우리는 이러한 원칙을 공유함으로써 무엇이 우리를 움직이는지, 어떻게 결정을 내리는지, 그리고 어떤 부분에 집중하는지에 대해 더 투명하게 설명하고자 합니다.

네이티브 경험 구현

React Native의 최우선 목표는 각 플랫폼에 대한 사용자의 기대를 충족하는 것이다. 이 때문에 React Native는 플랫폼의 기본 요소를 렌더링한다. 크로스 플랫폼 일관성보다 네이티브의 외관과 동작을 더 중요하게 여긴다.

예를 들어, React Native의 TextInput은 iOS에서 UITextField로 렌더링된다. 이를 통해 패스워드 관리자와 키보드 컨트롤과의 통합이 바로 동작한다. 플랫폼 기본 요소를 사용함으로써 React Native 앱은 Android와 iOS의 새로운 릴리스에서 발생하는 디자인 및 동작 변화에도 빠르게 대응할 수 있다.

네이티브 앱의 외관과 동작을 구현하려면 성능도 일치시켜야 한다. 이 부분에 가장 야심 찬 노력을 기울이고 있다. 예를 들어, Facebook은 Android용 React Native를 위해 처음부터 새로 만든 JavaScript 엔진인 Hermes를 개발했다. Hermes는 React Native 앱의 시작 시간을 크게 개선한다. 또한, 스레딩 모델을 최적화하고 React Native가 네이티브 코드와 더 쉽게 상호작용할 수 있도록 주요 아키텍처 변경 작업도 진행 중이다.

대규모 확장성

페이스북 앱의 수백 개 화면은 React Native로 구현되었다. 페이스북 앱은 다양한 기기에서 수십억 명의 사용자가 이용한다. 이것이 바로 우리가 대규모에서 가장 어려운 문제들에 집중하는 이유다.

React Native를 앱에 적용하면 소규모에서는 발견하지 못했던 문제들을 식별할 수 있다. 예를 들어, 페이스북은 최신 아이폰부터 여러 세대의 구형 안드로이드 기기까지 다양한 기기에서의 성능 개선에 초점을 맞춘다. 이러한 접근은 Hermes, Fabric, TurboModules와 같은 아키텍처 프로젝트에 영향을 미친다.

React Native가 대규모 조직에서도 확장 가능하다는 것을 입증했다. 수백 명의 개발자가 하나의 앱에서 작업할 때 점진적인 도입은 필수적이다. 이것이 바로 React Native를 한 화면씩 도입할 수 있도록 설계한 이유다. 곧, 기존 네이티브 화면의 개별 네이티브 뷰를 React Native로 마이그레이션하는 기능도 제공할 예정이다.

대규모 확장성에 집중한다는 것은 현재 우리 팀이 다루지 않는 여러 영역이 있다는 것을 의미한다. 예를 들어, 우리 팀은 React Native의 업계 도입을 주도하지 않는다. 또한 대규모에서 발견하지 못한 문제들에 대한 솔루션을 적극적으로 개발하지 않는다. 하지만 많은 파트너와 핵심 기여자들이 커뮤니티를 위해 이러한 중요한 영역에 집중할 수 있다는 점을 자랑스럽게 생각한다.

개발 속도 향상

탁월한 사용자 경험은 반복적인 과정을 통해 만들어낸다. 코드 변경 결과를 실행 중인 앱에서 몇 초 만에 확인할 수 있어야 한다. React Native의 아키텍처는 개발 중 거의 즉각적인 피드백을 제공한다.

많은 팀이 React Native를 도입해 개발 속도를 크게 향상시켰다고 보고한다. 이러한 팀들은 사소한 변경마다 코딩 세션을 중단할 필요 없이 즉각적인 피드백을 받으면서 다양한 아이디어를 시도하고 추가적인 개선을 더 쉽게 할 수 있다고 말한다. React Native를 개선할 때도 개발자 경험의 이러한 특성을 유지하는 데 주력한다.

즉각적인 피드백은 React Native가 개발 속도를 높이는 유일한 방법이 아니다. 팀은 빠르게 성장하는 고품질 오픈소스 패키지 생태계를 활용할 수 있다. 또한 Android, iOS, 웹 간에 비즈니스 로직을 공유할 수 있다. 이를 통해 업데이트를 더 빠르게 배포하고 플랫폼 팀 간의 조직적 격차를 줄일 수 있다.

모든 플랫폼

2014년 React Native를 소개하면서 "한 번 배우고, 어디서나 작성하라"는 모토를 제시했다. 여기서 '어디서나'는 정말 어디든을 의미한다. 개발자는 기기 모델이나 운영체제에 제한받지 않고 가능한 한 많은 사용자에게 도달할 수 있어야 한다.

React Native는 모바일, 데스크톱, 웹, TV, VR, 게임 콘솔 등 매우 다양한 플랫폼을 대상으로 한다. 최소 공통 분모를 위해 개발하도록 강요하는 대신, 각 플랫폼에서 풍부한 경험을 제공하는 것을 목표로 한다. 이를 위해 각 플랫폼의 고유 기능을 지원하는 데 초점을 맞춘다. 터치, 펜, 마우스와 같은 다양한 입력 방식부터 VR의 3D 환경과 같은 근본적으로 다른 소비 경험까지 모두 포함한다.

이 원칙은 React Native의 새로운 코어 아키텍처를 크로스 플랫폼 C++로 구현해 플랫폼 간 동등성을 높이기로 한 결정에 영향을 미쳤다. 또한 Windows와 macOS와 같은 다른 플랫폼 관리자를 대상으로 한 공개 인터페이스를 개선하고 있다. 모든 플랫폼이 React Native를 지원할 수 있도록 노력하고 있다.

선언형 UI

우리는 모든 플랫폼에 동일한 사용자 인터페이스를 배포하는 방식을 지지하지 않는다. 대신, 각 플랫폼의 고유한 기능을 동일한 선언형 프로그래밍 모델로 표현하는 것을 지향한다. 우리의 선언형 프로그래밍 모델은 React다.

경험적으로, React가 대중화한 단방향 데이터 흐름은 애플리케이션을 더 이해하기 쉽게 만든다. 우리는 화면을 명령형으로 관리되는 뷰보다는 선언형 컴포넌트의 조합으로 표현하는 것을 선호한다. React가 웹에서 성공을 거두고, 새로운 네이티브 Android와 iOS 프레임워크의 방향성은 업계가 선언형 UI를 받아들였다는 것을 보여준다.

React는 선언형 사용자 인터페이스를 대중화했다. 그러나 여전히 React만이 해결할 수 있는 많은 문제가 남아 있다. React Native는 React의 혁신 위에 계속 구축되며, 선언형 사용자 인터페이스 운동의 최전선에 머물 것이다.