◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-05-04中級

Rork アプリを iOS 26 & Expo SDK 54 に対応させる実践ガイド — Liquid Glass の実装手順

iOS 26 リリースで Rork 製 React Native アプリに必要な対応を整理。Expo SDK 54 への移行手順、Liquid Glass タブバーの実装、GlassView の使い方、よくあるエラー対処まで実際のコードで解説します。

iOS 265Expo SDK 54Liquid Glass3React Native239アップデートNativeTabs

iOS 26 がリリースされてから、アプリのレビューに「タブバーの見た目が変わった」「ナビゲーションが以前と違う」という声が届くようになりました。Apple が iOS 26 で導入した Liquid Glass というデザイン言語は、対応しているアプリとそうでないアプリの見た目の差を、ユーザーが肌で感じ始めるほど目立つ変化になっています。

Rork で作った React Native / Expo アプリも、この変化から無縁ではありません。何もしなくても動き続けはしますが、iOS 26 のデザイン言語に最適化するには Expo SDK のバージョンアップと少しのコード変更が必要になります。一方で、焦って全部一気に対応しようとすると既存ユーザーへの影響が出ることもあります。

ここでは既存の Rork アプリを iOS 26 に対応させるための手順を、優先度をつけながら解説します。スキップしても問題ないものと、早めに対応したほうがいいものを分けて整理していきます。

iOS 26 で React Native アプリに何が起きるか

iOS 26 の変化はデザイン面が中心ですが、React Native アプリに直接影響する点がいくつかあります。

タブバーが Liquid Glass スタイルに変わる

iOS 26 では、システムのタブバーが半透明のガラス素材風(Liquid Glass)に変わります。expo-router の Tabs コンポーネントを使っているアプリは、Expo SDK 54 以降で NativeTabs API を通じてこのネイティブスタイルが自動的に反映されます。タブアイコンのデザインによっては Liquid Glass 背景との相性が悪くなることがあるので、実機での確認が大切です。

back ナビゲーションの UI が変わる

スタックナビゲーションの戻るボタン周辺にも Liquid Glass が適用されます。Expo Router v4 以降ではほぼ自動で対応されますが、カスタムのヘッダースタイルを細かく設定していた場合は、意図しない表示になることがあります。

Edge-to-edge 表示がより厳格になる

iOS 26 では edge-to-edge(画面端から端まで)表示がさらに標準化されています。Safe Area Insets を正しく設定していないアプリでは、コンテンツがステータスバーやホームインジケーターと重なりやすくなっています。これは以前からの推奨事項ではありますが、iOS 26 ではより顕在化しやすい状況になっています。

Expo SDK 54 への移行が最初の一歩

Liquid Glass の恩恵を受け、iOS 26 対応を進めるには、まず Expo SDK を 54 以上にアップグレードする必要があります。SDK 54 には React Native 0.81 が含まれており、iOS 26 のネイティブ UI コンポーネントにアクセスできるようになります。

# Expo SDK 54 への移行
npx expo install expo@latest
 
# 依存関係を SDK 54 対応バージョンに自動更新
npx expo-doctor
npx expo install --fix

expo-doctor を実行すると、SDK 54 に対応していないライブラリや設定の問題が一覧で表示されます。まずこのコマンドの出力を確認してから移行を進めるのが安全です。

Rork 生成アプリは比較的スムーズに移行できる

Rork が生成するアプリは比較的シンプルな依存関係で構成されていることが多く、SDK 54 への移行はスムーズなケースが多いです。ただし、サードパーティの Native モジュールを追加している場合は、そのライブラリの SDK 54 対応状況を個別に確認することをお勧めします。依存関係のエラーが出た場合は、Expo 依存関係エラーの対処法が参考になるかもしれません。

SDK 55 への移行は慌てなくて大丈夫

