TL;DR
React とプラットフォームのネイティブ機能を使って、Android と iOS のアプリケーションを作るオープンソースのフレームワーク。
仕組み
Android と iOS の開発では、ビュー(view)が UI の基本的な部品である。テキストやボタンのような小さな要素もビューで、Android では Kotlin や Java、iOS では Swift や Objective-C で書く。
React Native では、これらのビューを JavaScript から React のコンポーネントとして呼び出せる。実行時に、React Native がコンポーネントに対応する Android と iOS のビューを作る。同じネイティブのビューを使うので、作ったアプリケーションは、ほかのアプリケーションと同じ見た目、操作感、性能になる。
React Native には、すぐに使えるネイティブのコンポーネントがコアコンポーネントとして用意されている。
| React Native | Android | iOS | Web |
|---|---|---|---|
<View> | <ViewGroup> | <UIView> | スクロールしない <div> |
<Text> | <TextView> | <UITextView> | <p> |
<Image> | <ImageView> | <UIImageView> | <img> |
<ScrollView> | <ScrollView> | <UIScrollView> | <div> |
<TextInput> | <EditText> | <UITextField> | <input type="text"> |
コアコンポーネントのほかに、自分でネイティブのコンポーネントを作ったり、コミュニティのものを使ったりもできる。