🍣

React NativeのUIライブラリ選定 【2024春】

2024/04/10に公開

弊社のReact Nativeベースのアプリ開発に利用していた「Native Base」が開発を終了しました。同じチームが後継として「glustack-ui」をリリースしたのですが、せっかくなので今あるUIライブラリを整理して次のプランを検討してみました。

現在アクティブに開発されているUI実装用パッケージの調査

ExpoがUIライブラリのリストをメンテしていて参考になります。
https://docs.expo.dev/ui-programming/user-interface-libraries/

以下の観点を中心に調べています:

  • スタイリングAPI
  • ヘッドレス構成: UIの状態管理とスタイリングが分かれているかどうか
  • Web対応
  • パフォーマンスベンチマーク

フルスタックのUIライブラリ

名前 スタイリングAPI ヘッドレス Web対応 パフォーマンス
TAMAGUI styled-system リンク
gluestack-ui styled-system / TailWind リンク
React Native Paper StyleSheet -
RNUILib 独自 ? -
React Native Reusables TailWind -

TAMAGUI

https://tamagui.dev/

gluestack-ui

https://ui.gluestack.io/

React Native Paper

https://reactnativepaper.com/

RNUILib

https://wix.github.io/react-native-ui-lib/

React Native Reusables

https://github.com/mrzachnugent/react-native-reusables

※その他、MSのFluent UIのReact Native実装、React Native Elements、React Native UI Kittenなど多数ありますが、アルファ版や最近の更新がないものは除外しています。

UnstyledなUIライブラリ

(2024.7.20追記)

スタイリング・ライブラリ

フルスタックのライブラリは便利な半面依存が大きくなり、NativeBaseのように開発が終了した場合の変更の工数が大きくなるリスクがあります。

最近では、React AriaのようなヘッドレスUIコンポーネントも多数あることから、スタイリング・ライブラリと組み合わせて導入することも検討します。

名前 スタイリングAPI Web対応 パフォーマンス
Shopify Restyle styled-system
Native Wind Tailwind
React Native Unistyles StyleSheet
Fast Style StyleSheet

Shopify Restyle

https://shopify.github.io/restyle/

Native Wind

https://www.nativewind.dev/

React Native Unistyles

https://github.com/jpudysz/react-native-unistyles

参考になりそうなリンク

How much of a performance hit does an app take by using style libraries like NativeWind or Tamagui? : r/reactnative
https://www.reddit.com/r/reactnative/comments/15xx7pn/how_much_of_a_performance_hit_does_an_app_take_by/

efstathiosntonas/react-native-style-libraries-benchmark
https://github.com/efstathiosntonas/react-native-style-libraries-benchmark

Discussion