← Back

週間React Native #8

2025-10-27 / #8

Solito 5の登場

Expo Router (React Navigation)とNext.jsのrouter(画面遷移処理)を共通化するSolitoのバージョン5が公開されました。 react-native-webの依存がなくなり、これまでnext/linkをラップされたLinkコンポーネントが提供されていましたが、純粋なnext/linkが提供されるようになりました。 これにより、これまでWebでのLinkコンポーネントのPropsは制限されたものになっていましたが、next/linkでサポートしているPropsのすべてが利用できるようになりました。

こちらのアプローチはライブラリのAPIとしてWebファーストでの(index.tsxをWebとし、ネイティブ向けにはindex.native.tsxとしている)実装が行われた結果になっています。 ネイティブとWebの両方に対応するライブラリ/アプリケーションを開発する方は、こちらの考えを読んでおくと良さそうです。

https://solito.dev/v5

@⁠callstack/liquid-glassの0.5.0が公開

React NativeでLiquid Glassの効果を利用することができる@⁠callstack/liquid-glassの0.5.0が公開されました。 iOS 26 API の新しいボーダーラディウスを利用して、Zeegoというコンテキストメニューのライブラリと互換性のある表示ができます。

react-native-live-activityが開発中?

おなじみcallstackの開発者の方が、React NativeでLive Activityを扱える新たなライブラリを開発しているようです。 これまでReact NativeでLive Activityのようなアプリ外のUIを実装する際、SwiftUIで実装する必要がありました。 こちらのライブラリではSwiftUIを使わず、React NativeでLive ActivityのUIを構築することができ、さらにファストリフレッシュも可能とのことです。 こちらが公開されれば、React NativeでLive Activityを実装するのもかなり簡単になりそうですね!

React NativeのModalにdetentsが設定できるように?

React NativeのModalコンポーネントで、detentsを設定して、シートモーダルを任意の高さを指定できるようにするPull Requestが行われました。 以前も同様のPRが行われていましたが、パフォーマンスの問題により閉じられたようです。 最近のReact NativeのAPIの改善により、それが改善されて再度開かれたようです。

React Native Gesture Handler 2.29.0

React Nativeでジェスチャー処理などを行うReact Native Gesture Handlerの2.29.0が公開されました。 今回は主に不具合修正となっています。

expo-drawpad 0.3.0が公開

お絵かきツールのようなUIを提供するexpo-drawpad 0.3.0が公開されました。 グラデーション、ブラシ、SVGエクスポート、滑らかな曲線の対応などが行われいます。

react-native-get-random-values v2.0.0

crypto.getRandomValuesをReact Nativeでも行えるreact-native-get-random-valuesのv2.0.0が公開されました。 New Architectureのみがサポートするようになりました。 また、visionOSについてのサポートも追加されました。

Expo Moduleを作る際のCLAUDE.md例

Expo開発者のEvan Bacon氏が、Expo Modulesを開発する際のiOSについてのCLAUDE.mdの例を公開しています。 これを使うことで、react-native-view-shotを置き換えるためのモジュールを2分以下で作成することができたとのことです。

Expo UIの使い所

自分の話で恐縮ですが、Expo UIについての紹介と、どういったところで使ったらよいかの記事を会社のテックブログに投稿しました。 Expo UIに興味のある方は読んでみてください!

https://zenn.dev/tellernovel_inc/articles/71e7cc922f6869

今週のひとこと

個人的にはSolito5の話が勉強になりました。 普段React NativeとWebをモノレポで扱い、コンポーネントなどを共通化していますが、Webファーストのindex.tsをつくることで、バンドラーがWeb用に特別に設定しなくても済むというのは確かに…と思いました。