2026年5月時点では Expo SDK 55(React Native 0.83 + React 19.2)もリリースされていますが、SDK 55 は Legacy Architecture のサポートを完全に削除しています。Rork 生成アプリの一部で New Architecture の移行が完了していない場合は、まず SDK 54 で iOS 26 対応を安定させてから、SDK 55 の移行を検討するほうが安全です。SDK 55 の新機能や Hermes v1 の最適化については、Expo SDK 55 パフォーマンス最適化ガイドも参照してください。

Liquid Glass の実装 — NativeTabs と GlassView

SDK 54 への移行が完了したら、Liquid Glass デザインを実装していきましょう。

NativeTabs でタブバーを Liquid Glass に

expo-router v4 の Tabs コンポーネントは、iOS 26 デバイスでは自動的に Liquid Glass スタイルのタブバーを使用します。特別なコードを追加しなくても、SDK 54 + expo-router v4 の組み合わせで動作するはずです。

// app/(tabs)/_layout.tsx
import { Tabs } from 'expo-router';
import { Ionicons } from '@expo/vector-icons';
 
export default function TabLayout() {
  return (
    <Tabs
      screenOptions={{
        // iOS 26 では自動的に Liquid Glass タブバーが適用される
        // tabBarStyle の変更は Liquid Glass の外観に影響する場合がある
        headerShown: false,
      }}
    >
      <Tabs.Screen
        name="index"
        options={{
          title: 'ホーム',
          tabBarIcon: ({ focused, color, size }) => (
            <Ionicons
              name={focused ? 'home' : 'home-outline'}
              size={size}
              color={color}
              // iOS 26 では color が Liquid Glass に合わせて自動調整される
            />
          ),
        }}
      />
      <Tabs.Screen
        name="explore"
        options={{
          title: '探索',
          tabBarIcon: ({ focused, color, size }) => (
            <Ionicons
              name={focused ? 'search' : 'search-outline'}
              size={size}
              color={color}
            />
          ),
        }}
      />
    </Tabs>
  );
}

実機で確認した際にアイコンの色が Liquid Glass 背景と合わない場合は、tabBarActiveTintColor と tabBarInactiveTintColor を調整してみてください。

GlassView でカードやヘッダーにガラス効果を追加

タブバー以外の場所にも Liquid Glass 効果を使いたい場合は、expo-glass-effect パッケージが利用できます。

npx expo install expo-glass-effect
import { GlassView } from 'expo-glass-effect';
import { Platform, Text, View, StyleSheet } from 'react-native';
 
// iOS バージョンのチェック(フォールバック必須)
const isIOS26OrLater =
  Platform.OS === 'ios' && parseInt(Platform.Version as string, 10) >= 26;
 
export default function GlassCard({ children }: { children: React.ReactNode }) {
  if (isIOS26OrLater) {
    return (
      <GlassView
        intensity="medium"  // "low" | "medium" | "high"
        tint="system"       // "light" | "dark" | "system"
        style={styles.glassCard}
      >
        {children}
      </GlassView>
    );
  }
 
  // iOS 25 以下のフォールバック(不透明の通常ビュー)
  return (
    <View style={[styles.glassCard, styles.fallbackCard]}>
      {children}
    </View>
  );
}
 
const styles = StyleSheet.create({
  glassCard: {
    padding: 16,
    borderRadius: 16,
    overflow: 'hidden',
    marginVertical: 8,
  },
  fallbackCard: {
    backgroundColor: 'rgba(255, 255, 255, 0.9)',
    shadowColor: '#000',
    shadowOffset: { width: 0, height: 2 },
    shadowOpacity: 0.1,
    shadowRadius: 8,
    elevation: 4,
  },
});

フォールバック実装を省略しないこと

GlassView は iOS 26 以上でのみ動作します。フォールバックなしにすると、iOS 25 以下のユーザーでクラッシュが発生します。iOS 26 のシェアはまだ100%ではないので、必ずフォールバックを用意してください。

iOS 26 対応でよく遭遇するエラーと対処法

実際に移行を進めていると、いくつかパターン化されたエラーに出会います。

