RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/開発ツール
開発ツール/2026-04-28中級

Rork で Bottom Tab のアイコンが消える・タブが切り替わらない症状の修正ガイド

Rork で作ったアプリの Bottom Tab のアイコンが表示されない、タブをタップしても切り替わらない症状について、3つのパターンに分けて原因と修正手順を実際のコード例とあわせて整理しました。

Rork515expo-router2Bottom Tabナビゲーション3トラブルシューティング77

Bottom Tab は完成していると気持ちのいい部品なのですが、Rork で生成したコードに少し手を入れた瞬間、アイコンだけが消えたり、タップしても画面がうんともすんとも言わなくなったりすることがあります。私自身、Rork でアプリを量産しているうちに「同じ症状を 3 回以上踏んでいるな」と気づいて整理したのが、この記事の内容です。

困ったときに「どこを最初に見るべきか」を分かっている人だけが、サクッと数分で直せるところを、知らないと半日溶かす。そんな性格のバグなので、症状を 3 つのパターンに切り分けてから順に潰していくのが結局いちばん早いです。

症状を 3 つに切り分けてから手を動かす

まず、闇雲に _layout.tsx をいじる前に、いまのバグがどのパターンに当てはまるかを切り分けます。Rork で発生する Bottom Tab 系のトラブルは、私の経験ではほぼ次の 3 種類に集約されます。

  • パターン A: アイコンだけ表示されない(タブの切り替え自体は動く)
  • パターン B: タブをタップしても画面が切り替わらない(アイコンは出る)
  • パターン C: 開発ビルドでは動くのに本番ビルドだけアイコンが消える

A と B では原因がまったく違うので、同じ手順で直そうとすると遠回りします。最初に Expo Go や Rork Companion で動作確認し、自分のケースがどれかを 1 分で判定してから次に進みます。

パターン A: アイコンが表示されないとき

このケースは、tabBarIcon に渡している関数の 戻り値の型icon ライブラリのインポート がほぼ確実に怪しいです。Rork が初期生成するコードはたいてい lucide-react-native を使いますが、ここを別のライブラリに差し替えた直後に空白になることが多いです。

// app/(tabs)/_layout.tsx
import { Tabs } from "expo-router";
import { Home, Settings, User } from "lucide-react-native";
 
export default function TabLayout() {
  return (
    <Tabs
      screenOptions={{
        // ❌ NG: 関数を返さない / size が undefined のまま渡る
        // tabBarIcon: <Home />,
 
        // ✅ OK: ({ color, size }) => ReactNode の形を守る
        tabBarActiveTintColor: "#0070f3",
        headerShown: false,
      }}
    >
      <Tabs.Screen
        name="index"
        options={{
          title: "Home",
          tabBarIcon: ({ color, size }) => <Home color={color} size={size} />,
        }}
      />
      <Tabs.Screen
        name="settings"
        options={{
          title: "Settings",
          tabBarIcon: ({ color, size }) => <Settings color={color} size={size} />,
        }}
      />
    </Tabs>
  );
}

ポイントは 3 つです。(1) tabBarIcon は必ず関数で渡すこと、(2) colorsize を props に流すこと、(3) lucide-react-native を使う場合は react-native-svg がインストール済みであること。react-native-svg が無いと、エラーは出ないのにアイコンだけ静かに消えます。expo install react-native-svg をたたいてから再ビルドすると、ピタッと出てきます。

パターン B: タップしても画面が切り替わらないとき

タブ自体は表示されているのにタップが効かない場合は、ファイル名とルート名のミスマッチを疑います。expo-router は app/(tabs)/ 配下のファイル名を自動でルートに割り当てるので、<Tabs.Screen name="profile" /> と書いておきながら app/(tabs)/Profile.tsx(先頭大文字)になっていると、対応が取れずに無反応になります。

修正の流れは次のとおりです。app/(tabs)/ の中身を確認して、ファイル名がすべて 小文字 + ハイフン になっていることを確認し、name= の値と一致させます。あわせて _layout.tsx<Tabs.Screen name="..." /> 順がファイルの存在順と齟齬していないかも見ます。

