事象
アプリのバージョンを Constants.nativeAppVersion で取得したいのですが、expo-constants パッケージを更新したタイミングで undefined と返ってくるようになってしまいました。
import Constants from "expo-constants";
const AppVersion = {
getVersion() {
return Constants.nativeAppVersion;
},
} as const;
原因
今回 v15.4.6 から v17.0.8 にアップデートしたのですが、v16.0.0 で変更があったようです。
Remove deprecated installationId, isDevice, nativeAppVersion, nativeBuildVersion, platform.platform, platform.systemVersion, platform.userInterfaceIdiom properties. (#26329 by @aleqsio)
対処法
expo-constants パッケージではなく expo-application を使いました。
コードを以下のように書き換えたところ、今まで通りアプリのバージョンを取得できるようになりました🚀
import * as Application from "expo-application"; // 変更
const AppVersion = {
getVersion() {
return Application.nativeApplicationVersion; // 変更
},
} as const;
最後に
AIのプロンプトを設定しておくと、パッケージ更新のタイミングで CHANGELOG.md を見に行ってもらえるので便利です👍️
例えばCursorの場合はこんな感じに書きます ↓
---
globs: "**/{package.json,yarn.lock}"
alwaysApply: true
---
# パッケージを更新する場合にすること
- 更新しようとしているパッケージのリポジトリにある `CHANGELOG.md` を確認し、より新しいバージョンで致命的なバグが修正されていないかどうか確認してください
- もし致命的なバグがより新しいバージョンで修正されている場合は、そのバージョンを使用してください
実際にパッケージ更新を依頼してみたところ、CHANGELOG.md を自動で探しに行っているようでした🙌
