無料枠で始める EAS Observe と、それでも Crashlytics を残す理由
EAS Observe が8月20日に正式版になりました。監視ツールを1本に減らせるかと思って調べたところ、ネイティブクラッシュは対象外でした。無料枠の上限と、最初の設定で落とし穴になる箇所をまとめています。
expo-paste-input で画像を貼り付けられる入力欄を作り、消える file:// を documents へ逃がす
チャット入力に画像やGIFを貼り付けられるようにする expo-paste-input の実装手順です。onPaste が返す file:// は一時ファイルで、送信までの間に消えることがあります。保存先を移す実装と、実機で確かめる順番をまとめました。
画面ロックから3分後、expo-audio の環境音は静かに止まっていました
expo-audio の音が画面ロックで止まる原因を、ビルド設定・オーディオセッション・ロック画面連携の三層に分けて切り分けます。Android で約3分後に止まるのは、ドキュメントに書かれた止まり方です。
Google Play の期限後、更新を止めた Android アプリを上げるか据え置くかの線引き
更新を止めた Android アプリには、提出の基準とは別の基準が効いています。手元の成果物から実効 targetSdk を並べ、上げる・据え置く・畳むを判断するまでの手順をまとめました。
targetSdk を 36 にした後、依存ライブラリのどこを見るか
依存ライブラリの AndroidManifest を実際に6本開いて数えました。targetSdkVersion は1本も書かれておらず、代わりに12個の権限が入ってきます。提出前に何を見るべきかの整理です。
30日で9回出た Expo のパッチのうち、自分のアプリに入っているのはどれかを確かめる
package.json にチルダ付きで書いてあれば最新のパッチが入る、と思い込んでいました。実際に入る版を決めているのは package-lock.json のほうです。npm の解決結果を実行して確かめた記録です。
更新が止まってから足した Remote Config のキーは、配信済みの版には届きません
更新経路が閉じる前に、遠隔で動かせる範囲を数え直した記録です。コンソールに足したキーは、それを読む版が配られていなければ効きません。凍結前の最後のビルドに積むスイッチの選び方と、既定値の共有で起きた汚染の実測を残します。
Sunset.png と sunset.png は、手元の Mac では同じファイル、ビルドサーバーでは別のファイルです
手元では表示される画像が、クラウドのビルドだけで見つからない。原因はファイル名の大文字小文字でした。再現手順と、コミット前に検出する短いスクリプトを実測つきで残します。
タブレットで縦固定が外れる Android 16 の変更と、Expo 側に用意されていない逃げ道
targetSdkVersion 36 では、sw600dp 以上の画面で screenOrientation が無視されます。app.json の orientation では戻せないこと、オプトアウトのプロパティが何を戻して何を戻さないかを、手元で確かめた出力とあわせて整理しました。
iOS 27 が正式版になる前に、予備の iPhone で公開中の Rork アプリを触っておく
iOS 27 の正式版は9月に来ます。開発者ベータが7回目まで進んだ今のうちに、予備の iPhone へベータを入れて公開中のアプリを触る手順と、見る順番、JS 側で先に潰せる箇所をまとめました。
Rork と Claude Code の分担は、ビルド環境を誰が持つかで切っています
Rork とターミナル側のコーディングエージェントのどちらで作るかを、生成物の印象ではなく自分のリポジトリの実データで決めるための手順です。保守の着地層を数えるスクリプトと、再生成でネイティブ設定が消える事故を先に見つける検査を掲載しています。
ダークモードの確認を DevTools に寄せて、実機で見るべき場所が4か所に減りました
Expo SDK 57 の React Native DevTools に入ったライト/ダークのエミュレーションで、端末設定の往復をやめました。差し替わるのは JS が報告する値だけで、実機でしか確認できない場所が残ります。その境界を1画面で切り分ける方法をまとめました。