From 6f6f76a22fee2eb73a6a776d7c1ba57f53e6d4ca Mon Sep 17 00:00:00 2001 From: null Date: Thu, 25 Jun 2026 12:10:45 -0500 Subject: [PATCH] fix(paywall): show friendly plan-load error, not raw SDK message (A-OBS) The paywall ErrorState rendered uiState.error verbatim, surfacing developer-facing billing/RC SDK text ('There was a credentials issue. Check the underlying error for more details.') to users. Now always shows friendly copy. Verified live: free user -> paywall -> 'We couldn't load subscription options right now. Check your connection and tap to try again.' (no raw error). Co-Authored-By: Claude Opus 4.8 --- app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt b/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt index 37abdf40..177a9bea 100644 --- a/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt +++ b/app/src/main/java/app/closer/ui/paywall/PaywallScreen.kt @@ -119,7 +119,10 @@ fun PaywallScreen( ) uiState.error != null -> ErrorState( title = "Couldn't load plans", - message = uiState.error ?: "Check your connection and tap to try again.", + // Always show friendly copy — the raw billing/RevenueCat SDK message (e.g. + // "There was a credentials issue. Check the underlying error…") is developer + // detail and must never surface to users. A-OBS. + message = "We couldn't load subscription options right now. Check your connection and tap to try again.", retryLabel = "Try again", onRetry = { viewModel.retry() }, modifier = Modifier.fillMaxWidth()