← back to Beverlyhillsvideos App

store/LISTING.md

265 lines

# Beverly Hills Videos — App Store Connect Listing & Submission-Readiness Package

**App:** Beverly Hills Videos
**Bundle ID:** `com.abrams.beverlyhillsvideos`
**Developer / Seller:** Steve Abrams (Abrams)
**Platform:** iOS (iPhone + iPad — `supportsTablet: true`)
**Version:** 1.0.0 (build 1)
**Price:** Free (ad-supported — Google AdSense inside web content)
**Prepared:** 2026-08-06

> Character limits verified against current (2026) App Store Connect requirements:
> App Name ≤30, Subtitle ≤30, Promotional Text ≤170, Keywords ≤100, Description ≤4,000.
> All fields below were counted with `wc -c` and are within limit. Sources listed at the end.

---

## 1. App Name (≤30 characters)

**PRIMARY (use this):**
> `Beverly Hills Videos` — **20 chars**

**Alternatives:**
1. `Beverly Hills Videos: Guide` — **27 chars**
2. `Beverly Hills Video Guide` — **25 chars**

Rationale: the primary matches the installed Expo `name` and the domain, keeping brand + store + push notification identity consistent. The alternatives buy extra keyword weight ("Guide") if ASO testing shows the bare name isn't ranking for "guide."

---

## 2. Subtitle (≤30 characters)

**PRIMARY (use this):**
> `Films, Dining Map & City Guide` — **30 chars** (exactly at limit)

**Alternatives:**
1. `Restaurants, Films & City Map` — **29 chars**
2. `Your Insider Guide to 90210` — **27 chars**

Rationale: the subtitle is an indexed field, so it does double duty as ad copy AND keyword real estate. The primary front-loads the three pillars (films, map, guide) that differentiate the app from a plain restaurant list, and captures "dining," "map," and "guide" search terms not already spent in the name.

---

## 3. Promotional Text (≤170 characters)

> `Discover Beverly Hills like an insider: original short films on 44 top restaurants, a tap-to-call dining map, menus, and luxury shopping & city guides. Free.`
> — **157 chars**

Rationale: Promotional text is editable WITHOUT resubmitting a build, so it's the seasonal/announcement lever — swap it for "New films added this month" or event tie-ins without a review cycle. It is NOT indexed for search, so it's pure conversion copy.

---

## 4. Keywords (≤100 characters, comma-separated, no spaces after commas)

> `beverly hills,90210,restaurants,dining,food,menus,LA,travel,guide,map,luxury,shopping,eats,cafe`
> — **95 chars**

Notes on optimization:
- No spaces after commas — Apple treats each comma-token as a term and does NOT count trailing spaces as useful; removing them frees characters for more terms.
- Does not repeat the full app name "Beverly Hills Videos." (The term `beverly hills` is the single highest-value search phrase for this app and is a distinct phrase, not the verbatim app name; Apple indexes the name + keyword fields together, so if you want to be maximally conservative you can drop `beverly hills,` from keywords and reclaim 14 chars for e.g. `dinner,reservations` — the name already carries "Beverly Hills.")
- Singular/plural: Apple auto-handles simple plurals, so we use `restaurant`→`restaurants` once and rely on Apple's stemming rather than wasting chars on both.
- `90210` captures the iconic ZIP as a branded search term.
- Conservative-swap alternative (drops the app-name overlap entirely):
  `90210,restaurants,dining,food,menus,cuisine,LA,travel,guide,map,luxury,shopping,eats,nearby` — **91 chars**

---

## 5. Description (≤4,000 characters)

> Character count of the block below: **~2,180 chars** (well within 4,000; room to extend with a films roster if desired).

```
Beverly Hills Videos is the insider's guide to the most glamorous square mile in the world — beautifully filmed, effortless to use, and made for the way you actually explore a city.

Watch, then go. Instead of scrolling through look-alike listings, you'll watch original short films on 44 of Beverly Hills' top restaurants — the room, the plates, the mood — so you know exactly where you want to be tonight before you ever leave home.

WHAT'S INSIDE

• 44 original restaurant films — short, cinematic looks at the city's best dining, from power-lunch icons to hidden late-night gems.

• A native, tappable map — every restaurant pinned on a fast, real map. Tap a pin to call the restaurant or open its menu in a single touch. No pinch-and-zoom guesswork.

• Luxury shopping & city guides — Rodeo Drive and beyond, plus curated guides to what makes Beverly Hills, Beverly Hills.

• Favorites — save the places you love with a tap and find them again instantly, even offline.

• Works offline — your saved spots and core guides stay with you when the signal drops.

• Share in a tap — send a restaurant, film, or guide straight to a friend.

WHY YOU'LL LOVE IT

It's the difference between reading about a place and seeing it. Beverly Hills Videos turns "where should we eat?" into a two-minute film and a one-tap call. Whether you live in the 90210, you're flying in for the weekend, or you're planning the perfect night out, this is the guide that shows you first and gets you there fastest.

Elegant. Fast. Free. The way Beverly Hills should feel.

Beverly Hills Videos is a free, ad-supported app. Films, map, favorites, and guides are all included at no cost.

Download Beverly Hills Videos and see the city before you go.
```

---

## 6. Category — Primary + Secondary

**Recommendation:**
- **Primary: Travel**
- **Secondary: Food & Drink**

**The argument (Travel vs. Food & Drink):**

The app is a *destination guide* first and a restaurant tool second. Its scope is broader than food — it bundles luxury-shopping guides, city guides, and a map-driven "explore this place" experience. That framing sits squarely in **Travel**, where the competitive set is city/destination guides (the app wins on production value — actual films — vs. text listings). Travel also has a lighter, less brutally saturated top-charts race than Food & Drink, which is dominated by delivery giants (DoorDash, Uber Eats, Yelp) an indie guide cannot outrank.

**Food & Drink as secondary** still captures the high-intent "restaurants / dining" searchers, since 44 restaurant films are the app's beating heart. This gives you presence in both category browse surfaces.

Counter-argument acknowledged: if post-launch analytics show the overwhelming majority of engagement is the restaurant films + call/menu actions (i.e., users treat it as a dining app, not a trip-planning app), **flip them** — Primary: Food & Drink, Secondary: Travel. Category is changeable without a new binary, so treat this as an A/B lever, not a permanent decision. Start Travel because the app's *promise* (the whole city) is broader than its busiest feature.

---

## 7. Age Rating

**Recommended rating: 4+.**

There is no objectionable content: no violence, no mature/suggestive themes, no profanity, no gambling, no user-generated content, no unrestricted web access to arbitrary sites (the WebView wraps the app's own curated content). Answer the App Store Connect age-rating questionnaire as follows:

| Questionnaire item | Answer |
|---|---|
| Cartoon or Fantasy Violence | None |
| Realistic Violence | None |
| Sexual Content or Nudity | None |
| Profanity or Crude Humor | None |
| Alcohol, Tobacco, or Drug Use or References | **None** (restaurant films may show a bar/wine on-screen incidentally; this is ambient, not a *reference or depiction* the questionnaire targets — if any film prominently features cocktails/bar culture, answer **Infrequent/Mild** to be safe, which still yields 4+/12+ depending on Apple's current matrix. Review footage before answering.) |
| Horror/Fear Themes | None |
| Mature/Suggestive Themes | None |
| Medical/Treatment Info | None |
| Gambling (simulated or real) | None |
| Contests | None |
| Unrestricted Web Access | **No** — the WebView loads only the app's own beverlyhillsvideos.com content, not the open web. |
| User-Generated Content | None |

**Caveat to confirm before submitting:** the "Unrestricted Web Access" toggle. Because the app embeds a WebView, a reviewer will check whether users can navigate to arbitrary external sites. If external links inside the web content can escape to the open web, either (a) answer **Yes** to Unrestricted Web Access (forces 17+), or (b) constrain outbound navigation to the app's own domain + intended call/menu deep links so you can honestly answer **No** and keep 4+. **Recommended: constrain navigation and keep 4+.**

---

## 8. App Privacy — "Nutrition Label"

The binary has NO login and NO account. BUT two things drive the privacy label: (a) **Google AdSense inside the WebView** serves third-party ads, and (b) the app requests **location** (`NSLocationWhenInUseUsageDescription`) to show nearby restaurants on the native map. Both must be disclosed. Under-disclosing third-party ad SDKs/tags is one of the most common rejection/removal reasons — over-disclose rather than under-disclose.

### Declare "Data Used to Track You" — YES

Google AdSense sets advertising/identifier data that is combined with third-party data for targeted advertising. That is Apple's definition of **tracking**. Declare:

| Data type | Category | Linked to user? | Used to track? | Why |
|---|---|---|---|---|
| **Device ID / Advertising identifier** | Identifiers | No (no account) | **Yes** | AdSense uses ad/device identifiers to serve and measure ads. |
| **Product Interaction / Usage Data** | Usage Data | No | **Yes** | Ad impression/click and page-view signals sent to the ad network. |
| **Coarse/Precise Location** | Location | No | **No** (functional) | Used on-device to center the map / show nearby spots. Only declare as *tracking* if location is passed to the ad network — keep it functional-only. |
| **Crash Data / Diagnostics** | Diagnostics | No | No | If any analytics/crash SDK is present (declare only if actually integrated). |

### App Tracking Transparency (ATT) is REQUIRED

Because you declare tracking, you MUST present the **ATT prompt** (`AppTrackingTransparency`) before any tracking identifier is used, and you must not access the IDFA until the user opts in. Add `NSUserTrackingUsageDescription` to Info.plist (e.g., "We use your data to show more relevant ads that keep this app free."). Google's ad tags must respect the ATT result. Without ATT, tracking-declared apps get rejected under Guideline 5.1.2.

### Privacy Manifest (`PrivacyInfo.xcprivacy`) — REQUIRED

Apple requires a privacy manifest declaring the data your app AND embedded third-party SDKs collect, plus reasons for any "required-reason" APIs. Ensure the AdSense/ad integration's collection is reflected. If you add Google's Mobile Ads SDK (rather than pure web AdSense), ship its bundled privacy manifest.

### Summary of what to disclose and why
- **Identifiers → Yes, used to track** (AdSense advertising ID).
- **Usage Data → Yes, used to track** (ad interaction/impressions).
- **Location → collected, functional only, NOT tracking** (map nearby).
- **No "Data Linked to You"** — there's no account, so nothing links to an identity; identifiers/usage sit under "Data Not Linked to You" for the collection question, but STILL flagged under "Used to Track You."
- Present **ATT**, ship the **privacy manifest**, and add **NSUserTrackingUsageDescription**.

> If you would rather NOT show the ATT prompt and NOT declare tracking, you must configure AdSense/ad serving to **non-personalized ads only** and pass no cross-app identifiers — then Identifiers/Usage can be declared "Not used to track." That's a product decision; the safe default for an AdSense-monetized app is: declare tracking + show ATT.

---

## 9. Support URL + Marketing URL

- **Support URL:** `https://beverlyhillsvideos.com/support`
  (Create this page: a short contact form or a `mailto:` + FAQ. Apple requires a working support URL; a bare homepage risks a Guideline 1.5 metadata rejection.)
- **Marketing URL (optional but recommended):** `https://beverlyhillsvideos.com`
- **Privacy Policy URL (REQUIRED for any app that collects data / serves ads):** `https://beverlyhillsvideos.com/privacy`
  This is mandatory here because AdSense collects data. The privacy policy must name Google as a third-party ad partner, describe advertising identifiers/usage collection, and link to Google's ad policies.

---

## 10. "What's New" (Version 1.0)

> ```
> Welcome to Beverly Hills Videos — your insider guide to the 90210.
>
> • 44 original short films on the city's top restaurants
> • A native map: tap a pin to call or open the menu
> • Save your favorites — available offline
> • Luxury shopping and city guides
> • Share any spot in a tap
>
> Thanks for downloading. We're just getting started — more films and guides are on the way.
> ```

---

## 11. Guideline 4.2 Justification Memo (for the App Review notes)

> Paste this into **App Review Information → Notes** in App Store Connect.

**Beverly Hills Videos is a native iOS application, not a repackaged website.** While some rich media (the restaurant films and certain guide content) is delivered from beverlyhillsvideos.com through an embedded web component, the app's structure, navigation, and core interactions are all native and could not be reproduced by simply loading a URL in Safari. The app is built with React Native and presents a native tab-bar architecture (Films, Map, Favorites, Guides), so users move through the experience using platform-standard native navigation rather than web page loads.

**The centerpiece is a native map.** Restaurants are rendered on a native `react-native-maps` map (MapKit), with tappable native pins that trigger native device actions — one tap places a phone call to the restaurant, opens its menu, or saves it to Favorites. This map, its pins, and the call/menu/favorite actions are implemented with native iOS APIs (CoreLocation for "show me what's nearby," the system dialer for calls), not web links, and are a primary reason a user installs the app rather than visiting the site.

**The app adds substantial native functionality beyond any website:** favorites are persisted locally on the device so they survive relaunch and are available offline; core guides and saved content are cached for offline use so the app remains useful without a connection; the native iOS share sheet lets users send a restaurant, film, or guide to a friend; and the app respects platform conventions including App Tracking Transparency for its ad-supported model. In short, the website is one content source feeding a genuinely native, offline-capable, map-and-favorites app — it is the curated, insider guide to Beverly Hills delivered as a first-class iOS experience, which is exactly what Guideline 4.2 asks for.

---

## 12. Screenshot Plan

**Required sizes (2026 App Store Connect):**
- **6.9" iPhone (required)** — portrait **1320 × 2868** px (iPhone 16 Pro Max). This is the canonical required set; if you supply it, App Store Connect can down-scale for smaller devices.
- **6.7" iPhone** — portrait **1290 × 2796** px (the fallback set App Store Connect uses if you don't ship 6.9").
- **6.5" iPhone** — portrait **1284 × 2778** px (or 1242 × 2688). Only strictly required if you skip the 6.9" set; recommended to supply for older-device shoppers.
- **iPad 13"** (because `supportsTablet: true`) — portrait **2064 × 2752** px. Required if the app is offered on iPad; if you'd rather not produce iPad art for v1.0, set the app to **iPhone-only** in App Store Connect to remove the iPad screenshot requirement.

**Format:** sRGB PNG or JPEG, no transparency, exact pixel dimensions (not "close").

**The 5 screenshots (same set, exported at each required size):**

| # | What it shows | One-line caption |
|---|---|---|
| 1 | **Hero / Films tab** — a striking still from a restaurant film with the film grid below and the app wordmark. | "See Beverly Hills before you go." |
| 2 | **A restaurant film playing** — full-bleed video frame with title + "Call" and "Menu" buttons visible. | "44 original films on the city's best tables." |
| 3 | **The native map** — pins across Beverly Hills, one pin tapped showing the call/menu callout. | "Tap a pin. Call or open the menu instantly." |
| 4 | **Favorites (with an offline badge)** — saved restaurants in a clean list/grid. | "Save your favorites — even offline." |
| 5 | **Luxury shopping & city guides** — Rodeo Drive / guide imagery in the Guides tab. | "Your insider guide to shopping and the city." |

**Production tips:**
- Put the caption text ON the screenshot as an overlay band (screenshot caption text IS indexed by Apple, so use real search terms: "Beverly Hills," "restaurants," "map," "menu").
- Lead with #1 and #3 — the film hero and the map are the two frames that most clearly say "this is not a website."
- Keep the luxury aesthetic: dark/elegant background (`#151310` matches the app splash) with gold or off-white type.

---

## Pre-Submission Readiness Checklist

- [ ] App icon 1024×1024 (no alpha, no rounded corners baked in).
- [ ] Screenshots at required sizes (§12) uploaded.
- [ ] Support URL live at `/support`; Privacy Policy live at `/privacy` (names Google/AdSense).
- [ ] App Privacy answers entered (§8): Identifiers + Usage = **used to track**; Location = functional.
- [ ] **ATT prompt** implemented + `NSUserTrackingUsageDescription` in Info.plist.
- [ ] **`PrivacyInfo.xcprivacy`** privacy manifest present (app + ad SDK).
- [ ] Age rating questionnaire completed (§7); confirm "Unrestricted Web Access = No" by constraining WebView navigation to own domain.
- [ ] Guideline 4.2 memo (§11) pasted into App Review notes.
- [ ] Export compliance: uses only standard HTTPS/exempt encryption → set `ITSAppUsesNonExemptEncryption = false` in Info.plist (avoids the per-build compliance prompt).
- [ ] Category set: Travel (primary) / Food & Drink (secondary).
- [ ] Build uploaded to App Store Connect and selected for the version (a green build ≠ an accepted upload — verify the build appears in ASC).
- [ ] Contact info + demo notes: no login required — state "No account needed" in review notes.

---

## Sources (verified 2026)

- App Store metadata character limits (Name 30 / Subtitle 30 / Promo 170 / Keywords 100 / Description 4000): [AppLaunchFlow](https://www.applaunchflow.com/blog/app-store-metadata-character-limits-2026), [AppScreenshotStudio](https://appscreenshotstudio.com/blog/app-store-metadata-for-indie-devs-title-subtitle-keywords-2026), [wordlimit.ai](https://wordlimit.ai/limits/app-store)
- Screenshot required sizes (6.9" 1320×2868 required; 6.7" 1290×2796; 6.5" 1284×2778; iPad 13" 2064×2752): [AppLaunchFlow](https://www.applaunchflow.com/app-store-screenshot-sizes), [Screenhance](https://screenhance.com/blog/app-store-screenshot-dimensions-2026), [Newly](https://newly.app/guides/app-store-screenshot-sizes)
- App Privacy / tracking / WebView / ATT: [Apple — User Privacy and Data Use](https://developer.apple.com/app-store/user-privacy-and-data-use/), [Apple — App Privacy Details](https://developer.apple.com/app-store/app-privacy-details/)