すべての記事
expo-paste-input で画像を貼り付けられる入力欄を作り、消える file:// を documents へ逃がす
チャット入力に画像やGIFを貼り付けられるようにする expo-paste-input の実装手順です。onPaste が返す file:// は一時ファイルで、送信までの間に消えることがあります。保存先を移す実装と、実機で確かめる順番をまとめました。
画面ロックから3分後、expo-audio の環境音は静かに止まっていました
expo-audio の音が画面ロックで止まる原因を、ビルド設定・オーディオセッション・ロック画面連携の三層に分けて切り分けます。Android で約3分後に止まるのは、ドキュメントに書かれた止まり方です。
更新が止まってから足した Remote Config のキーは、配信済みの版には届きません
更新経路が閉じる前に、遠隔で動かせる範囲を数え直した記録です。コンソールに足したキーは、それを読む版が配られていなければ効きません。凍結前の最後のビルドに積むスイッチの選び方と、既定値の共有で起きた汚染の実測を残します。
メモリが膨らむ原因を自分のコードに探す前に、worklet の数を数えてください
Hermes V1 は worklet 1つにつき 512KB のデバッグ用メタデータを積みます。Reanimated を読み込むだけでメモリが増える仕組みと、自分のコードを疑う前に数えるべき3つの数字、そして4通りの直し方の選び分けをまとめました。
ダークモードの確認を DevTools に寄せて、実機で見るべき場所が4か所に減りました
Expo SDK 57 の React Native DevTools に入ったライト/ダークのエミュレーションで、端末設定の往復をやめました。差し替わるのは JS が報告する値だけで、実機でしか確認できない場所が残ります。その境界を1画面で切り分ける方法をまとめました。
Android 16 の予測型「戻る」を、8月31日までに直すか後回しにするか
targetSdk 36 では予測型「戻る」が既定で有効になり、onBackPressed が呼ばれなくなります。期限までに必要な作業と、切り離してよい作業を分ける判断と、opt-out を config plugin に置くまでを書きました。
一括置換は全ファイル成功しました。壊れたのは、消さなかった行のほうです
生成コードに一括置換をかけると、一致した行ではなく隣の行が壊れます。運用中のプロジェクトで実際に起きた破損と、置換の不変条件を検査する20行のガードスクリプトをまとめました。
生成ループが緑を返した後に、私が手元で回している4つの受け入れ検査
ビルドが成功しても出荷できない状態は実在します。AI がビルドを反復する構成で見落とされやすい4点を、成果物そのものを走査する検査スクリプトとして手元に置く方法をまとめました。
ベータ SDK でビルドしたアプリは、TestFlight には配れても審査には出せません
ベータ版の Xcode でビルドしたアプリは TestFlight には配布できますが、App Store の審査には提出できません。手元のビルドがどの SDK で作られたかを確認する方法と、eas.json で提出用ビルドを守る設定をまとめました。
Play Policy Insights を Expo プロジェクトに通すと、検出が0件になる条件が3つあります
Google Play が公式に配布し始めたポリシー審査スキルを、Expo 構成のプロジェクトで走らせた記録です。指すディレクトリひとつで検出が5カテゴリから0件に変わりました。走査が届く条件と、出力を鵜呑みにしてはいけない箇所を残します。
「Version code 1 has already been used」の番号は、app.json と EAS のどちらが持っているか
Play へのアップロードが versionCode で止まったとき、番号を闇雲に上げる前に確かめる場所と、app.json・EAS・build.gradle のどれが実際の値を持っているかを整理します。
Expo UI の drop-in 置き換えで、依存が本当に1本減る条件
Expo UI が SDK 56 で安定版になり、コミュニティ製パッケージ8件に drop-in の置き換えが用意されました。import を1行入れ替えても依存が減らない場合があります。減る条件を依存グラフから機械的に判定する手順をまとめました。