eas.json's production build profile hardcodes its own env block — local apps/mobile/.env is never read by EAS cloud builds. The RevenueCat public key was missing from that list, so every production/TestFlight build compiled EXPO_PUBLIC_REVENUECAT_API_KEY as undefined, making configurePurchases() silently no-op and every later Purchases call throw "no singleton instance".