React Native 0.85 - 新しいアニメーションバックエンド、新しいJestプリセットパッケージ
2026年4月7日 · 6分で読める
Alan Lee Software Engineer @ Meta
Calix Tang Software Engineer @ Meta
Mathieu Acthernoene Software Engineer @ Expo
Gabriel Donadel Dall'Agnol Software Engineer @ Expo
Bartłomiej Błoniarz Software Engineer @ Software Mansion
Dawid Małecki Software Engineer @ Software Mansion
Zeya Peng Software Engineer @ Meta
Samuel Susla Software Engineer @ Meta
本日、React Native 0.85のリリースを発表できることを嬉しく思います!このリリースには新しいアニメーションバックエンドが含まれ、Jestプリセットが専用パッケージに移行され、その他多くの改善と修正が含まれています。
ハイライト
- 新しいアニメーションバックエンド
- 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は以前は不可能だったパフォーマンス改善を実現でき、更新の調整プロセスが適切にテストされ、将来のRNアップデートでも安定性を保つことができます。
Animatedでは、native driverでレイアウトプロパティをアニメーション化できるようになりました(以前ここで述べられていた制限はもはや適用されません)。
iOS | Android
より多くの例は react-native/packages/rn-tester/js/examples/AnimationBackend/ で確認できます。
オプトインするには、このページで説明されているReact Nativeの実験的チャンネルを有効にできます。
注意
この実験的機能は、近日中にリリースされるReact Native 0.85.1からのみ利用可能になります。
レイアウトプロパティをアニメーション化する方法
新しいアニメーションバックエンドにより、AnimatedでFlexboxとpositionプロパティをnative driverでアニメーション化できるようになります。
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の改善
React Native DevToolsは、このリリースでいくつかの改善を受けました:
- 複数のCDP接続: React Nativeは複数の同時Chrome DevTools Protocol接続をサポートし、React Native DevTools、VS Code、AIエージェントなどのクライアントが同時に接続できるようになりました。これにより、セッションが予期せず終了することなく、より豊富で組み合わせ可能なツールワークフローが可能になります。
- macOSでのネイティブタブ: デスクトップアプリをmacOS 26用にコンパイルするよう更新し、パワーユーザー向けにシステムレベルのタブ処理も有効にしました。複数のDevToolsウィンドウが開いているときは、Window > Merge All Windowsからアクセスできます。
- リクエストペイロードプレビュー: 回帰により無効化されていましたが、AndroidのNetwork Panelでのリクエストボディプレビューが復元されました。
Metro TLSサポート
Metro開発サーバーがTLS設定オブジェクトを受け入れられるようになり、開発中にHTTPS(およびFast RefreshのためのWSS)を有効にできます。これは、セキュアな接続を強制するAPIをテストする際に便利です。
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がブラウザ警告なしでローカルで信頼される証明書を生成する簡単な方法です。
破壊的変更
Jestプリセットが新しいパッケージに移行
React NativeのJestプリセットがreact-nativeから新しい@react-native/jest-presetに抽出され、コアパッケージサイズが削減され、プロジェクトのテスト設定により柔軟性が提供されます。
jest.config.jsを1行変更で更新してください:
- 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) — サポート対象(Active LTS)
- Node.js v21 — サポート対象外(EOL)
- Node.js v22 — サポート対象(Active LTS)
- Node.js v23 — サポート対象外(EOL)
- Node.js v24+ — サポート対象
StyleSheet.absoluteFillObjectの削除
非推奨のStyleSheet.absoluteFillObject APIが削除されました。代わりにStyleSheet.absoluteFillを使用するか、独自の絶対位置スタイルを定義してください。
- const styles = StyleSheet.absoluteFillObject;
+ const styles = StyleSheet.absoluteFill;
その他の破壊的変更
全般
- Pressableが非表示のActivityでイベントリスナーをアンマウントしなくなりました。
- 非推奨のC++型エイリアスを削除:
ShadowNode::Shared、ShadowNode::Weak、ShadowNode::Unshared、ShadowNode::ListOfWeak、ShadowNode::ListOfShared、SharedImageManager、ContextContainer::Shared — これらは使用されておらず、コンシューマーライブラリは型を直接使用する必要があります。
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プロパティ経由での開発サーバーIP指定を許可。
- iOSビルド: React.XCFrameworkでclang仮想ファイルシステムのサポートを追加。
謝辞
React Native 0.85には58人の貢献者による604以上のコミットが含まれています。皆様のご尽力に感謝いたします!
このリリースで重要な貢献を行ったコミュニティメンバーに特別な感謝を送りたいと思います。
- Zeya Peng、Bartłomiej Błoniarz、Dawid Małecki - Animated Backendの貢献
- Vitali Zaidman - Metro TLSの貢献
- Moti Zilberman - 複数のCDP接続の貢献
- Phil PluckthunとAlex Hunt - Jestプリセット移行の貢献
さらに、このリリース投稿で機能の文書化に取り組んだ追加の著者にも感謝いたします。
0.85へのアップグレード
注意
0.85は現在React Nativeの最新安定版であり、0.82.xはサポート対象外になります。詳細については、React Nativeのサポートポリシーを参照してください。
アップグレード
既存のプロジェクトについては、React Native Upgrade Helperを使用してReact Nativeバージョン間のコード変更を確認し、アップグレードドキュメントも参照してください。
新しいプロジェクトの作成
npx @react-native-community/cli@latest init MyProject --version latest
Expo
Expoを使用している場合、次のSDKであるSDK 56にReact Native 0.85が含まれる予定です。
タグ: announcement release