From apple-kit-skills
Optimizes App Store product pages for search visibility and conversions. Covers ASO keyword strategy, title/subtitle optimization, descriptions, promotional text, screenshots, Custom Product Pages, in-app events, review prompts, A/B testing, localization, and ratings management.
npx claudepluginhub dpearson2699/swift-ios-skills --plugin all-ios-skillsThis skill uses the workspace's default tool permissions.
Search visibility and conversion optimization for App Store product pages. This skill covers strategic metadata decisions -- which keywords to target, how to structure descriptions for conversion, and how to use Custom Product Pages and in-app events for discoverability. For metadata compliance rules (character limits, screenshot device requirements, rejection triggers), see the `app-store-revi...
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Search visibility and conversion optimization for App Store product pages. This skill covers strategic metadata decisions -- which keywords to target, how to structure descriptions for conversion, and how to use Custom Product Pages and in-app events for discoverability. For metadata compliance rules (character limits, screenshot device requirements, rejection triggers), see the app-store-review skill.
ASO has two pillars:
Apply this skill when a developer asks about improving discoverability, keyword strategy, download conversion, or any product page element that affects either pillar.
For metadata format rules and compliance guardrails, see the app-store-review skill. This skill assumes the developer is working within those constraints and focuses on strategy.
Apple indexes the app name and subtitle for search. Together they provide 60 characters (30 + 30) of indexed, high-visibility keyword real estate.
| Pattern | When to use | Example |
|---|---|---|
| Brand -- Keyword | Established brand with recognition | Notion -- Notes & Docs |
| Keyword -- Brand | New app competing on category terms | Budget Tracker -- Pennywise |
| Brand + Keyword blend | Brand name contains a keyword naturally | Headspace: Sleep & Meditation |
The keyword field is 100 characters, comma-separated, no spaces after commas. See the app-store-review skill for the full format rules. This section focuses on which keywords to choose and how to prioritize them.
Rank candidate keywords by three factors:
| Factor | Weight | Signal |
|---|---|---|
| Relevance | Highest | Does the keyword describe what the app actually does? |
| Search volume | Medium | Are users actually searching for this term? |
| Competition | Lower | How many apps target this keyword? |
Relevance always wins. A high-volume keyword that does not describe the app will get impressions but not conversions.
See: references/keyword-research-methodology.md for the full research process, scoring framework, and indexing details.
The App Store description does not affect search ranking -- Apple does not index it for keyword matching. It does affect conversion: users who expand the description are evaluating whether to download.
Promotional text is the only metadata field changeable without submitting a new binary. It appears above the description and is limited to 170 characters.
Update promotional text to match current context:
| Trigger | Example text |
|---|---|
| Feature launch | New: Collaborate in real time with shared workspaces |
| Seasonal event | Plan your holiday travel -- route sharing now available |
| Award or press | Winner of Apple Design Award 2025 |
| Sale or promotion | Premium features free through January |
| In-app event | Join the Spring Challenge -- starts March 15 |
Do not leave promotional text static across releases. If there is nothing timely to promote, rotate between the app's strongest selling points.
Most users never scroll past the first 3 visible screenshots. These slots determine whether a user engages with the full product page or moves on.
| Slot | Purpose |
|---|---|
| 1 | Primary value proposition -- the single best reason to download |
| 2 | Core differentiator -- what sets this app apart from competitors |
| 3 | Secondary feature -- the next strongest selling point |
| 4+ | Supporting features, social proof, or edge cases |
If a preview video is present, it occupies the first slot. The first frame becomes the poster image when autoplay is disabled -- choose a frame that works as a standalone screenshot.
For screenshot device requirements and compliance rules, see the app-store-review skill.
StoreKit provides two APIs for requesting ratings:
SwiftUI -- use RequestReviewAction via the environment:
@Environment(\.requestReview) private var requestReview
func onTaskCompleted() {
requestReview()
}
UIKit -- use AppStore.requestReview(in:):
if let scene = view.window?.windowScene {
AppStore.requestReview(in: scene)
}
| Good triggers | Bad triggers |
|---|---|
| After completing a meaningful task | On first launch |
| After achieving a milestone or streak | Immediately after an error or crash |
| After a positive in-app moment | During onboarding |
| After the user has been active for several sessions | In response to a button tap |
Do not gate the prompt behind a "Rate this app?" dialog -- Apple discourages intercepting the system prompt and may reject apps that pre-screen.
For a settings screen or "Rate us" option, link directly to the App Store review page using the URL format:
https://apps.apple.com/app/id{APP_ID}?action=write-review
This opens the review writing screen directly and is not subject to the 3x/year system limit.
For the full StoreKit API surface, see the storekit skill.
Custom Product Pages allow up to 35 variant product pages per app. Each variant can have different screenshots, app preview videos, and promotional text -- tailored to a specific audience or acquisition channel.
| Audience | Customization |
|---|---|
| Paid search ads | Screenshots matching the search intent of the ad group keywords |
| Social media campaign | Screenshots and captions tailored to the campaign creative |
| Feature-specific landing | Lead screenshot showing the specific feature being promoted |
| Seasonal campaign | Seasonal screenshots and promotional text |
See: references/product-page-variants.md for setup details, URL structure, and campaign mapping strategy.
In-app events surface in App Store search results, on the Today tab, and in personalized recommendations. They increase visibility during the event window and can re-engage lapsed users.
| Badge | When to use |
|---|---|
| Challenge | Time-limited goals users can work toward |
| Competition | Head-to-head or leaderboard contests |
| Live Event | Real-time experiences (concerts, sports, streams) |
| Major Update | Significant new features or redesigns |
| New Season | Seasonal content refreshes |
| Premiere | First-time content availability |
| Special Event | Limited-time promotions or celebrations |
| Field | Limit |
|---|---|
| Event name | 30 characters |
| Short description | 50 characters |
| Long description | 120 characters |
| Event card image | Required (1920x1080 or similar 16:9) |
See: references/product-page-variants.md for event scheduling templates.
App Store Connect provides native A/B testing for product page elements.
Only one treatment can be tested at a time. The default product page serves as the control.
Average rating affects both conversion and search ranking. The threshold effects are significant: apps below 4.0 stars see measurably lower conversion, and apps above 4.5 stars convert noticeably better.
When submitting a new version, you can choose to reset the displayed rating. Use this strategically:
| Situation | Recommendation |
|---|---|
| Current rating is significantly below the app's quality after major improvements | Reset |
| Current rating is strong (4.5+) | Do not reset |
| Bug fix release with no quality improvement | Do not reset |
| Major redesign with mixed early feedback expected | Wait for stabilization, then reset on a subsequent update |
Localizing ASO is not the same as translating the app UI. Keyword strategy, descriptions, and screenshot captions must be researched and written per market, not machine-translated from the primary locale.
For in-app string localization (String Catalogs, FormatStyle, right-to-left layout), see the ios-localization skill.
requestReview() after an error, a failed transaction, or during onboarding generates low ratings.keyword1,keyword2 not keyword1, keyword2.requestReview() is placed after a positive user moment, not on first launch or after errorsapp-store-review skill checklist before submission