GlassView でクラッシュ「API not available」

一部の iOS 26 ベータ版では Liquid Glass API が利用できないバージョンがあります。上記のフォールバック実装(isIOS26OrLater チェック)で対応できます。iOS 26 リリース版では基本的に問題ありません。

タブアイコンの tint color がスクロール時に正しく変わらない

これは expo-router の既知の問題(expo/expo Issue #39930)です。SDK 54 の最新パッチバージョンで修正されていることが多いので、npx expo install expo-router@latest で更新してみてください。

back ナビゲーションに Liquid Glass が強制適用されてカスタムスタイルが崩れる

iOS 26 では back navigation の UI に Liquid Glass が適用されます(expo/expo Issue #40081)。カスタムのヘッダースタイルを設定している場合は、Expo Router の headerStyle や headerBackground プロパティを使って調整が必要になるケースがあります。

SDK 55 移行時に New Architecture 未対応ライブラリでエラー

SDK 55 では Legacy Architecture が完全に削除されているため、New Architecture 未対応のライブラリがあると移行時にエラーになります。React Native New Architecture 移行ガイドを参考に、ライブラリの互換性を事前に確認しておくと安心です。

Rork Max の SwiftUI アプリとの違い

Rork Max で生成した SwiftUI ネイティブアプリは、iOS 26 の Liquid Glass を Expo とは別の方法で扱います。SwiftUI では .glassEffect() モディファイアを直接使えるため、コンポーネント単位での細かなカスタマイズが可能です。

Rork Max の SwiftUI アプリで iOS 26 対応を進めている方は、Rork Max iOS 26 Liquid Glass 実装ガイドもあわせて参考にしてください。

対応の優先順位

iOS 26 対応は一度に全部やる必要はありません。私がお勧めする順序はこちらです。

まず Expo SDK 54 へのアップグレードを行い、expo-doctor で警告がないことを確認します。次に Safe Area の動作確認です。実機で iOS 26 デバイスを使い、コンテンツがステータスバーやホームインジケーターと重なっていないかを確認します。その後、TestFlight でタブバーの Liquid Glass 表示を確認します。アイコンの色や見た目に問題がなければ、この時点でリリース可能です。

GlassView を使った追加の Liquid Glass 演出は、その後の余裕があるタイミングで段階的に取り入れていくのがいいと思います。SDK 55 への移行も、Legacy Architecture を使っているライブラリがないことを確認してから進めると安全です。

まずは SDK 54 にアップグレードして、TestFlight に出して実機確認。これが一番シンプルで確実なスタート地点です。

React Native や Expo のエコシステムは変化が速いですが、Rork が生成するアプリのシンプルな構成は、こういった移行のしやすさという点では大きな強みだと感じています。

シェア

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

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

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

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

関連記事

⬡ 開発ツール2026-09-10
画面を暗くする機能を足したら、アプリを閉じたあとも iPhone が暗いままでした
expo-brightness の setBrightnessAsync は、Android では現在のアクティビティにだけ効き、iOS では端末の明るさそのものを変えます。戻す責任が片側にしかない理由と、AppState で後始末をするフックの実装をまとめました。
⬡ 開発ツール2026-09-04
EAS の secret は「アプリに入れない」設定ではありません — 接頭辞と可視性を別々に決める
EXPO_PUBLIC_ の接頭辞は成果物に入るかを決め、EAS の可視性は誰が読めるかを決めます。二つを重ねたときに OTA 更新でだけ値が消える筋道と、出荷前に自分の手で確かめる手順をまとめました。
⬡ 開発ツール2026-09-01
expo-paste-input で画像を貼り付けられる入力欄を作り、消える file:// を documents へ逃がす
チャット入力に画像やGIFを貼り付けられるようにする expo-paste-input の実装手順です。onPaste が返す file:// は一時ファイルで、送信までの間に消えることがあります。保存先を移す実装と、実機で確かめる順番をまとめました。