👋
App Routerと相性の良いUIの対応Componentを比較してみる
はじめに
React Server Componentsの登場以降、一部のコンポーネントをサーバーサイドでレンダーし、アプリケーションのパフォーマンスと開発体験を向上しようという動きが加速しています。NextJSになってもRSCをふんだんに用いてApp Routerが構築されており、フロントエンド開発に大きな影響を与えています。
UI Componentの開発でも、クライアントサイドでdynamicにレンダリングするより、サーバサイドでstaticにレンダリングすることで、パフォーマンスの向上が期待できます。この記事では、App RouterにおけるUI開発での対応Componentを比較します。対象となるものは以下の5つです。
比較表
Components | Headless UI | NextUI | MUI base | Radix UI | shadcn/ui |
---|---|---|---|---|---|
Accordion(DIsclosure) | ⚪︎ | ⚪︎ | (Planned) | ⚪︎ | ⚪︎ |
Alert Dialog | ⚪︎ | ⚪︎ | |||
Aspect Ratio | ⚪︎ | ⚪︎ | |||
Autocomplete | ⚪︎ | ⚪︎ | |||
Avatar | ⚪︎ | ⚪︎ | ⚪︎ | ||
Badge | ⚪︎ | ⚪︎ | ⚪︎ | ||
Button | ⚪︎ | ⚪︎ | ⚪︎ | ||
Calender | ⚪︎ | ||||
Card | ⚪︎ | ⚪︎ | |||
Checkbox | ⚪︎ | (Planned) | ⚪︎ | ⚪︎ | |
Checkbox Group | ⚪︎ | ||||
Chip | ⚪︎ | ||||
Circular Progress | ⚪︎ | ||||
Click-Away Listener | ⚪︎ | ||||
Code | ⚪︎ | ||||
Collapsible | ⚪︎ | ⚪︎ | |||
Comboxox | ⚪︎ | ||||
Command | ⚪︎ | ||||
Context Menu | ⚪︎ | ⚪︎ | |||
Data Table | ⚪︎ | ||||
Date PIcker | ⚪︎ | ||||
Dialog | ⚪︎ | ⚪︎ | ⚪︎ | ||
Divider | ⚪︎ | ||||
Drawer | (Planned) | ||||
Dropdown Menu | ⚪︎ | ⚪︎ | ⚪︎ | ||
Focus Trap | ⚪︎ | ||||
Form(Form Control) | ⚪︎ | ⚪︎(Preview) | ⚪︎ | ||
Hover Card | ⚪︎ | ⚪︎ | |||
Image | ⚪︎ | ||||
Input | ⚪︎ | ⚪︎ | ⚪︎ | ||
Kbd | ⚪︎ | ||||
Label | ⚪︎ | ⚪︎ | |||
Link | ⚪︎ | ||||
Menu Bar(Menu) | ⚪︎ | ⚪︎ | ⚪︎ | ⚪︎ | |
Modal | ⚪︎ | ⚪︎ | |||
Navigation Menu | ⚪︎ | ⚪︎ | ⚪︎ | ||
No-SSR | ⚪︎ | ||||
Pagenation | ⚪︎ | (Planned) | |||
Popper | ⚪︎ | ||||
Popover | ⚪︎ | ⚪︎ | ⚪︎ | ⚪︎ | |
Portal | ⚪︎ | ||||
Progress | ⚪︎ | ⚪︎ | ⚪︎ | ||
Radio Group | ⚪︎ | ⚪︎ | (Planned) | ⚪︎ | ⚪︎ |
Rating | (Planned) | ||||
Scroll Area | ⚪︎ | ⚪︎ | |||
Select(ListBox) | ⚪︎ | ⚪︎ | ⚪︎ | ⚪︎ | |
Separator | ⚪︎ | ⚪︎ | |||
Sheet | ⚪︎ | ||||
Skelton | ⚪︎ | ⚪︎ | |||
Slider | ⚪︎ | ⚪︎ | ⚪︎ | ||
Snackbar | ⚪︎ | ||||
Snippet | ⚪︎ | ||||
Spacer | ⚪︎ | ||||
Switch | ⚪︎ | ⚪︎ | ⚪︎ | ⚪︎ | ⚪︎ |
Table | ⚪︎ | ⚪︎ | |||
Table Pagenation | ⚪︎ | ||||
Tabs | ⚪︎ | ⚪︎ | ⚪︎ | ⚪︎ | ⚪︎ |
TextArea | ⚪︎ | ⚪︎ | ⚪︎ | ||
Tranasition | ⚪︎ | ||||
Toast | ⚪︎ | ⚪︎ | |||
Toggle | ⚪︎ | ⚪︎ | |||
Toggle Group | (Planned) | ⚪︎ | |||
Toolbar | ⚪︎ | ||||
Tooltip | ⚪︎ | (Planned) | ⚪︎ | ⚪︎ | |
User | ⚪︎ |
まとめ
対応しているComponentは結構バラバラですね。App Routerが登場してから日が浅いので、まだまだ発展途上感はあります。必要なComponentをベースに組み合わせていくのが良さそうです。Mantineの対応Component数は100を超えているので、それと比べるとどれも貧弱です。他のUI Library等もSSR対応してくる可能性は高いので、まだまだ様子見した方が良さそうです。
フィシルコムのテックブログです。マーケティングSaaSを開発しています。 マイクロサービス・AWS・NextJS・Golang・GraphQLに関する発信が多めです。 カジュアル面談はこちら(ficilcom.notion.site/bbceed45c3e8471691ee4076250cd4b1)から
Discussion