<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>App Preview | Blog</title><description>Set up and use the store-listing preview tool: sync live store data, review the New→Current diff, and verify your App Store Connect / Google Play keys.</description><link>https://fighttechvn.github.io/</link><language>en</language><item><title>First-release checklist for App Store &amp; Google Play</title><link>https://fighttechvn.github.io/app_marketing/docs/blog/first-release-checklist-app-store-google-play/</link><guid isPermaLink="true">https://fighttechvn.github.io/app_marketing/docs/blog/first-release-checklist-app-store-google-play/</guid><description>Ship your first app with confidence — a complete checklist covering the screenshots, metadata, and graphics required for App Store and Google Play, plus the full step-by-step deploy flow for iOS (App Store Connect + Xcode) and Android (Play Console + AAB).

</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A &lt;strong&gt;first-release checklist for the App Store and Google Play&lt;/strong&gt; is the difference
between a smooth launch and a rejection email. A brand-new app has the strictest
requirements, and they’re easy to miss when you’re focused on the build. This
guide covers two things: the &lt;strong&gt;listing checklist&lt;/strong&gt; (what every store needs), and
the &lt;strong&gt;end-to-end deploy flow&lt;/strong&gt; for each store — from account to “Available”.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-the-checklist-covers&quot;&gt;What the checklist covers&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Open &lt;strong&gt;Release checklist&lt;/strong&gt; in the tool to verify, before you submit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Screenshots&lt;/strong&gt; — present for every required device size (iPhone 6.9”, iPad 13”,
Android phone) with the correct dimensions and no alpha channel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata&lt;/strong&gt; — name, subtitle/short description, keywords, and full description
filled for every locale you ship.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graphics&lt;/strong&gt; — app icon (1024×1024 / 512×512) and Google Play feature graphic
(1024×500).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy items&lt;/strong&gt; — privacy, content rating, and category set.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;why-a-first-release-is-different&quot;&gt;Why a first release is different&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;For an app already on the stores, most fields carry over. A &lt;strong&gt;first release&lt;/strong&gt;
starts empty, so the checklist acts as a final gate — confirming each store has
everything it needs before you hit submit. Two things also exist &lt;em&gt;only&lt;/em&gt; on a
first submission: setting up &lt;strong&gt;signing/distribution&lt;/strong&gt; and getting through the
&lt;strong&gt;stricter first-time review&lt;/strong&gt;. The deploy steps below cover both.&lt;/p&gt;
&lt;hr&gt;
&lt;div&gt;&lt;h2 id=&quot;deploy-to-the-app-store-ios&quot;&gt;Deploy to the App Store (iOS)&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;0-prerequisites&quot;&gt;0. Prerequisites&lt;/h3&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apple Developer Program&lt;/strong&gt; membership (US$99/year) — enroll at
&lt;a href=&quot;https://developer.apple.com/programs/&quot;&gt;developer.apple.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xcode&lt;/strong&gt; on a Mac (latest stable), signed in with your Apple ID under
&lt;em&gt;Settings → Accounts&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;A unique &lt;strong&gt;Bundle ID&lt;/strong&gt; (e.g. &lt;code dir=&quot;auto&quot;&gt;com.yourcompany.yourapp&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;1-create-the-app-record-in-app-store-connect&quot;&gt;1. Create the app record in App Store Connect&lt;/h3&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a href=&quot;https://appstoreconnect.apple.com/&quot;&gt;App Store Connect&lt;/a&gt; → &lt;strong&gt;My Apps → +
→ New App&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Pick the platform (iOS), &lt;strong&gt;name&lt;/strong&gt;, &lt;strong&gt;primary language&lt;/strong&gt;, &lt;strong&gt;Bundle ID&lt;/strong&gt;, and a
&lt;strong&gt;SKU&lt;/strong&gt; (any internal id).&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Pricing and Availability&lt;/strong&gt; (free/paid, territories).&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;h3 id=&quot;2-sign-and-upload-the-build&quot;&gt;2. Sign and upload the build&lt;/h3&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;In Xcode, set the &lt;strong&gt;Version&lt;/strong&gt; (e.g. &lt;code dir=&quot;auto&quot;&gt;1.0.0&lt;/code&gt;) and &lt;strong&gt;Build&lt;/strong&gt; number.&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Automatically manage signing&lt;/strong&gt; (Xcode creates the distribution
certificate + provisioning profile), or manage them manually in
&lt;em&gt;Certificates, Identifiers &amp;#x26; Profiles&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Any iOS Device (arm64)&lt;/strong&gt; → &lt;strong&gt;Product → Archive&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Organizer&lt;/strong&gt;, choose the archive → &lt;strong&gt;Distribute App → App Store
Connect → Upload&lt;/strong&gt;. (Alternatively, export the &lt;code dir=&quot;auto&quot;&gt;.ipa&lt;/code&gt; and upload with the
&lt;strong&gt;Transporter&lt;/strong&gt; app.)&lt;/li&gt;
&lt;li&gt;Wait for &lt;strong&gt;build processing&lt;/strong&gt; to finish in App Store Connect (a few minutes to
an hour) before the build can be attached to a version.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;h3 id=&quot;3-fill-the-version-listing&quot;&gt;3. Fill the version listing&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;On the app’s &lt;strong&gt;1.0 Prepare for Submission&lt;/strong&gt; page:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Screenshots&lt;/strong&gt; — upload per device size (6.9” iPhone is required; iPad 13” if
you support iPad). Prep them in the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/playground/&quot;&gt;Playground&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Promotional text, description, keywords, support URL, marketing URL.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App icon&lt;/strong&gt; is taken from the uploaded build (1024×1024, no alpha).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Privacy&lt;/strong&gt; — complete the data-collection questionnaire (required).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Age Rating&lt;/strong&gt; questionnaire, &lt;strong&gt;Category&lt;/strong&gt;, and &lt;strong&gt;Pricing&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the processed &lt;strong&gt;Build&lt;/strong&gt; from step 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;4-optional-testflight-beta&quot;&gt;4. (Optional) TestFlight beta&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Add internal/external testers under &lt;strong&gt;TestFlight&lt;/strong&gt; to validate the exact build
before public review. External testers require a quick beta review.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;5-submit-for-review--release&quot;&gt;5. Submit for review → release&lt;/h3&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Choose how to release: &lt;strong&gt;Automatically&lt;/strong&gt;, &lt;strong&gt;Manually&lt;/strong&gt;, or &lt;strong&gt;Phased release&lt;/strong&gt;
(gradual rollout to existing users — for first release it controls the ramp).&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add for Review → Submit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;First-time reviews are stricter and can take from a few hours to a couple of
days. Watch for &lt;strong&gt;Metadata Rejected&lt;/strong&gt; vs &lt;strong&gt;Binary Rejected&lt;/strong&gt; — the former you
fix in the listing, the latter needs a new build.&lt;/li&gt;
&lt;li&gt;On approval, the app goes &lt;strong&gt;Pending Developer Release&lt;/strong&gt; (manual) or live
automatically.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;div&gt;&lt;h2 id=&quot;deploy-to-google-play-android&quot;&gt;Deploy to Google Play (Android)&lt;/h2&gt;&lt;/div&gt;
&lt;div&gt;&lt;h3 id=&quot;0-prerequisites-1&quot;&gt;0. Prerequisites&lt;/h3&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Play Developer account&lt;/strong&gt; (one-time US$25) — register at the
&lt;a href=&quot;https://play.google.com/console/&quot;&gt;Play Console&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Android Studio&lt;/strong&gt; to build a signed &lt;strong&gt;Android App Bundle (&lt;code dir=&quot;auto&quot;&gt;.aab&lt;/code&gt;)&lt;/strong&gt; — Play
requires AAB, not APK, for new apps.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;privacy policy URL&lt;/strong&gt; (required for essentially every app now).&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;1-create-the-app-in-the-play-console&quot;&gt;1. Create the app in the Play Console&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;All apps → Create app&lt;/strong&gt; → set the &lt;strong&gt;app name&lt;/strong&gt;, default language, &lt;strong&gt;App or
Game&lt;/strong&gt;, &lt;strong&gt;Free or Paid&lt;/strong&gt;, and accept the declarations.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;2-set-up-signing-play-app-signing&quot;&gt;2. Set up signing (Play App Signing)&lt;/h3&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Build a signed &lt;strong&gt;release AAB&lt;/strong&gt;: Android Studio → &lt;strong&gt;Build → Generate Signed
Bundle / APK → Android App Bundle&lt;/strong&gt;, using your &lt;strong&gt;upload keystore&lt;/strong&gt; (keep it
safe — losing it means a recovery process).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Play App Signing&lt;/strong&gt; is on by default: you sign with the &lt;em&gt;upload key&lt;/em&gt;, Google
re-signs with the &lt;em&gt;app signing key&lt;/em&gt; it manages. This is what end users get.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;h3 id=&quot;3-complete-the-store-listing--policy-declarations&quot;&gt;3. Complete the store listing &amp;#x26; policy declarations&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Under &lt;strong&gt;Grow → Store presence → Main store listing&lt;/strong&gt; and the &lt;strong&gt;Policy / Dashboard&lt;/strong&gt;
tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Short description&lt;/strong&gt; (≤80 chars) and &lt;strong&gt;full description&lt;/strong&gt; (≤4000).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screenshots&lt;/strong&gt; (min 2 per form factor), &lt;strong&gt;app icon&lt;/strong&gt; (512×512), and the
&lt;strong&gt;feature graphic&lt;/strong&gt; (1024×500) — prep these in the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/playground/&quot;&gt;Playground&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content rating&lt;/strong&gt; questionnaire (IARC).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target audience &amp;#x26; content&lt;/strong&gt;, &lt;strong&gt;Data safety&lt;/strong&gt; form, &lt;strong&gt;Ads&lt;/strong&gt; declaration,
&lt;strong&gt;App access&lt;/strong&gt; (login details if anything is gated), and &lt;strong&gt;Privacy policy&lt;/strong&gt; URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Category&lt;/strong&gt; and contact details.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;4-create-a-release-on-a-track&quot;&gt;4. Create a release on a track&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Releases roll out through tracks — promote upward as confidence grows:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Internal testing&lt;/strong&gt; → &lt;strong&gt;Closed testing&lt;/strong&gt; → &lt;strong&gt;Open testing&lt;/strong&gt; → &lt;strong&gt;Production&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Release → (track) → Create new release&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Upload the &lt;strong&gt;AAB&lt;/strong&gt;, set the &lt;strong&gt;release name&lt;/strong&gt; and &lt;strong&gt;release notes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;New personal-developer accounts may need a period of &lt;strong&gt;closed testing with N
testers&lt;/strong&gt; before Production is unlocked — check the console’s requirements.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;h3 id=&quot;5-roll-out--review&quot;&gt;5. Roll out &amp;#x26; review&lt;/h3&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Review release → Start rollout to Production&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;staged rollout&lt;/strong&gt; (e.g. 10% → 50% → 100%) to limit blast radius.&lt;/li&gt;
&lt;li&gt;First-app review typically takes from a few hours up to ~7 days. Once approved
and rolled out, the listing goes live (propagation can take a few hours).&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;div&gt;&lt;h2 id=&quot;prep-your-listing-assets-first&quot;&gt;Prep your listing assets first&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Both stores reject on the same avoidable things: wrong screenshot sizes, an icon
with an alpha channel, a description that overflows, or a missing localized field.
Build your &lt;strong&gt;New&lt;/strong&gt; version in the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/playground/&quot;&gt;Playground&lt;/a&gt;, run the
&lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/usage/#first-release-checklist&quot;&gt;first-release checklist&lt;/a&gt;, and fix anything
flagged. Pair it with the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/usage/#store-seo-audit-aso&quot;&gt;store SEO audit&lt;/a&gt; so
your launch listing is both &lt;strong&gt;complete&lt;/strong&gt; and &lt;strong&gt;discoverable&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To pull credentials and live data for &lt;strong&gt;Sync&lt;/strong&gt; / &lt;strong&gt;Test keys&lt;/strong&gt;, see
&lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/api-keys/&quot;&gt;Get your API keys&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>app-store</category><category>google-play</category><category>checklist</category><category>release</category><category>ios</category><category>android</category><category>deploy</category></item><item><title>Load store screenshots &amp; metadata via App Store &amp; Play API</title><link>https://fighttechvn.github.io/app_marketing/docs/blog/load-store-screenshots-metadata-api/</link><guid isPermaLink="true">https://fighttechvn.github.io/app_marketing/docs/blog/load-store-screenshots-metadata-api/</guid><description>Pull live screenshots and metadata text from App Store Connect and Google Play with your API keys — straight into the store-preview tool. Here&apos;s how it works.

</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Loading store screenshots and metadata&lt;/strong&gt; by hand is slow and error-prone. The
store-preview tool pulls them straight from &lt;strong&gt;App Store Connect&lt;/strong&gt; and &lt;strong&gt;Google
Play&lt;/strong&gt; using your API keys, so the Current variant always mirrors what is live.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-gets-loaded&quot;&gt;What gets loaded&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;One &lt;strong&gt;Sync&lt;/strong&gt; click reads, per store:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;App Store Connect&lt;/strong&gt; — iPhone and iPad screenshots plus the localized name,
subtitle, keywords, promotional text, description, and “what’s new”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Play&lt;/strong&gt; — phone screenshots plus the title, short description, and full
description for every locale.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Screenshots are downloaded into &lt;code dir=&quot;auto&quot;&gt;assets/current/&lt;/code&gt; and the text is written to
&lt;code dir=&quot;auto&quot;&gt;listing-current.json&lt;/code&gt;, so the &lt;strong&gt;Current&lt;/strong&gt; variant reflects the live listing
exactly.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;how-the-api-access-works&quot;&gt;How the API access works&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The tool authenticates the same way the official tooling does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;App Store Connect uses a &lt;strong&gt;JWT signed with your &lt;code dir=&quot;auto&quot;&gt;.p8&lt;/code&gt; API key&lt;/strong&gt; (key id + issuer id).&lt;/li&gt;
&lt;li&gt;Google Play uses a &lt;strong&gt;service-account JSON&lt;/strong&gt; with the Android Publisher scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You only set these once. See the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/reference/env-variables/&quot;&gt;environment variables reference&lt;/a&gt;
for every key, and &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/api-keys/&quot;&gt;Get your store API keys&lt;/a&gt; for step-by-step
instructions on creating them.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;try-it&quot;&gt;Try it&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Open the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/playground/&quot;&gt;Playground&lt;/a&gt;, add your keys via &lt;strong&gt;Import → Env&lt;/strong&gt;, click
&lt;strong&gt;🔌 Test keys&lt;/strong&gt; to confirm access, then &lt;strong&gt;⟳ Sync&lt;/strong&gt;. Within seconds the Current
variant shows your live App Store and Google Play listing — ready to
&lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/usage/&quot;&gt;diff against your new version&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>app-store</category><category>google-play</category><category>api</category><category>screenshots</category></item><item><title>One site — landing, Playground, and docs</title><link>https://fighttechvn.github.io/app_marketing/docs/blog/one-site-landing-playground-docs/</link><guid isPermaLink="true">https://fighttechvn.github.io/app_marketing/docs/blog/one-site-landing-playground-docs/</guid><description>We folded the marketing landing page, the interactive store-preview tool, and the docs into a single local site you start with one command.

</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The store-preview project used to be three separate things: a landing page, the
interactive tool, and the documentation. Now it’s &lt;strong&gt;one site&lt;/strong&gt;, served by a single
&lt;code dir=&quot;auto&quot;&gt;serve.py&lt;/code&gt; umbrella and started with &lt;code dir=&quot;auto&quot;&gt;./run.sh&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;/&lt;/code&gt;&lt;/strong&gt; — the landing page introduces the product.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;/playground/&lt;/code&gt;&lt;/strong&gt; — the interactive tool: Sync live data, Review Diff, Test keys, Try template.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code dir=&quot;auto&quot;&gt;/docs/&lt;/code&gt;&lt;/strong&gt; — these docs, plus the blog and the interactive API reference.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Everything shares one origin, so the Playground’s &lt;code dir=&quot;auto&quot;&gt;/api/*&lt;/code&gt; calls just work, and
links between the marketing page and the docs are plain root-absolute paths.&lt;/p&gt;
&lt;p&gt;Start it, and &lt;code dir=&quot;auto&quot;&gt;run.sh&lt;/code&gt; prints every route so you know exactly where to click:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;→ Site:        http://localhost:8092/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Playground:  http://localhost:8092/playground/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Docs:        http://localhost:8092/docs/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Blog:        http://localhost:8092/docs/blog/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;API ref:     http://localhost:8092/docs/api/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;See &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/docs/guides/the-site/&quot;&gt;The integrated site&lt;/a&gt; for how the routing works and how
to deploy it.&lt;/p&gt;</content:encoded><category>tooling</category><category>docs</category></item><item><title>Preview a new App Store &amp; Google Play version before upload</title><link>https://fighttechvn.github.io/app_marketing/docs/blog/preview-new-app-store-google-play-version/</link><guid isPermaLink="true">https://fighttechvn.github.io/app_marketing/docs/blog/preview-new-app-store-google-play-version/</guid><description>See exactly how your new app version looks on the App Store and Google Play — screenshots and metadata, per locale — before you upload a single file.

</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Previewing your new App Store and Google Play version&lt;/strong&gt; before upload catches
the mistakes that are expensive to fix once a build is in review: the wrong
screenshot order, a missing localized subtitle, a description that overflows.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;new-vs-current-side-by-side&quot;&gt;New vs Current, side by side&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The tool keeps two variants:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New&lt;/strong&gt; — the version you’re about to upload. Fill it with &lt;strong&gt;Try template&lt;/strong&gt;,
&lt;em&gt;Load images&lt;/em&gt;, or drag &amp;#x26; drop, then edit the text on the page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Current&lt;/strong&gt; — what’s live now, pulled from the stores via Sync.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Switch between them to see your changes in a realistic &lt;strong&gt;App Store&lt;/strong&gt; and &lt;strong&gt;Google
Play&lt;/strong&gt; layout — including the iPhone, iPad, and Android phone galleries, and every
localized field.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;review-the-diff-before-you-ship&quot;&gt;Review the diff before you ship&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Review Diff&lt;/strong&gt; compares Current → New in one dialog:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Text &amp;#x26; metadata&lt;/strong&gt; — per-locale field changes (name, subtitle, description…).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screenshots&lt;/strong&gt; — slot-by-slot visual comparison, with a fullscreen lightbox.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anything added, removed, or changed is flagged, so nothing slips through.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;try-it&quot;&gt;Try it&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Open the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/playground/&quot;&gt;Playground&lt;/a&gt;, build your New version, and hit &lt;strong&gt;Review
Diff&lt;/strong&gt;. For the full walkthrough see &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/usage/&quot;&gt;Usage&lt;/a&gt; and
&lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/the-site/&quot;&gt;The integrated site&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>app-store</category><category>google-play</category><category>preview</category><category>release</category></item><item><title>Preview your store listing before you ship</title><link>https://fighttechvn.github.io/app_marketing/docs/blog/preview-before-you-ship/</link><guid isPermaLink="true">https://fighttechvn.github.io/app_marketing/docs/blog/preview-before-you-ship/</guid><description>Why we built a local store-listing preview — sync live data, diff New vs Current, and verify keys before uploading anything.

</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Shipping a mobile update means juggling two pictures of your store listing: what’s
&lt;strong&gt;live now&lt;/strong&gt;, and what you’re &lt;strong&gt;about to upload&lt;/strong&gt;. It’s easy to upload the wrong
screenshot order, forget a localized description, or push a key that turns out to
be missing a permission.&lt;/p&gt;
&lt;p&gt;The store-preview tool puts both pictures side by side, locally, before anything
leaves your machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New&lt;/strong&gt; is what you’re about to submit — fill it from a template, from &lt;em&gt;Load
images&lt;/em&gt;, or drag &amp;#x26; drop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Current&lt;/strong&gt; is what’s live — pulled straight from App Store Connect and Google
Play with one &lt;strong&gt;Sync&lt;/strong&gt; click.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review Diff&lt;/strong&gt; shows exactly what changed, text and screenshots, per locale.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And because credentials are the usual pain point, there’s a &lt;strong&gt;Test keys&lt;/strong&gt; button
that verifies your App Store Connect key and Play service account against the live
APIs &lt;em&gt;before&lt;/em&gt; you save them.&lt;/p&gt;
&lt;p&gt;Start with the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/guides/setup/&quot;&gt;setup guide&lt;/a&gt;, then wire up your
&lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/reference/env-variables/&quot;&gt;environment variables&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>release</category><category>tooling</category></item><item><title>Store SEO audit — ASO checks for mobile app listings</title><link>https://fighttechvn.github.io/app_marketing/docs/blog/store-seo-aso-audit-mobile-listings/</link><guid isPermaLink="true">https://fighttechvn.github.io/app_marketing/docs/blog/store-seo-aso-audit-mobile-listings/</guid><description>Run a store SEO audit on your mobile app listing — title, subtitle and keyword limits plus ASO tips for the App Store and Google Play, per locale.

</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A &lt;strong&gt;store SEO audit&lt;/strong&gt; (App Store Optimization, or ASO) decides how easily users
find your app. Two listings with the same screenshots can rank very differently
based on how the title, subtitle, and keywords are written.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-the-audit-checks&quot;&gt;What the audit checks&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Toggle &lt;strong&gt;ASO checks&lt;/strong&gt; in the tool to scan your listing for both stores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Length limits&lt;/strong&gt; — App Store name (30) / subtitle (30) / keywords (100);
Google Play title (30) / short description (80) — flagged when empty or over.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keyword coverage&lt;/strong&gt; — primary terms present in the highest-impact fields.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-locale&lt;/strong&gt; — every locale audited separately, so a translated listing
doesn’t quietly lose its keywords.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;aso-tips-it-surfaces&quot;&gt;ASO tips it surfaces&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Put your strongest keyword near the &lt;strong&gt;start of the title&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Don’t repeat the app name in the keyword field — it’s wasted space.&lt;/li&gt;
&lt;li&gt;Use the subtitle / short description for a second keyword theme.&lt;/li&gt;
&lt;li&gt;Keep each locale genuinely localized, not a copy of English.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;try-it&quot;&gt;Try it&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Open the &lt;a href=&quot;https://fighttechvn.github.io/app_marketing/playground/&quot;&gt;Playground&lt;/a&gt;, turn on &lt;strong&gt;ASO checks&lt;/strong&gt;, and tune each field
until the warnings clear. Combine it with the
&lt;a href=&quot;https://fighttechvn.github.io/app_marketing/docs/blog/first-release-checklist-app-store-google-play/&quot;&gt;first-release checklist&lt;/a&gt;
for a listing that’s complete &lt;em&gt;and&lt;/em&gt; discoverable.&lt;/p&gt;</content:encoded><category>aso</category><category>seo</category><category>app-store</category><category>google-play</category></item></channel></rss>