OpenAIReact Native2026/04/07 0:00

React Native 0.85 - New Animation Backend, New Jest Preset Package

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Native 0.85 リリース:新アニメーションバックエンドと Jest プリセット移動

Key Points

  • 新アニメーションバックエンド
  • Jestプリセット分離
  • Node.jsサポート更新

Summary

React Native 0.85 が公開されました。主な変更は新しい Shared Animation Backend(Animated/Reanimated の性能と一貫性向上)、Jest プリセットの別パッケージ化、Metro の TLS サポート、DevTools の改善、および複数の破壊的変更です。エンジニア向けにアップグレード影響と対処ポイントを簡潔にまとめます。

Key Points

  • 新アニメーションバックエンド
    • Shared Animation Backend を導入し、Animated でレイアウト(Flex/position)プロパティを useNativeDriver: true でアニメーション可能に。実験的機能は 0.85.1 から有効化可能。
  • Jest プリセットの移動
    • react-native から @react-native/jest-preset に分離。jest.config.jspreset@react-native/jest-preset に更新するだけで移行可能(例: preset: '@react-native/jest-preset')。
  • Node.js サポート変更(必須確認)
    • EOL バージョンを削除。最低要件は Node.js v20 >=20.19.4。アップグレード前に CI/ローカルの Node を確認してください。
  • 破壊的変更・API削除
    • StyleSheet.absoluteFillObject が削除。StyleSheet.absoluteFill を使用するか独自定義スタイルへ置換。
    • その他 Android/iOS の内部 API 変更や非推奨削除が含まれるため、ライブラリの互換性チェック必須。
  • Metro と DevTools の改善
    • Metro は開発サーバで TLS 設定を受け付ける(metro.config.jsserver.tls を設定)。DevTools は複数の CDP 接続、macOS ネイティブタブ、Network のリクエスト本文プレビュー復帰など。

Upgrade checklist (実務向け)

  • Node を v20 >=20.19.4 / v22 / v24+ に切替。
  • jest.config.jspreset@react-native/jest-preset に更新。
  • プロジェクト内で StyleSheet.absoluteFillObject を検索して置換。
  • サードパーティ製ライブラリの互換性(特に Animated/Reanimated、ネイティブモジュール)を確認。
  • Metro TLS を使う場合は metro.config.jsserver.tls を追加し、開発用証明書(例: mkcert)を用意。
  • 新アニメーションバックエンドを試すには実験チャネルを有効化(0.85.1 で利用可能)。

参考と次のステップ

  • 実装チェック:アニメーション挙動、ユニットテスト、CI の Node バージョン、ビルド設定(Android/iOS)。
  • ライブラリ作者は内部 API 変更の影響をレビューし、必要に応じて対応リリースを出すことを推奨します。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Native 0.85 — 新しいアニメーションバックエンドと新しい Jest プリセットパッケージ

本日、React Native 0.85 をリリースしました。このリリースには新しい Shared Animation Backend(アニメーションバックエンド)の導入、Jest プリセットの専用パッケージへの移動、その他多くの改善と修正が含まれます。

ハイライト

  • 新しい Animation Backend
  • React Native DevTools の改善
  • Metro の TLS サポート

主な変更点

  • Jest プリセットが新しいパッケージへ移動
  • EOL(サポート終了)となった Node.js バージョンのサポートを削除
  • StyleSheet.absoluteFillObject の削除

新しいアニメーションバックエンド

React Native 0.85 では、Software Mansion と協力して構築された新しい Shared Animation Backend を導入しました。これは Animated と Reanimated 両方の内部でアニメーションがどのように適用されるかを担う新しいエンジンです。

アニメーションの主要な更新ロジックを React Native コアに移行することで、Reanimated はこれまで不可能だったパフォーマンス向上を実現でき、更新の調停(reconciliation)プロセスが適切にテストされ、今後の RN アップデートでも安定して保たれることが期待できます。

Animated では、以前は制約があったネイティブドライバーによるレイアウトプロパティのアニメーションが可能になりました(旧制約はもはや適用されません)。

  • iOS、Android の両方で利用可能
  • 追加の例は react-native/packages/rn-tester/js/examples/AnimationBackend/ にあります

info: この実験的機能は React Native 0.85.1 から利用可能になります。0.85.1 は近日公開予定です。

レイアウトプロパティをアニメートする方法

新しいアニメーションバックエンドにより、Animated で Flexbox や位置プロパティを useNativeDriver でアニメートできます。

import { Animated, Button, View, useAnimatedValue, } from 'react-native';
function MyComponent() {
    const width = useAnimatedValue(100);
    const toggle = () => {
        Animated.timing(width, {
            toValue: 300,
            duration: 500,
            useNativeDriver: true,
        }).start();
    };
    return (
        <View style={{ flex: 1 }}>
            <Animated.View style={{ width, height: 100, backgroundColor: 'blue' }} />
            <Button title="Expand" onPress={toggle} />
        </View>
    );
}

実験的チャンネルの有効化方法はこのページで説明されています。

React Native DevTools の改善

  • 複数の CDP 接続: React Native は複数の同時 Chrome DevTools Protocol 接続をサポートするようになりました。これにより、React Native DevTools、VS Code、AI エージェントなどのクライアントが同時に接続でき、セッションが予期せず終了することなくリッチで組み合わせ可能なツールワークフローが可能になります。
  • macOS のネイティブタブ: デスクトップアプリを macOS 26 向けにコンパイルするよう更新し、システムレベルのタブ操作を有効にしました。複数の DevTools ウィンドウが開いているときは Window > Merge All Windows でアクセスできます。
  • リクエストペイロードのプレビュー: 回帰のために無効になっていた Network パネルのリクエストボディプレビューが Android で復元されました。

