expo-ios-hig について
expo-ios-higは、ExpoとReact NativeでiOS 26アプリを作るための設計ルール集で、iOS画面を開発・レビューする人向けです。46のTSX中心のルールで、JavaScriptによる再実装ではなく、ネイティブのナビゲーション、コントロール、スタイル、システム連携を重視します。
主な機能
- 018つの優先度カテゴリにまたがる46ルール
- 02Expo Routerのナビゲーションとネイティブ表示パターン
- 03システムコントロールとSF Symbolsの指針
- 04レイアウト、セマンティックカラー、Liquid Glassの指針
- 05タッチ、モーション、アクセシビリティ、システム連携
活用シーン
- 01ExpoのiOS画面やフォームの開発・レビュー
- 02ネイティブスタック、タブ、シート、モーダルの選択
- 03セーフエリア、キーボード、ダークモードへのレイアウト対応
- 04ネイティブらしいフィードバックとアクセシビリティの追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill expo-ios-higインストール後、Claude Code で/expo-ios-higを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdacc-dynamic-type.mdacc-grouping-focus.mdacc-reduce-motion.mdacc-roles-labels.mdacc-state-and-hint.mdlayout-content-inset-under-bars.mdlayout-dark-mode-semantic.mdlayout-edge-to-edge.mdlayout-keyboard-avoidance.mdlayout-readable-width-ipad.mdlayout-safe-area-insets.mdmotion-empty-states.mdmotion-loading-states.mdmotion-optimistic-updates.mdmotion-ui-thread-animation.mdmotion-virtualized-lists.mdnative-action-sheet.mdnative-avoid-material-ui.mdnative-datetime-picker.mdnative-sf-symbols.mdnative-switch-toggle.mdnative-system-alert.mdnav-large-titles.mdnav-native-stack.mdnav-native-tabs.mdnav-push-vs-present.md詳細
Expo iOS HIG ベストプラクティス
Apple のヒューマンインターフェイスガイドラインに準拠し、真にネイティブな使い心地を実現する iOS 26 アプリを Expo(React Native) で構築するための設計ルールです。ネイティブらしさと HIG への準拠に与える影響の大きさに応じて優先順位付けされた、8 カテゴリにわたる 46 のルールを収録しています。すべての例は TSX/Expo です。Swift ではなく、React Native と TypeScript での設計判断を扱います。
核となる考え方は、React Native アプリは JavaScript で iOS を再実装するのではなく、システムのナビゲーションコントローラー、システムコントロール、セマンティックカラー、SF Symbols、本物の触覚フィードバック、システムの共有シートなど、プラットフォームの機能を活用することでネイティブらしくなるということです。これらのルールでは、どの設計判断がネイティブらしさにつながり、どの判断がそれをひそかに損なうのかを説明します。
適用する場面
次のような場合に、これらのガイドラインを参照してください。
- Expo アプリで iOS の画面、ナビゲーション、リスト、フォームを構築またはレビューする
- ナビゲーションを選ぶ:Expo Router のネイティブスタックと JS スタック、ネイティブタブ、シート、モーダル、大きなタイトル
- コントロールを選ぶ:ネイティブの
Alert、ActionSheetIOS、日付ピッカー、Switch、SF Symbols をいつ使うか、または@expo/uiに切り替えるか - プラットフォームに合わせてスタイルを設定する:セーフエリア、ダークモード、セマンティックカラー、iOS の文字サイズスケール、余白、Liquid Glass
- 操作をネイティブらしくする:タッチターゲット、押下フィードバック、スワイプアクション、プルして更新、ジェスチャー、触覚フィードバック
- アニメーション、読み込み中・空の状態、アクセシビリティ、権限、起動時の仕上げを追加する
このスキルを使用しない場面
@expo/uiコンポーネント API —@expo/ui/swift-uiコンポーネント、Host の境界、モディファイアの使い方については、expo-uiスキルを使用してください。このスキルでは、アプリをネイティブにするための設計判断を説明し、SwiftUI に切り替えるのが適切な場合に@expo/uiを案内しますが、その API を改めて説明するものではありません。- クロスプラットフォームのデザインシステムそのもの — 共有する Unistyles テーマ、デザイントークン、バリアント駆動のコンポーネント API、iOS だけでなく web でもコンポーネントをネイティブらしくする方法については、
expo-design-systemスキルを使用してください。このスキルは iOS のネイティブらしさを扱い、もう一方は 2 つのフロントエンドで共有するトークンとコンポーネントのアーキテクチャを扱います。 - ネイティブ Swift / SwiftUI — ネイティブ Swift のコードベースで HIG に準拠する方法については、
ios-higまたはios-designを使用してください。このスキルの例はすべて React Native/TSX です。 - Android — これらのルールは iOS の慣習を対象としています。Android ではプラットフォームに応じたコードを使用して Material に準拠させ、iOS の慣習を適用しないでください。
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | 接頭辞 |
|---|---|---|---|
| 1 | ネイティブナビゲーションアーキテクチャ | CRITICAL | nav- |
| 2 | ネイティブコンポーネントの忠実度 | CRITICAL | native- |
| 3 | レイアウトと適応性 | HIGH | layout- |
| 4 | タッチ、ジェスチャー、触覚フィードバック | HIGH | touch- |
| 5 | ビジュアルシステムと Liquid Glass | HIGH | visual- |
| 6 | アニメーションとフィードバック | MEDIUM-HIGH | motion- |
| 7 | アクセシビリティ | MEDIUM-HIGH | acc- |
| 8 | システム連携と仕上げ | MEDIUM | system- |
クイックリファレンス
1. ネイティブナビゲーションアーキテクチャ(CRITICAL)
nav-native-stack— 画面階層には Expo Router のネイティブ Stack を使用するnav-native-tabs— 最上位のセクションにはネイティブタブを採用するnav-large-titles— 最上位の画面では大きなタイトルを有効にするnav-sheet-detents— 副次的なタスクは detent を指定したシートとして表示するnav-push-vs-present— 階層構造にはプッシュを、独立したタスクには表示を使用するnav-search-in-header— 検索をナビゲーションバーに配置するnav-system-back— システムの戻るボタンとスワイプで戻るジェスチャーを維持する
2. ネイティブコンポーネントの忠実性(CRITICAL)
native-avoid-material-ui— iOSではMaterial Designのコンポーネントキットを避けますnative-sf-symbols— アイコンにはSF Symbolsを使用しますnative-system-alert— 確認にはネイティブのアラートを使用しますnative-action-sheet— アクションの選択にはアクションシートを使用しますnative-datetime-picker— ネイティブの日付と時刻のピッカーを使用しますnative-switch-toggle— ブール値の設定にはプラットフォームのSwitchを使用します
3. レイアウトと適応性(HIGH)
layout-safe-area-insets— セーフエリアコンテキストを使用してセーフエリアのインセットを尊重しますlayout-edge-to-edge— スクロール可能なコンテンツを半透明のバーの下まで広げますlayout-keyboard-avoidance— キーボードの上に入力欄が表示されるようにしますlayout-dark-mode-semantic— アクティブなカラースキームに基づいて色を設定しますlayout-content-inset-under-bars— リストのコンテンツをタブバーとホームインジケーターの先までインセットしますlayout-readable-width-ipad— iPadや大画面では読みやすい幅に制限します
4. タッチ、ジェスチャー、触覚フィードバック(HIGH)
touch-hit-target— タッチターゲットを少なくとも44ptにしますtouch-pressable-feedback— すべてのコントロールに即時の押下フィードバックを与えますtouch-swipe-actions— リスト行にスワイプアクションを用意しますtouch-pull-to-refresh— 引っ張って更新する操作にはRefreshControlを使用しますtouch-gesture-handler-thread— インタラクティブなジェスチャーはGesture Handlerで処理しますtouch-haptics-on-outcome— 意味のある結果に触覚フィードバックを組み合わせます
5. ビジュアルシステムとLiquid Glass(HIGH)
visual-semantic-colors— ハードコードした16進数カラーの代わりに、セマンティックなシステムカラーを使用しますvisual-system-font— インターフェースのテキストにはシステムフォントを使用しますvisual-type-scale— テキストスタイルをiOSの文字スケールに対応させますvisual-spacing-rhythm— ひとつの基準単位からスペーシングを導きますvisual-liquid-glass-gated— バージョンで条件分岐するネイティブビューを通じてLiquid Glassを適用しますvisual-tint-discipline— インタラクティブな要素にアクセントのティントを限定して使用します
6. モーションとフィードバック(MEDIUM-HIGH)
motion-ui-thread-animation— アニメーションをUIスレッドで実行しますmotion-virtualized-lists— 長いリストは仮想化リストで描画しますmotion-loading-states— 読み込み中はコンテンツの形状に合わせたプレースホルダーを表示しますmotion-empty-states— 次の操作を促す空の状態を設計しますmotion-optimistic-updates— ユーザー操作に対して楽観的な更新を適用します
7. アクセシビリティ(中〜高)
acc-roles-labels— VoiceOver で操作可能なコントロールやアイコンのみのコントロールにラベルを付けますacc-dynamic-type— Dynamic Type に応じてテキストを拡大できるようにしますacc-reduce-motion— 視差効果を減らす設定を尊重しますacc-state-and-hint— 支援技術にコントロールの状態を伝えますacc-grouping-focus— 関連する要素をグループ化して、論理的なフォーカス順序を設定します
8. システム連携と仕上げ(中)
system-permissions-jit— 理由を説明したうえで、必要なタイミングで権限をリクエストしますsystem-status-bar— 背景のコンテンツに合わせてステータスバーのスタイルを設定しますsystem-keyboard-type— 各テキストフィールドの内容に合わせて設定しますsystem-share-sheet— システムの共有シートから共有しますsystem-app-icon-launch— 実際のアプリアイコンと起動画面を設定します
使い方
詳しい説明とコード例については、各リファレンスファイルをお読みください。
- セクションの定義 — カテゴリの構成と影響度
- ルールのテンプレート — 新しいルールを追加するためのテンプレート
- リファレンスファイル:
references/{prefix}-{slug}.md
各ルールファイルには、ネイティブらしい操作感にとって重要な理由の簡単な説明、Incorrect(ネイティブではない)TSX の例、それを最小限の差分で修正したCorrect(ネイティブ)な例、および信頼できる参考 URL が含まれています。該当する場合は、「このパターンを使用しない場合」または「代替案」のセクションも追加されています。
関連スキル
expo-ui—@expo/ui/swift-uiコンポーネント API リファレンスです。ここにあるルールでネイティブの SwiftUI コンポーネントが案内されている場合に使用します。ios-hig/ios-design— ネイティブの Swift/SwiftUI コードベース向けの HIG と Apple のデザイン原則です。expo— Expo React Native のパフォーマンス最適化です。ここにあるモーションやリストに関するルールを補完します。