[object Object]

← 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

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 →