prebuild --clean で消える手入れを、上げる前に数える — Expo SDK 57 移行の棚卸し
Expo SDK 57 への移行前に、ios/ へ加えた手入れが prebuild の再生成でいくつ失われるかを数える手順をまとめました。素の差分649行のうち意味を持つのは3行。ノイズを正規化して実質的な変更だけを抽出するスクリプトと、config plugin への移し替えを実測つきで共有します。
最低サポート iOS をいつ上げるか — 利用率ではなく、コードに残った分岐の数で決める
最低サポート OS の引き上げを利用率で判断すると、毎年同じ結論になって先送りが続きます。OS 分岐に注記を付けて棚卸しし、引き上げ先ごとに消せる分岐を数えるスクリプトと、引き上げ後に見る指標をまとめました。
iOS プレリリース版の端末を計測から外して失敗した記録 — 除外ではなく分離するトラック設計
OS のプレリリース版を使う端末を計測から除外した結果、正式リリース当日に手掛かりを失いました。除外ではなく os_track で分離し、閾値とリリースゲートを分ける設計を実装コードとともにまとめます。
同じ通信が同時に何本も飛ぶのを1本に束ねる — 参照カウント付きシングルフライト層の設計
起動直後に同じ API へ何本ものリクエストが同時に飛ぶ多重フェッチを、進行中の Promise を共有して1本に束ねる設計です。失敗した Promise を配り続けてしまう罠、呼び出し側の中断が全体を巻き込む罠を避ける、参照カウント付きシングルフライト層の実装を、実際の通信ログとともに残します。
アプリの設定値を三層で解決する — 既定・ユーザー・リモートを境界付きにマージするレイヤー設計
既定値・ユーザー設定・リモート設定をひとつの型安全なレイヤーでマージする設計です。壊れたリモート値でもアプリが崩れないよう、キーごとに上書きの強さを変え、境界クランプと検証を通す実装を、実際の事故から起こしたコードで解説します。
プッシュ通知を1日3件に増やしたら、翌週の再訪が減っていたとき — 通知頻度を D7 リテンションとオプトアウト率で測り直す運用メモ
プッシュ通知を厚くすれば再訪は増えるはず、という思い込みが D7 リテンションを削っていました。通知頻度をコホート別の D7 とオプトアウト率で測り直し、1日3件から1件へ減らすまでの計測と判断の運用メモです。
アプリを手放す日の実務 — App Store の「Appを転送」で引き継がれるもの・作り直すもの
App Store Connect の「Appを転送」でアプリを売却・移管する際の条件と実務を整理します。評価やサブスク購読者など引き継がれるもの、TestFlight や APNs キーなど作り直すもの、ユーザーの再ログインが発生する箇所まで公式情報に基づいてまとめました。
役目を終えたアプリをどう畳むか — 更新停止から完全終了までを先に設計する
収益がサーバ費を下回ったアプリを、どの順番で畳むか。更新停止・販売取り下げ・完全終了の3段階の判断表、サーバ由来の終了告知フラグとデータ持ち出し口のTypeScript実装、自動更新購読の後始末までを個人開発の実感から整理しました。
Rork Max の2クリック提出が止まったとき、どの層で詰まったかを自分で見分ける
Rork Max の1クリック実機・2クリック提出は、iOS申請の複雑さを4つの層に畳んで隠しています。抽象が漏れて提出が止まったとき、どの層のエラーかを見分け、自分で直せるようになるための地図を示します。
別サーバーを立てずに済ませる — Expo Router の API Routes でバックエンドをアプリに同居させる
RevenueCat の Webhook を受けるためだけに、また Worker を1つ増やす。その繰り返しに疲れたとき、Expo Router の API Routes に出会いました。アプリと同じリポジトリにバックエンドを同居させる実装を、署名検証とデプロイ先の選び方まで含めて共有します。
すべての記事を見る (945) →