もう一つよく踏むのが、Stack を入れ子にしたタブで initialRouteName を間違えるケースです。タブ内でさらに Stack を持たせる場合は、各サブ画面の最初のルートを明示しておかないと、タップしても「タブの中の何も無いルート」へ遷移してしまい、画面が動かないように見えます。原因の見つけ方やデバッグ手順は、expo-router でナビゲーションエラーが出るときの対処 にも詳しくまとめています。

パターン C: 本番ビルドだけアイコンが消える

開発中はちゃんと動いていたのに、TestFlight や本番 APK にしたとたん Bottom Tab のアイコンが空白になります。これは、Metro の tree-shaking とアイコンライブラリの相性で起きることが多いです。lucide-react-native のように動的インポートを内部で使うライブラリは、本番ビルドの最適化で参照を見失うことがあります。

対処は次の順で試すのが効率的です。

  • まず metro.config.jsresolver.unstable_enableSymlinks を有効にしていないかを確認します。trueにしているとモジュール解決が崩れることがあります
  • app.jsonexperiments.tsconfigPaths を試験的に外して再ビルドする
  • それでも直らない場合は、react-native-vector-icons@expo/vector-icons の安定したセットに置き換える

@expo/vector-icons は Expo SDK に同梱されていて Bottom Tab 用途では事故が少なく、私はトラブル時のフォールバックとして第一候補にしています。アイコンセットを切り替えると、内部的には別パッケージになるので、本番ビルドの挙動も変わります。

つまずきやすいポイントと予防策

事前に避けられたら避けたいポイントを 3 つだけ書いておきます。

  • 「アイコンが消える=設定ミス」と決めつけないreact-native-svg 未インストール、Hermes エンジン側の問題など、外側の依存関係が原因のことが半数くらいあります
  • Tabs.Screenname とファイル名を 1 対 1 で合わせる。Rork の AI に「タブを追加して」と頼むと、たまにここがズレた状態で生成されるので、生成直後にファイルツリーを見て確認するクセをつけます
  • 本番ビルドは TestFlight で必ず確認する。Companion アプリで動いている=本番でも動く、ではありません。リリース直前に気づいて慌てないように、テスト工程に「Tab の見た目チェック」を 1 行入れておくだけで保険になります

似た系統の症状で UI が更新されないケースは state が更新されない・再レンダリングされない問題の修正 も参考になるので、原因の切り分けに迷ったら覗いてみてください。

全体を振り返って — 直したあとに 1 つだけやっておくこと

修正できたら、その日のうちに app/(tabs)/_layout.tsx をひとつのコンポーネントに切り出して、ファイル先頭に「Bottom Tab を追加するときの手順」を 3 行コメントで残しておくのをおすすめします。次に同じバグを踏むのは未来の自分か、共同開発者です。「アイコンを足したら react-native-svg を確認」「name= とファイル名を一致」「本番ビルドで TestFlight 確認」。この 3 行のチェックリストが、半日の時間を救ってくれることが何度もありました。

シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

開発ツール2026-07-15
開発中は黄色い警告だけだったのに、復帰したら落ちた — ルートパラメータに関数を入れていた話
Rork が生成した画面遷移コードが、ルートパラメータに関数と Date を載せていました。開発中は警告で済むのに、アプリを復帰させると params.onFavorite is not a function で落ちます。原因と、ID だけを渡す形への直し方をまとめました。
開発ツール2026-06-17
Rorkで書き出したアプリがApp Store Connectで「処理中」のまま止まる — 原因の切り分けと対処
Rorkで書き出したアプリをApp Store Connectにアップロードしたのに、ビルドが「処理中」のまま何時間も止まり、TestFlightにも審査提出にも現れない。私が実際に詰まったときの切り分け手順と、再発を防ぐ事前チェックを実コード付きで整理します。
開発ツール2026-06-12
Rork 製アプリの『書類とデータ』が数 GB に膨らむときの原因と対処 — expo-image のディスクキャッシュ管理
アプリ本体は小さいのに『書類とデータ』だけが数 GB に膨らむ——壁紙アプリの運用で実際に踏んだ expo-image のディスクキャッシュ肥大を、cachePolicy の使い分け・縮小版配信・世代別クリアの三段構えで解決した記録です。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →