@mmerterden/multi-agent-pipeline 20.7.0 → 20.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +0 -10
- package/docs/facts.json +1 -1
- package/manifest.json +266 -267
- package/package.json +2 -2
- package/pipeline/scripts/_notices.mjs +1 -1
- package/pipeline/skills/.skill-manifest.json +68 -68
- package/pipeline/skills/shared/README.md +70 -70
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
- package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
- package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
- package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
- package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
- package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
- package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
- package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
- package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
- package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
- package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
- package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
- package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
- package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
- package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
- package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
- package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
- package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
- package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
- package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
- package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
- package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
- package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md
CHANGED
|
@@ -1,191 +1,168 @@
|
|
|
1
1
|
# Product Page Variants
|
|
2
2
|
|
|
3
|
-
Custom Product Pages, product page optimization (A/B testing), and in-app event configuration for App Store discoverability and conversion.
|
|
4
|
-
|
|
5
|
-
## Contents
|
|
6
|
-
|
|
7
|
-
- [Custom Product Pages](#custom-product-pages)
|
|
8
|
-
- [Product Page Optimization Tests](#product-page-optimization-tests)
|
|
9
|
-
- [In-App Event Configuration](#in-app-event-configuration)
|
|
10
|
-
- [Screenshot Caption Copywriting](#screenshot-caption-copywriting)
|
|
11
|
-
|
|
12
3
|
## Custom Product Pages
|
|
13
4
|
|
|
14
|
-
###
|
|
5
|
+
### Setting one up
|
|
15
6
|
|
|
16
|
-
1.
|
|
17
|
-
2.
|
|
18
|
-
3.
|
|
19
|
-
|
|
20
|
-
|
|
7
|
+
1. In App Store Connect, open the app and choose Custom Product Pages.
|
|
8
|
+
2. Give the page a reference name (only your team sees it) and pick a locale.
|
|
9
|
+
3. Decide what differs from the default page: screenshots, preview videos,
|
|
10
|
+
promotional text, search keywords.
|
|
11
|
+
4. Submit it. App Review checks custom pages the same way it checks versions.
|
|
12
|
+
5. After approval the page is reachable through its own URL and, when keywords
|
|
13
|
+
are assigned, through search.
|
|
21
14
|
|
|
22
|
-
### URL
|
|
23
|
-
|
|
24
|
-
Custom Product Pages use the format:
|
|
15
|
+
### URL
|
|
25
16
|
|
|
26
17
|
```
|
|
27
18
|
https://apps.apple.com/app/id{APP_ID}?ppid={CUSTOM_PAGE_ID}
|
|
28
19
|
```
|
|
29
20
|
|
|
30
|
-
The `ppid` parameter
|
|
31
|
-
|
|
32
|
-
- Apple Search Ads ad group URLs
|
|
33
|
-
- Social media campaign links
|
|
34
|
-
- Email marketing campaigns
|
|
35
|
-
- Web landing pages
|
|
36
|
-
- QR codes in physical marketing
|
|
37
|
-
|
|
38
|
-
### Search visibility and deep links
|
|
39
|
-
|
|
40
|
-
- You can create up to 70 Custom Product Pages per app.
|
|
41
|
-
- Assign keywords from the latest approved app version to make an approved, visible custom page appear for matching App Store searches instead of the default page.
|
|
42
|
-
- Use unique keyword sets per custom page so App Store search can choose the most relevant page.
|
|
43
|
-
- Optional app deep links can send users on iOS 18 or iPadOS 18 or later to specific in-app content after they tap Open. Deep links must be approved with the custom page before they work for users.
|
|
44
|
-
|
|
45
|
-
### Campaign-to-page mapping
|
|
46
|
-
|
|
47
|
-
Plan Custom Product Pages around distinct acquisition channels:
|
|
48
|
-
|
|
49
|
-
| Channel | Page name convention | Screenshot strategy |
|
|
50
|
-
|---------|---------------------|---------------------|
|
|
51
|
-
| Search Ads -- brand terms | `Search-Brand` | Highlight brand trust and breadth |
|
|
52
|
-
| Search Ads -- feature terms | `Search-{Feature}` | Lead with the specific feature the user searched for |
|
|
53
|
-
| Search Ads -- competitor terms | `Search-Competitor` | Emphasize differentiators vs. category norms |
|
|
54
|
-
| Social -- Instagram/TikTok | `Social-Visual` | Visual-first screenshots matching social creative style |
|
|
55
|
-
| Social -- Twitter/X | `Social-Utility` | Feature-focused, less visual polish |
|
|
56
|
-
| Email -- existing users | `Email-Upgrade` | New feature highlights for re-engagement |
|
|
57
|
-
| Web -- blog/PR | `Web-Editorial` | Award badges, press quotes, credibility signals |
|
|
21
|
+
The `ppid` parameter picks the custom page. Put the URL in Apple Ads ad groups,
|
|
22
|
+
social posts, email campaigns, landing pages and printed QR codes.
|
|
58
23
|
|
|
59
|
-
###
|
|
24
|
+
### Limits and search
|
|
60
25
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
26
|
+
- Up to 70 custom pages per app.
|
|
27
|
+
- Assigned keywords must come from the keyword set of the most recently
|
|
28
|
+
approved app version. A matching
|
|
29
|
+
search can then show the approved, visible custom page in place of the
|
|
30
|
+
default one.
|
|
31
|
+
- Give each page its own keyword set so search can choose the best match.
|
|
32
|
+
- A page can carry a deep link that sends people running iOS 18,
|
|
33
|
+
iPadOS 18 or newer straight to a given screen in the app when they tap Open. The deep link is
|
|
34
|
+
approved together with the page.
|
|
65
35
|
|
|
66
|
-
|
|
36
|
+
### One page per channel
|
|
67
37
|
|
|
68
|
-
|
|
38
|
+
| Channel | Page name | Emphasis |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| Apple Ads, brand terms | `Search-Brand` | Trust in the brand, breadth of features |
|
|
41
|
+
| Apple Ads, feature terms | `Search-{Feature}` | The searched feature first |
|
|
42
|
+
| Apple Ads, competitor-category terms | `Search-Alternative` | What sets the app apart from category norms |
|
|
43
|
+
| Short-video and photo social platforms | `Social-Visual` | Strong visuals first |
|
|
44
|
+
| Text-first social platforms | `Social-Utility` | Features and utility, less polish |
|
|
45
|
+
| Email to current users | `Email-Upgrade` | What is new, reasons to come back |
|
|
46
|
+
| Blog posts and press | `Web-Editorial` | Awards, press quotes, credibility |
|
|
69
47
|
|
|
70
|
-
|
|
48
|
+
### Upkeep
|
|
71
49
|
|
|
72
|
-
|
|
50
|
+
- Review custom pages every quarter and remove those for finished campaigns.
|
|
51
|
+
- In App Analytics, compare each page's conversion with the default page;
|
|
52
|
+
figures show up after five or more first-time downloads are credited to it.
|
|
53
|
+
- Leave room below the 70-page limit for seasonal and one-off campaigns.
|
|
73
54
|
|
|
74
|
-
|
|
75
|
-
- **Treatment:** Alternate app icon that [describes the specific difference].
|
|
76
|
-
- **Duration:** 7-14 days minimum.
|
|
77
|
-
- **Success metric:** Conversion rate (impressions to first-time downloads).
|
|
55
|
+
## Product Page Optimization tests
|
|
78
56
|
|
|
79
|
-
|
|
57
|
+
A test compares the original page with up to three treatments. Keep to one
|
|
58
|
+
hypothesis per test so the result is readable.
|
|
80
59
|
|
|
81
|
-
|
|
82
|
-
- **Treatment:** Reorder the first 3 screenshots.
|
|
83
|
-
- **Duration:** 7-14 days minimum.
|
|
84
|
-
- **Success metric:** Conversion rate.
|
|
60
|
+
### Test patterns
|
|
85
61
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- **Success metric:** Conversion rate.
|
|
62
|
+
| Test | Hypothesis | Treatment | Run for | Metric |
|
|
63
|
+
|---|---|---|---|---|
|
|
64
|
+
| Icon | A different icon stands out more in search and on shelves | An alternate app icon | At least 7 to 14 days | Conversion from impression to first-time download |
|
|
65
|
+
| Screenshot order | Leading with a different feature converts better | The first three screenshots reordered | At least 7 to 14 days | Conversion rate |
|
|
66
|
+
| Screenshot copy | Benefit captions beat feature captions | New captions on the first three screenshots | At least 7 to 14 days | Conversion rate |
|
|
92
67
|
|
|
93
68
|
### Running a test
|
|
94
69
|
|
|
95
|
-
1.
|
|
96
|
-
2.
|
|
70
|
+
1. Open Product Page Optimization in App Store Connect.
|
|
71
|
+
2. Create up to three treatments and pick what they change: icon, screenshots
|
|
72
|
+
or preview video.
|
|
97
73
|
3. Upload the treatment assets.
|
|
98
|
-
4. Set the
|
|
99
|
-
5.
|
|
100
|
-
6. Start the test and
|
|
101
|
-
|
|
102
|
-
###
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
74
|
+
4. Set the share of traffic in the test; it is split evenly among treatments.
|
|
75
|
+
5. Pick the localizations; all are included by default.
|
|
76
|
+
6. Start the test and follow it in App Analytics.
|
|
77
|
+
|
|
78
|
+
### Reading results
|
|
79
|
+
|
|
80
|
+
- A test runs for at most 90 days or until you stop it.
|
|
81
|
+
- App Store Connect reports conversion for the original and each treatment with
|
|
82
|
+
a confidence interval, after the test has been credited with five or more
|
|
83
|
+
first-time downloads.
|
|
84
|
+
- Do not apply a treatment that has not reached 90% confidence.
|
|
85
|
+
- At scale, a lift of 2 to 5% in conversion is worth having.
|
|
86
|
+
- If App Store Connect marks the test as likely inconclusive, the traffic or
|
|
87
|
+
the difference is too small to reach confidence within 90 days. Try a bolder
|
|
88
|
+
change or a period with more traffic.
|
|
89
|
+
- After applying a winner, let at least one release cycle pass before testing
|
|
90
|
+
again.
|
|
91
|
+
|
|
92
|
+
### Constraints
|
|
93
|
+
|
|
94
|
+
- An app can run only one test at any moment.
|
|
95
|
+
- Custom pages, Apple Watch product pages and iMessage product pages cannot be
|
|
96
|
+
tested.
|
|
97
|
+
- Apps with little traffic may take a long time to reach 90% confidence or
|
|
98
|
+
never get there.
|
|
99
|
+
- A treatment icon must already be in the binary of the version live on the
|
|
100
|
+
store.
|
|
101
|
+
- Applying a treatment applies its screenshots and previews. An icon that wins
|
|
102
|
+
only becomes the default for everyone when a later app version makes it the
|
|
103
|
+
primary icon.
|
|
104
|
+
|
|
105
|
+
## In-App Event configuration
|
|
106
|
+
|
|
107
|
+
| Field | Limit | Advice |
|
|
108
|
+
|---|---|---|
|
|
109
|
+
| Event name | 30 characters | Specific and active: "Autumn Trail Challenge" beats "Our Autumn Event" |
|
|
110
|
+
| Short description | 50 characters | One sentence that sells the event on its card |
|
|
111
|
+
| Long description | 120 characters | What happens and what participants get |
|
|
112
|
+
| Event card media | 16:9, 1920 x 1080 | High contrast, readable at small size; avoid text smaller than about 24 pt |
|
|
113
|
+
| Event details page media | 9:16, 1080 x 1920 | Shown when someone opens the event |
|
|
114
|
+
| Badge | Preset list | The type that matches the event (see the badge list in SKILL.md) |
|
|
115
|
+
| Deep link | Optional URL | Opens the event content inside the app |
|
|
116
|
+
|
|
117
|
+
### Scheduling
|
|
118
|
+
|
|
119
|
+
Run events back to back so there is always one live:
|
|
120
|
+
|
|
121
|
+
| Weeks | Event | Badge |
|
|
122
|
+
|---|---|---|
|
|
123
|
+
| 1 and 2 | Step count challenge | Challenge |
|
|
124
|
+
| 3 and 4 | New route planner release | Major Update |
|
|
125
|
+
| 5 and 6 | Seasonal trail collection | Special Event |
|
|
126
|
+
|
|
127
|
+
- Let consecutive events overlap by a day or two so there is no gap without a
|
|
128
|
+
card.
|
|
129
|
+
- Publishing can happen as early as 14 days ahead of the start time.
|
|
130
|
+
- An event lasts at least 15 minutes and at most 31 days.
|
|
131
|
+
- Up to 10 events can be published on the store at once, and up to 15 approved
|
|
132
|
+
events can be kept in App Store Connect.
|
|
133
|
+
- Events show in search and on the product page while active and disappear
|
|
134
|
+
automatically when they end.
|
|
135
|
+
- App Review may reject events that have no real content behind them.
|
|
136
|
+
|
|
137
|
+
### Being found
|
|
138
|
+
|
|
139
|
+
- The name and short description are the visible search copy; use words that
|
|
140
|
+
match the real content and what people look for.
|
|
141
|
+
- The badge sits prominently on the card, so it must describe the event
|
|
142
|
+
honestly.
|
|
143
|
+
- Beyond search and the product page, events may be picked by Apple's editors
|
|
144
|
+
for the Today tab.
|
|
145
|
+
|
|
146
|
+
## Writing screenshot captions
|
|
147
|
+
|
|
148
|
+
| Feature label | Benefit caption |
|
|
149
|
+
|---|---|
|
|
150
|
+
| Calendar View | Every deadline, on time |
|
|
151
|
+
| Dark Mode | Comfortable to read at any hour |
|
|
152
|
+
| Cloud Sync | Your files on every device |
|
|
153
|
+
| Analytics Dashboard | Know what is working |
|
|
154
|
+
| Collaboration Tools | Edit together in real time |
|
|
155
|
+
| Offline Mode | Keeps working with no signal |
|
|
156
|
+
| Custom Themes | Make it look like yours |
|
|
157
|
+
| Push Notifications | Hear about it first |
|
|
158
|
+
|
|
159
|
+
Three patterns that work:
|
|
160
|
+
|
|
161
|
+
1. **Say the result.** "Finish every run stronger" beats "GPS Run Tracker".
|
|
162
|
+
2. **Name the pain.** "No more lost receipts" beats "Receipt Scanner".
|
|
163
|
+
3. **Show the crowd.** "Trusted by 5M cooks" beats "Popular Recipes".
|
|
164
|
+
|
|
165
|
+
The same screenshots can carry different captions on different custom pages:
|
|
166
|
+
goal-driven lines for a fitness search page, mood and look for a visual social
|
|
167
|
+
page, and "what is new since you left" for an email to lapsed users. Change the
|
|
168
|
+
emotional angle for the channel and keep the screen content the same.
|