← back to Homesonspec
homesonspec/mobile: make Alerts tab honest (no fake delivery claims) + fix 4.2 defense to not cite unbuilt push (Cycle 1 Cody gate)
d67c56fae5a3d074bcd674a4732ac1c6306fd6bf · 2026-08-06 12:55:32 -0700 · Steve
Files touched
M apps/mobile/APP-STORE-LISTING.mdM apps/mobile/app/(tabs)/alerts.tsx
Diff
commit d67c56fae5a3d074bcd674a4732ac1c6306fd6bf
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Aug 6 12:55:32 2026 -0700
homesonspec/mobile: make Alerts tab honest (no fake delivery claims) + fix 4.2 defense to not cite unbuilt push (Cycle 1 Cody gate)
---
apps/mobile/APP-STORE-LISTING.md | 14 ++++++++------
apps/mobile/app/(tabs)/alerts.tsx | 13 +++++++------
2 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/apps/mobile/APP-STORE-LISTING.md b/apps/mobile/APP-STORE-LISTING.md
index 77572bbc..75bd246c 100644
--- a/apps/mobile/APP-STORE-LISTING.md
+++ b/apps/mobile/APP-STORE-LISTING.md
@@ -7,7 +7,7 @@ Homes on Spec
New Construction Home Search
## Promotional Text (170 chars max)
-Discover every new-construction home from every major builder — with native map, saved-homes list, and new-listing alerts your browser can't match.
+Discover every new-construction home from every major builder — with a native map of 70,000+ homes and a saved-homes list your browser can't match.
## Description (4000 chars max)
@@ -60,7 +60,7 @@ Secondary: Lifestyle
## Guideline 4.2 Defense — Native Value Documentation
-Apple Guideline 4.2 states apps should not be "thin wrappers" around websites. This app passes because the following features are **native-only** and have no equivalent on the homesonspec.com website:
+Apple Guideline 4.2 states apps should not be "thin wrappers" around websites. This app passes on the strength of **two fully-built, native-only features** — the native Map and Saved Homes — that have no equivalent on the homesonspec.com website. (Push notifications are opt-in scaffolding on a roadmap and are NOT relied on for the 4.2 argument — do not cite them to a reviewer as shipped delivery.)
### 1. Saved Homes (AsyncStorage, native FlatList)
- Anonymous persistent favorites list backed by `@react-native-async-storage/async-storage`
@@ -81,13 +81,15 @@ Apple Guideline 4.2 states apps should not be "thin wrappers" around websites. T
- User location dot (NSLocationWhenInUseUsageDescription set)
- **The website's /map page is a Next.js SSR page served inside a browser; this is a native experience**
-### 3. Push Notifications (expo-notifications)
+### 3. Push Notifications (expo-notifications) — ROADMAP, opt-in scaffolding only
- Permission request flow with native iOS alert
-- Expo push token registration
- Local preference persistence (AsyncStorage)
- Settings deep-link when permission denied
-- Future: server-side wiring to notify on new listings matching saved searches
-- **The website has zero notification capability for anonymous visitors**
+- NOT YET DELIVERING: server-side push backend is not built; the Alerts tab is an
+ opt-in surface that honestly labels new-listing/price-drop/move-in alerts as "Coming soon"
+- This feature is NOT part of the 4.2 defense (Map + Saved carry it). It is listed here only
+ for completeness. Do not describe push as a shipped capability until the backend delivers
+ at least one end-to-end notification in TestFlight.
### 4. Browse — Native Error Handling + Save Bridge
- Native ActivityIndicator loading state (vs. browser spinner)
diff --git a/apps/mobile/app/(tabs)/alerts.tsx b/apps/mobile/app/(tabs)/alerts.tsx
index 31668047..3c1a451c 100644
--- a/apps/mobile/app/(tabs)/alerts.tsx
+++ b/apps/mobile/app/(tabs)/alerts.tsx
@@ -105,8 +105,8 @@ export default function AlertsTab() {
<Text style={styles.heroIcon}>🔔</Text>
<Text style={styles.heroTitle}>New Listing Alerts</Text>
<Text style={styles.heroSubtitle}>
- Be the first to know when new homes hit your market. We notify you
- the moment a builder publishes a home that matches your preferences.
+ Turn on notifications now so you are ready the moment new-listing
+ alerts go live. We are rolling delivery out builder by builder.
</Text>
</View>
@@ -117,7 +117,7 @@ export default function AlertsTab() {
<Text style={styles.toggleTitle}>Enable Alerts</Text>
<Text style={styles.toggleDesc}>
{alertsEnabled
- ? 'You will receive new-listing notifications'
+ ? 'Notifications are enabled on this device'
: 'Tap to turn on push notifications'}
</Text>
</View>
@@ -138,7 +138,8 @@ export default function AlertsTab() {
{permStatus === 'granted' && alertsEnabled && (
<View style={[styles.statusBanner, styles.statusGranted]}>
<Text style={styles.statusText}>
- Notifications are active. You are registered for new-listing alerts.
+ Notifications are enabled on this device. You are set up to receive
+ new-listing alerts as we roll delivery out.
</Text>
</View>
)}
@@ -159,9 +160,9 @@ export default function AlertsTab() {
{/* What you will get */}
<View style={styles.section}>
- <Text style={styles.sectionTitle}>What you will receive</Text>
+ <Text style={styles.sectionTitle}>Coming soon</Text>
{[
- ['New listings', 'Instant alert when a builder publishes a matching home'],
+ ['New listings', 'Alert when a builder publishes a matching home'],
['Price drops', 'When a saved home drops in price'],
['Move-in ready', 'When a home you are watching becomes move-in ready'],
].map(([title, desc]) => (
← f6ad8bc6 scaffold apps/mobile Expo SDK 57 iOS app for App Store onboa
·
back to Homesonspec
·
homesonspec: Cycle 2 — map viewport-cull+grid-cluster (no 70 572ac8f7 →