storebound/docs/faq.md
CRT 36a8bf9625 CLI runs on Node 20+: npx storebound (bunx keeps working)
- cli/lib/rt.ts: the runtime layer on node: modules (spawn / spawnSync with Bun's defaults, exit codes and
  "Executable not found", which with PATHEXT, sleep, serve, Glob, hasher, gunzip, stdin, SQLite, packageRoot,
  config imports with a type-stripping fallback for Node 20); every Bun.* use in cli/ goes through it
- tools/gen-embedded.ts -> cli/lib/embedded.ts: templates/, cli/shots/*.html and Play's Data safety form embedded
  (replaces Bun text imports; the bundle and the compiled sidecar carry them), checked fresh by bun run ci
- package.json: bin dist/storebound.mjs (Node ESM bundle, tools/build-node.ts, prepack), engines node >=20
- bun run ci: node bundle + node smoke (real node: --version, help, check same as Bun, scan, release plan --help,
  init, MCP handshake + tool call); Forgejo CI sets up Node 20; tests/node-compat.test.ts guards cli/
- install writes npx MCP commands when run with Node; bin/storebound falls back to Node
- docs: npx storebound init (Node 20+) or bunx storebound init
2026-10-13 04:03:28 +08:00

51 lines
3.8 KiB
Markdown

# FAQ
**Is it only for games?** No. It started with my game, but every command is about store records, not engines or
genres. `init --profile app` and `--profile subscription-app` give you templates for a utility app with accounts and
for a subscription app (Data safety, App Privacy, declarations, listing and screenshot copy), the `app` screenshot
style, account deletion and demo account checks, and subscriptions on both stores. Game-only advice (IARC game
questions, gameplay footage, ad mediation) is marked as such in the skills.
**Do I need Claude (or any AI tool)?** No. The CLI is a normal command and the skills are Markdown checklists you can
read yourself. The AI integrations are optional adapters generated from the same files.
**Does it fill the questionnaires?** The ones with an API, yes: Play Data safety (the whole form from `dataSafety` in
the config; the import replaces the form, so the config is the single truth), Apple age rating, content rights,
categories, price and availability, the export compliance answer and the App Review details. The stores have no
public API for Play's App content cards (IARC content rating, target audience, ads, advertising ID, app access,
government / financial / health / news) or for Apple's App Privacy labels. For those, `init` gives you prepared
answers (`store/declarations.md`, `store/app-privacy.md`, per profile: a utility app with an account, a subscription
app, or a free-to-play game with ads and IAP),
and the `store-declarations` skill has the exact clicks: an agent with browser tools can fill them in while you
watch, or you copy them in yourself. Either way the answers are your statements to the stores: change what does not
match your app, and the agent asks you whenever the code does not prove an answer. `validate` cannot see these
forms, so `store-preflight` lists them as a manual check.
**My app or game is Unity / Godot / Flutter / React Native / native, not web.** Screenshots and clips come from the iOS Simulator
(`ios-sim`), an Android emulator or device (`android-emu`) or a folder you fill with any tool; only the rendering of
the store images uses a headless browser. The store commands do not care about the engine at all: they work on
your AAB / build numbers and listing files.
**Is my store account safe?** storebound uses the official APIs with keys you create and can revoke, never your
password. Store writes are dry runs until you say otherwise, and the public steps (submit, release) stay with you.
Use an App Store Connect key with the App Manager role and a Play service account limited to your app.
**Why Bun, and does it need Bun?** storebound is developed and tested on Bun (TypeScript, `fetch`, a test runner built in),
with zero runtime dependencies. You do not need Bun to use it: the npm package runs on Node 20+ (`npx storebound`),
and `bunx storebound` runs the same CLI on Bun 1.1+.
**Does it upload my video to YouTube?** No. Play only takes a YouTube URL, and uploading to YouTube needs your Google
account; `shots video` makes the file, you upload it and paste the URL into `play.video`.
**Can it run store experiments for me?** On the App Store, mostly: `apple ppo create / upload` builds a Product Page
Optimization test from your `shots` variants (treatments, locales, screenshots) and you start it (`apple ppo start`
asks first). Results per treatment are only shown in App Store Connect. Play store listing experiments have no API:
storebound renders and checks the variant images, you set the experiment up in Play Console.
**Does it answer reviews by itself?** No. It drafts one file per review, your agent helps write the replies, and only
the drafts you mark `approved: true` are sent, by you, after a confirmation. Replies that offer something for a rating
are refused.
---
[All docs](README.md) · [README](../README.md)