StoreKit configuration file viewer and checker
Drop the .storekit file from your Xcode project to see every product in it: consumables, non-consumables, non-renewing subscriptions and subscription groups, each with its product ID, reference name, price, Family Sharing, and display name and description per language. Subscriptions also show their level, renewal period, introductory offer, promotional offers, offer codes and win-back offers. The check finds duplicate IDs, empty names, missing languages, plans that share a level, zero prices and text over App Store Connect's limits. You can download a CSV or copy a text summary. Nothing is uploaded.
Your StoreKit configuration file
Drop a .storekit file here, open it, or paste its contents. It is read in this page and never uploaded.
Drop, open or paste a .storekit file to see its products and checks.
How it works
- •A .storekit file is JSON. Xcode keeps one-time products in "products", non-renewing subscriptions in "nonRenewingSubscriptions" and subscriptions inside "subscriptionGroups", next to a "settings" block for the test storefront, locale, time rate and simulated errors. The page reads those keys and shows anything else in the file as it is, so nothing is hidden.
- •We learned the format from more than two hundred real configuration files written in format versions 2.0 to 4.0, and checked the key names against the ones macOS's StoreKit test service reads.
- •The length limits come from Apple's App Store Connect help page "In-App Purchase information": display name 2 to 30 characters, description up to 45, reference name up to 64, product ID up to 100 letters, numbers, hyphens, periods and underscores. Apple publishes no length limit for subscription display names, so the page does not invent one.
- •"Missing localization" means a product lacks a language that other products in the same file have. Locales are compared exactly as written, so en_US and en count as different.
- •Two subscriptions at the same level are a note when their periods differ (Apple allows this for the same service at different durations) and a warning when the period is the same too.
- •Product IDs that are not in reverse-DNS style get a warning only. Apple does not require that style.
What it does not do
- •It does not connect to App Store Connect. It cannot tell whether your products exist there, are approved, or have the same IDs and prices.
- •It does not test purchases. Use Xcode's StoreKit testing (choose the file in your scheme's Run options) or the sandbox for that.
- •It does not edit or save the file. Fix problems in Xcode's StoreKit editor.
- •Prices in the file are placeholders for testing; they are not App Store price points, and the page does not check them against Apple's price list.
- •It does not check the text for words or symbols App Review may refuse, and it does not check subscription display name length, because Apple publishes no limit for it.
Questions
- What is a StoreKit configuration file?
- A .storekit file in your Xcode project that describes your in-app purchases and subscriptions for local testing. When you choose it in your scheme's Run options, StoreKit uses it instead of the App Store, so you can buy, renew and refund without a network or an App Store Connect setup. Nothing in it is uploaded with your app.
- Why does the check say my products are under a key StoreKit does not read?
- Xcode writes one-time products to "products", non-renewing subscriptions to "nonRenewingSubscriptions" and subscriptions to "subscriptionGroups". Files written by hand or by other tools sometimes use names such as "nonConsumableProducts" or "consumableProducts". Those keys are not in the list StoreKit's test service reads, so the products may not load when you test. Add them again in Xcode's editor to be safe.
- Can two subscriptions in one group have the same level?
- Yes. Apple says you can put subscriptions with the same content and different durations, such as monthly and yearly, at the same level; switching between them is a crossgrade. Give a plan that offers more a higher level (level 1 is the highest). Two plans with the same level and the same period are flagged, because that is usually a slip.
- How long can an in-app purchase name and description be?
- App Store Connect's "In-App Purchase information" page says the display name must be 2 to 30 characters and the description at most 45. The reference name, which customers never see, can be up to 64 characters, and the product ID up to 100. The check uses these numbers for consumables, non-consumables and non-renewing subscriptions.
- Do product IDs have to look like com.example.app.pro?
- No. App Store Connect only asks for letters, numbers, hyphens, periods and underscores, up to 100 characters, unique within your app. Reverse-DNS style is a habit that keeps IDs readable, which is why the page warns but does not count it as an error.
- Is my file uploaded anywhere?
- No. The file is read by JavaScript in this page and never sent to a server. You can disconnect from the internet after the page has loaded and it still works.