Skip to content

feat(mobile): replace Support tile with Feedback flow#4487

Merged
iscekic merged 2 commits into
mainfrom
mobile-feedback-flow
Jul 10, 2026
Merged

feat(mobile): replace Support tile with Feedback flow#4487
iscekic merged 2 commits into
mainfrom
mobile-feedback-flow

Conversation

@iscekic

@iscekic iscekic commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

What

Renames the profile Support tile to Feedback (icon: MessageSquare) and adds a two-step alert flow:

  1. "How are you liking the Kilo app?" → I like it / Needs work / Cancel
  2. I like it → "We're glad to hear that!" with a Rate Kilo CTA
    • First time: native in-app review popup (expo-store-review), with the timestamp recorded in SecureStore
    • Subsequent times (or if the popup is unavailable/fails): deep link to the App Store write-review page / Play Store listing
  3. Needs work → "We're sorry to hear that!" with an Email us CTA that opens the existing support mailto (device details prefilled)

Why

The native review popup silently no-ops once the OS rate limit is hit (iOS: 3/year), so after the first use we send users to the store page instead, which always works.

Notes

  • New dep: expo-store-review (via npx expo install; expo-doctor passes 19/19)
  • Alert chain lives in src/lib/feedback.ts to keep profile-screen.tsx under the line limit
  • pnpm format && pnpm typecheck && pnpm lint && pnpm check:unused all pass
  • Not yet e2e-verified on device — that's the next step

E2E verification (iOS simulator, local backend)

  • Profile tile shows Feedback with the MessageSquare icon; tapping it opens the "How are you liking the Kilo app?" alert with I like it / Needs work / Cancel.
  • Needs work → "We're sorry to hear that!" alert → Email us fires the mailto; on the simulator (no Mail app) the fallback toast with hi@kilo.ai appeared as designed.
  • I like it → "We're glad to hear that!" alert → Rate Kilo showed the native SKStoreReviewController popup ("Enjoying Kilo? Tap a star to rate it on the App Store") on first use.
  • Second pass through the flow correctly skipped the native popup (SecureStore flag) and opened the store deep link; Safari erroring on it is a simulator artifact (no App Store app) — the URL itself resolves to the Kilo listing (HTTP 200).

Tapping Feedback asks how the user likes the app. Happy path prompts
for a store review (native in-app popup first time, store deep link
after); unhappy path routes to the existing support email composer.
@iscekic iscekic self-assigned this Jul 10, 2026
Comment thread apps/mobile/src/lib/feedback.ts Outdated
@kilo-code-bot

kilo-code-bot Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The previously flagged issue is resolved: the entire native-popup path in rateApp() (SecureStore reads/writes, availability check, requestReview()) is now wrapped in a single try/catch that falls through to the store deep link on any failure. No new issues found in the incremental diff.

Files Reviewed (1 file)
  • apps/mobile/src/lib/feedback.ts - 0 issues (previous WARNING resolved)
Previous Review Summary (commit 1b4f12f)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 1b4f12f)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The new store-review flow in feedback.ts lacks try/catch around SecureStore calls, risking a silent unhandled rejection with no user feedback.

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
apps/mobile/src/lib/feedback.ts 34 SecureStore.getItemAsync/setItemAsync calls in rateApp() aren't wrapped in try/catch, unlike every other fallible call in the function; a throw here becomes an unhandled rejection with no fallback or toast.
Files Reviewed (5 files)
  • apps/mobile/package.json - 0 issues
  • apps/mobile/src/components/profile-screen.tsx - 0 issues
  • apps/mobile/src/lib/feedback.ts - 1 issue
  • apps/mobile/src/lib/storage-keys.ts - 0 issues
  • pnpm-lock.yaml - skipped (generated file)

Fix these issues in Kilo Cloud


Reviewed by claude-sonnet-5 · Input: 20 · Output: 4.2K · Cached: 378K

@iscekic iscekic merged commit 6e42ef8 into main Jul 10, 2026
65 checks passed
@iscekic iscekic deleted the mobile-feedback-flow branch July 10, 2026 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants