store-listing

App Store Connect — HiveJournal listing copy

Every field App Store Connect asks for, filled in and ready to paste. Character limits are Apple's; the count after each field is the actual length of the copy below it.

Bundle ID com.hivejournal.app · SKU hivejournal-ios · Primary language English (U.S.)

Everything here describes what is in the iOS binary today. It deliberately omits web-only features (voice entry capture, AI cover-image generation, imports, Life Map) and does not claim dark mode — the app has none. Inaccurate metadata is App Review Guideline 2.3, so re-check this file against the build before each submission.


App Information

FieldValue
Name (30)HiveJournal — 11
Subtitle (30)Journaling, free in full — 24
Primary categoryLifestyle
Secondary categoryProductivity
Content rightsContains no third-party content
Age rating12+ expected — see Age rating questionnaire
Copyright2026 Point Seven Studio (confirm the legal entity name with the owner)

Category note. Health & Fitness is the other plausible primary (Rosebud sits there, and we track mood + sleep). Lifestyle is recommended: it's where Day One competes, and it keeps the listing clear of health-data review scrutiny we don't need for a journal.

URLs

FieldValueStatus
Privacy Policy URL (required)https://hivejournal.com/privacy✅ live
Marketing URLhttps://hivejournal.com✅ live
Support URL (required)https://hivejournal.com/support404 — does not exist

Support URL is a blocker. APP_STORE_DEPLOYMENT.md tells you to enter /support, but there is no such route in apps/frontend/src/app/. App Store Connect will not accept a submission without a reachable support URL, and Apple does click it. Pick one before submitting:

  • Best: ship a small /support page (contact address, FAQ, link to /privacy and /terms). Also satisfies Play's contact-details requirement and Guideline 1.2's "published point of contact" for user-generated content.
  • Acceptable stopgap: use https://hivejournal.com as the support URL and put support@hivejournal.com in the App Review notes. Apple has accepted a marketing homepage that visibly carries a contact route; a bare homepage with no contact path gets rejected.

Promotional Text (170)

Editable without a new build — use it for seasonal or launch messaging.

The whole journaling product, free: unlimited entries, moods, notebooks, goals, sleep and AI reflection. No trial, no entry cap, no paywall on the part you came for.

165 characters.


Description (4000)

Full journaling, free — the entire product, not a trial.

Most journaling apps give you a taste and charge for the rest: a cap on entries, AI reflection behind a subscription, your own history locked until you pay. HiveJournal gives you the whole journaling experience for free. Unlimited entries. Moods, tags and notebooks. Goals. Sleep. AI reflection on what you wrote. No entry limit, no trial clock, no paywall on the part you came for.

WRITE
• Unlimited entries in a fast, distraction-free editor
• Mark how you felt and tag entries however you think
• Organize into notebooks — one per project, person, year, or whatever you keep
• Search everything you've written from the top of your journal

TRACK
• Log how you slept, night by night
• Set goals and check in against them
• Watch your stream — entries, sleep and encouragement in one timeline

REFLECT
• AI reflections that read your entries back to you and find the patterns
• Ask JQ, the built-in companion, about anything you've written
• Keep a dream log with steps for the ones you want to chase

SHARE, ONLY IF YOU WANT TO
• Entries are private by default — every one of them
• Share a single entry as a link when you want someone to read it
• Connect with someone through JQ Bridge, or receive an encouragement drop

YOUR JOURNAL STAYS YOURS
• Row-level security means the database itself enforces that only you can read your entries — not just the app
• We never sell your data and there are no third-party trackers or ad SDKs in this app
• Delete your account and everything in it, whenever you want, from Settings

HiveJournal is part of a larger platform you can grow into on the web — stress triage, voice capsules, a writing community, audio fiction — but the journal is complete on its own, on your phone, for free.

Start writing.

—

Privacy Policy: https://hivejournal.com/privacy
Terms of Service: https://hivejournal.com/terms

1,905 characters — well inside the 4,000 limit.


Keywords (100)

Comma-separated, no spaces after commas — spaces count against the limit. "HiveJournal" is already indexed from the app name; don't repeat it here.

journal,diary,mood tracker,ai journal,notebook,gratitude,reflection,sleep log,goals,daily writing

97 characters.

Rationale: the four the runbook and #1684 specify (journal, diary, mood tracker, ai journal) lead; the rest cover the features we actually ship and can defend. Apple indexes across comma boundaries, so mood tracker + sleep log also reach "mood", "tracker", "sleep".


What's New in This Version (4000)

For 1.0.0:

First release. The whole HiveJournal journaling experience, native on iPhone and iPad — unlimited entries, moods, tags, notebooks, goals, sleep tracking, search, AI reflection, and JQ, your companion. Free, in full.

Age rating questionnaire

Answers for App Store Connect's questionnaire. Expected result: 12+.

QuestionAnswer
Cartoon or Fantasy ViolenceNone
Realistic ViolenceNone
Prolonged Graphic or Sadistic Realistic ViolenceNone
Profanity or Crude HumorNone
Mature/Suggestive ThemesNone
Horror/Fear ThemesNone
Medical/Treatment InformationNone
Alcohol, Tobacco, or Drug Use or ReferencesNone
Simulated GamblingNone
Sexual Content or NudityNone
Graphic Sexual Content and NudityNone
ContestsNone
Unrestricted Web AccessNo
Gambling and ContestsNo
User-generated contentYes — see below

Unrestricted Web Access — No. The app embeds a WebView in exactly one place (TurnstileWidget, loading Cloudflare's bot-protection challenge). It has no browser, no arbitrary URL loading, and no in-app web surfing.

User-generated content — Yes. Journal entries are the user's own and private, but three surfaces carry content authored by other people: encouragement Drops, JQ Bridge connections, and shared-entry links.

⚠️ App Review risk — Guideline 1.2. Apps that display user-generated content must provide (a) a method to filter objectionable content, (b) a mechanism to report offensive content with timely response, (c) the ability to block abusive users, and (d) published contact information. A search of apps/mobile, apps/backend/src/routes and apps/frontend/src found no report and no block affordance anywhere in the product, and there is no support page (see URLs). Because Drops arrive from other users, a reviewer can reasonably invoke 1.2. Recommended before submitting: a report action on any inbound Drop / Bridge message, a block list, and a /support page. Not a code change this task can make — filed separately.


App Review Information

Sign-in required: Yes. Provide a demo account.

FieldValue
First name / Last name(owner)
Phone number(owner)
Email(owner)
Demo account usernameTBD — seed a prod account with ~10 entries, 2 notebooks, a goal, and a few nights of sleep so the reviewer sees a populated app, not empty states
Demo account passwordTBD

Notes to the reviewer (paste into the Notes field):

HiveJournal is a personal journaling app. Sign in with the demo account above; entries, notebooks, goals and sleep data are pre-populated.

Where to look:
• Journal tab — entries list with search; tap an entry to read, tap + to write one. Mood, tags and notebook are set in the editor.
• Journal tab -> Notebooks / Goals / Sleep — organization and tracking.
• Stream tab — a combined timeline of entries, sleep logs and encouragement notes.
• Settings tab — profile, Journal Analysis (AI reflections), DreamPro, JQ Bridge, and account deletion.
• The floating chat button opens JQ, an AI companion that can answer questions about the signed-in user's own entries.

Privacy: journal content is stored in Supabase Postgres under row-level security, so a user can only ever read their own rows. Entry content is sent to OpenAI when the user requests an AI reflection, when they message JQ, and when an entry is saved without a mood (the server infers one). There are no analytics SDKs, trackers or ad networks in the app.

Account deletion is available in-app: Settings -> Delete Account.

Camera and photo-library access is requested only when the user sets a profile picture or submits a Workout Window check-in photo. Location is requested only for an optional Workout Window check-in and can be denied without affecting journaling.

Turnstile caveat. Sign-in runs a Cloudflare Turnstile challenge whenever a site key is present in the build (#1489). Confirm the reviewer can complete it on the production build — a challenge that fails or hangs in App Review's network environment is an automatic "unable to sign in" rejection. If in doubt, ship 1.0 with no Turnstile site key in the iOS production profile.


Permission purpose strings

Fixed in #1709. What the build now produces, confirmed with npx expo config --type introspect:

KeyString in the generated Info.plist
NSCameraUsageDescription"$(PRODUCT_NAME) uses the camera so you can take a profile picture or a workout check-in photo."
NSPhotoLibraryUsageDescription"$(PRODUCT_NAME) needs your photo library so you can pick a profile picture or a check-in photo."
NSLocationWhenInUseUsageDescription"$(PRODUCT_NAME) can tag a workout check-in with where you were. Check-ins work fine without it."
ITSAppUsesNonExemptEncryptionfalse — skips the export-compliance prompt
UIBackgroundModes["audio"] — Graphene playback continues in background

Deliberately absent, and worth knowing why if a reviewer asks: NSMicrophoneUsageDescription (the app has no recording feature — the string was being injected by expo-image-picker's plugin), NSLocationAlwaysUsageDescription and NSLocationAlwaysAndWhenInUseUsageDescription (we only ever call requestForegroundPermissionsAsync; declaring background location we don't use invites the "why do you need this?" round of review).

$(PRODUCT_NAME) is substituted at build time, so the Workout Window flavor gets its own name in the prompts rather than "HiveJournal".

The location-crash scare was a false alarm

An earlier read of this said app.json declares no location purpose string and that iOS would therefore terminate the app. It wouldn't have: expo-location is in legacyExpoPlugins in @expo/prebuild-config, so withLegacyExpoPlugins() applies its config plugin during expo prebuild whether or not it's listed in plugins. The real problem was that the auto-injected strings were generic and included two Always-location variants — which is what #1709 fixed.

App Store Connect — Docs | HiveJournal