Metro TLS サポート

Metro 開発サーバーは TLS 設定オブジェクトを受け付けられるようになり、開発中に HTTPS(および Fast Refresh 用の WSS)を利用できるようになりました。セキュア接続を必須とする API のテストに便利です。metro.config.js に次のように設定します。

// metro.config.js
const fs = require('fs');
config.server.tls = {
    ca: fs.readFileSync('path/to/ca'),
    cert: fs.readFileSync('path/to/cert'),
    key: fs.readFileSync('path/to/key'),
};

ローカル開発向けには、mkcert を使うとブラウザ警告なしでローカルに信頼された証明書を生成できます。

破壊的変更(Breaking Changes)

Jest プリセットが新しいパッケージへ移動

React Native の Jest preset は react-native から @react-native/jest-preset に抽出され、コアパッケージのサイズが削減され、プロジェクト側でのテスト設定の柔軟性が向上しました。jest.config.js を次のように1行変更してください:

// jest.config.js
- preset: 'react-native',
+ preset: '@react-native/jest-preset',

EOL の Node.js バージョンのサポート削除

React Native 0.85 は EOL(サポート終了)となった Node.js バージョンや v20.19.4 より古いリリースをサポート対象外にしました。アップグレード前にサポート対象の Node.js を使用していることを確認してください。

  • Node.js v20 (>=20.19.4) — Supported (Active LTS)
  • Node.js v21 — Not supported (EOL)
  • Node.js v22 — Supported (Active LTS)
  • Node.js v23 — Not supported (EOL)
  • Node.js v24+ — Supported

StyleSheet.absoluteFillObject の削除

非推奨だった StyleSheet.absoluteFillObject API は削除されました。代わりに StyleSheet.absoluteFill を使用するか、自分で絶対位置指定のスタイルを定義してください。

- const styles = StyleSheet.absoluteFillObject;
+ const styles = StyleSheet.absoluteFill;

その他の破壊的変更

全般

  • Pressable が hidden Activity でイベントリスナーをアンマウントしなくなりました。
  • ShadowNode::Shared、ShadowNode::Weak、ShadowNode::Unshared、ShadowNode::ListOfWeak、ShadowNode::ListOfShared、SharedImageManager、ContextContainer::Shared の非推奨の C++ 型エイリアスを削除しました。これらは使用されておらず、利用ライブラリは型を直接使用するべきです。

Android

  • receiveTouches をデフォルトで no-op として RCTEventEmitter に再追加しました。まだこのメソッドを使っているライブラリとの互換性を低減するための修正です。
  • ReactTextUpdate は内部実装となり、直接公開アクセスすべきではありません。
  • レガシーアーキテクチャのクリーンアップとして複数のクラスが非推奨または削除されました:
    • ReactZIndexedViewGroup は非推奨になりました。
    • UIManagerHelper は非推奨になりました。
    • CatalystInstanceImpl は削除されました(以前に非推奨)。
    • NativeViewHierarchyManager は完全にスタブ化されました。

iOS

  • RCTHostRuntimeDelegate は非推奨となり RCTHostDelegate に統合されました。
  • React.XCFramework を使用した場合の重複シンボルエラーを修正しました(fmt を 12.1.0 に上げたことによる修正)。

その他の変更

  • Metro を ^0.84.0 に更新しました。
  • React は Hermes 250829098.0.10 を取り込むよう更新されました。
  • Yoga: Android 側で YogaNode を Kotlin に移行しました。
  • アクセシビリティ: AccessibilityInfo.setAccessibilityFocus は非推奨となり、代わりに AccessibilityInfo.sendAccessibilityEvent を使用してください。
  • TypeScript: 複数のユーティリティ型変換($Values, mixed, $ReadOnly, $ReadOnlyArray)に関する修正。
  • Android ビルド: reactNativeDevServerIp Gradle プロパティで dev server の IP を指定できるようになりました。
  • iOS ビルド: React.XCFramework に clang virtual file system のサポートを追加しました。

謝辞

React Native 0.85 は 58 名のコントリビュータによる 604 件以上のコミットを含みます。皆さんの貢献に感謝します。特に本リリースで重要な貢献をしてくれたコミュニティメンバーに感謝します:

  • Zeya Peng
  • Bartłomiej Błoniarz
  • Dawid Małecki(Animated Backend)
  • Vitali Zaidman(Metro TLS)
  • Moti Zilberman(Multiple CDP Connections)
  • Phil Pluckthun、Alex Hunt(Jest Preset migration)

また、本リリース記事の機能ドキュメント作成に協力した追加の作者の皆様にも感謝します。

0.85 へのアップグレード

info: 0.85 は現在の最新の安定版です。0.82.x は非サポートになります。詳細は React Native のサポートポリシー を参照してください。

アップグレードする際は、既存プロジェクト間でのコード差分を確認するために React Native Upgrade Helper と Upgrading ドキュメントを併用してください。

新しいプロジェクトを作成する場合:

npx @react-native-community/cli@latest init MyProject --version latest

Expo を使用している場合、次の SDK(SDK 56)が React Native 0.85 を含む予定です。