🔖

【RN Update 2023年6月】React Native 0.72リリース 他

2023/06/30に公開

はじめに

こんにちは!
犬専用の音楽アプリ オトとりっぷでエンジニアしています、足立です!

https://www.oto-trip.com/

この記事では、今月のReact Nativeに関連するニュースを紹介します。

目次

  • ライブラリ情報
    • 【React Native】 v0.72がリリース
    • @aws-amplify/pushnotificationが非推奨
  • React Native関連情報
    • Xamarinの開発終了

ライブラリ情報

【React Native】 v0.72がリリース

https://reactnative.dev/blog/2023/06/21/0.72-metro-package-exports-symlinks

メインのアップデートはMetroの設定周りで、「monorepoがやり易くなる」らしいです。
このアップデートの影響として、metro.config.jsの書き方が少し変更になります。
React Native v0.73以降に完全移行するようなので、早めの対応が必要です。

metro.config.js
const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
/**
 * Metro configuration
 * https://facebook.github.io/metro/docs/configuration
 *
 * @type {import('metro-config').MetroConfig}
 */
const config = {};
module.exports = mergeConfig(getDefaultConfig(__dirname), config);

react-native-svg-transformerを使われている方は、こちらのIssueにある通り以下の修正になります。

metro.config.js
metro.config.js
const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
const defaultSourceExts = require('metro-config/src/defaults/defaults').sourceExts;
const defaultAssetExts = require('metro-config/src/defaults/defaults').assetExts;
/**
 * Metro configuration
 * https://facebook.github.io/metro/docs/configuration
 *
 * @type {import('metro-config').MetroConfig}
 */

module.exports = mergeConfig(getDefaultConfig(__dirname), {
    transformer: {
        babelTransformerPath: require.resolve('react-native-svg-transformer'),
        getTransformOptions: async () => ({
            transform: {
                experimentalImportSupport: false,
                inlineRequires: true,
            },
        }),
    },
    resolver: {
        assetExts: defaultAssetExts.filter(ext => ext !== 'svg'),
        sourceExts: [...defaultSourceExts, 'svg'],
    },
});

一方でReact Native v0.69やv0.70も密かにバージョンアップがなされています。

https://github.com/facebook/react-native/releases/tag/v0.69.11

https://github.com/facebook/react-native/releases/tag/v0.70.10

主な対応にcompatible with Xcode 15とある通り、次世代Xcodeに対応してくれているようで、
とりあえず次世代XcodeにはRN 69以上であれば対応できそうです。

@aws-amplify/pushnotificationが非推奨

AWS Amplify + React Nativeの組み合わせで、Push通知を実装されている方はライブラリの変更が必要になります。
今まで上記の組み合わせでPush通知を実装する場合、iOSとAndroidで別々のライブラリを使用しなければならない問題がありました。今回の変更でライブラリの統一がなされます。
具体的には、@aws-amplify/pushnotification@react-native-community/push-notification-iosが不要になり、@aws-amplify/rtn-push-notificationを導入する必要があります。

詳細は以下のMigrationページをご覧ください。

https://docs.amplify.aws/lib/push-notifications/migrate-from-previous-version/q/platform/react-native/#update-your-configuration

これによってライブラリの統一がなされると同時に、Push通知を受け取った時のもしアプリがフォアグラウンドにいたら?みたいな制御が容易になるようです。
また機会があれば、詳細な調査を実施したいと思います。

React Native関連情報

Xamarinの開発終了

先日、Xamarinのサポート終了が発表されました。

https://dotnet.microsoft.com/ja-jp/platform/support/policy/xamarin

今秋リリース予定のiOS17のサポートは行わない方針のようです。
では、Microsoftはどこに行くのでしょうか?
その答えがReact Native公式サイト内にある、Who is using React Native?に記載されています。

https://reactnative.dev/showcase

実はMicrosoft OfficeやMicrosoft Outlook、SkypeなどはReact Nativeで作られているんですね。
Microsoft公式の開発ブログにもReact Nativeの欄があり、最近の動向が記載されています。

OSSを基盤とした場合、このようなサポート終了に対してどうしても敏感になります。
これからもReact Nativeの主要なプレイヤーへのウォッチングを続けていきたいと思います。

最後に

ここまで読んでいただきありがとうございました。

もし犬専用の音楽アプリに興味を持っていただけたら、ぜひダウンロードしてみてください!

https://www.oto-trip.com/

Discussion