# ADR-002: Capacitor coexistence & Play application id - **Status:** Accepted (initial) - **Date:** 2026-08-05 - **Context:** Epic chat_web_app#111 — package-name continuity matters for IAP + reviews. ## Decision 1. Native app **`applicationId` = `ai.hesychia.chat`** (same as Capacitor / `llm-fe/android`). 2. Until native internal testing replaces Capacitor on Play: - Capacitor remains interim Play track. - Do **not** upload both Capacitor and native AABs under the same listing as competing “current” production binaries without a freeze plan. 3. When native auth → chat → IAP path is green on internal testing: - **Freeze** Capacitor Play uploads. - Promote native AAB on the same listing (versionCode continues upward from Capacitor’s last upload). 4. `beta` flavor uses `applicationIdSuffix = ".beta"` → `ai.hesychia.chat.beta` for side-by-side installs during development only (not the production listing). ## Rationale Same application id preserves Play listing, reviews, and RevenueCat / Play Billing product bindings already tied to `ai.hesychia.chat`. ## Rejected - New id (`ai.hesychia.chat.native`) then migrate users — splits listings, breaks IAP continuity, worse for reviews. ## Open ops - Confirm last Capacitor `versionCode` before first native Play upload. - RevenueCat dashboard already includes package id `ai.hesychia.chat` (Capacitor path). - Capacitor shell in `llm-fe/android` stays for web mobile wrap until product sunsets it; document deprecation in `chat_web_app` when freeze date set.