Skip to content

Shipping to the App Stores

Glossary

175 terms from Shipping to the App Stores, in plain words, each with the chapter that teaches it.

A

A/B test
Showing your current listing (A) to some visitors and a changed one (B) to others, then counting which gets more installs. Kettle & Crane could use one to compare two first screenshots.
Account deletion
A way for users to delete the account they made in your app. Both stores require it, and Apple wants it inside the app (guideline 5.1.1(v)).
Account Holder
The person who enrolled the company in Apple's program, and the only one who can sign Apple's agreements. At Kettle & Crane that is Sam.
Adaptive icon
Android's icon format made of a foreground and a background layer, so phone makers can crop it to their own shapes. Keep the logo in the middle 66 x 66 dp.
Age rating
Apple's rating (4+, 9+, 13+, 16+ or 18+) worked out from a questionnaire about violence, gambling and similar content.
Alias
The name that identifies one key inside a keystore file. For example, Kettle & Crane's Android upload key uses the alias `upload`, and you give that name to `keytool` and to Android Studio when signing.
Alpha channel
The part of an image file that stores how see-through each pixel is. Apple's icon must have none, which `-alpha off` removes.
Android App Bundle (AAB)
The file you upload to Google Play, holding all your app's code and resources. Play builds smaller, device-specific installs from it.
Android Studio
Google's free tool for building Android apps. It includes the emulator, the Image Asset tool and a copy of keytool.
Android vitals
Play Console's page showing crashes, ANRs and other performance numbers from Android users who share diagnostics. It tracks the user-perceived crash and ANR rates.
ANR (Application Not Responding)
An Android freeze where the app doesn't respond to a tap or key press for 5 seconds, so the system shows an "isn't responding" dialog. The fix is to move slow work off the main thread.
App icon
The image representing the app. Apple needs one 1024 x 1024 PNG with no transparency and square corners; iOS rounds it.
App ID
Apple's record of an app's bundle ID and the capabilities switched on for it.
App Privacy details
The section of App Store Connect where you answer what data your app collects, for what purpose, whether it's linked to the user and whether it tracks.
App record
An app's entry in App Store Connect or Play Console, holding its builds, listing and settings. Create it before your first upload.
App Review
Apple's check, by a person, of every App Store version before it goes live.
App Review Board
The group that handles appeals of App Review decisions, through a form on Apple's contact page; one appeal per app.
App Review Guidelines
Apple's numbered rules that every app must follow to be approved for the App Store. Examples include 2.1 (completeness), 2.3 (accurate metadata), 4.2 (minimum functionality), 4.8 (login services), 5.1.1 (data collection, including account deletion) and 3.1.1 (in-app purchase).
App Review Information
The version-page section, hidden from customers, where you give the reviewer a demo account, contact details and notes.
App signing key
The key Play uses to sign the installs that reach users. Google creates and keeps it.
App Store Connect
Apple's website where you create apps, upload builds, run TestFlight, write listings and submit for review.
App Tracking Transparency (ATT)
Apple's permission prompt an app must show before it tracks people across other companies' apps and websites. Kettle & Crane doesn't track, so it never shows it.
App-building frameworks (SwiftUI, Jetpack Compose, React Native, Flutter)
Toolkits for writing the app itself. The App Store and Google Play only see the finished, signed build, so the steps for signing, uploading and getting through review are the same whichever one built the app.
Apple Developer Program
The paid membership ($99 a year) needed to publish on the App Store. You enroll as an individual or an organization.
Apple Pay
Apple's (and Google's) wallet payment methods, used in the shop's own checkout for physical goods. Apple Pay is also a capability that adds an entitlement.
Application ID
Android's permanent app ID, in reverse domain style, set in the module's Gradle file. It is Android's equivalent of the bundle ID.
Apply for production
The Play Console Dashboard button that new personal accounts use, after a closed test with 12 testers for 14 days, to request production access. Google usually replies within 7 days.
Archive
A release build of the iPhone app, with its debugging information, kept by Xcode and uploaded through the Organizer.
Argument
A value given to a script or function, which it reads as `$1`, `$2` and so on.
Auto-renewable subscription
An in-app purchase charged again every period until canceled, such as monthly brewing tips. Subscriptions live in a subscription group, the set of levels a customer can switch between.
Automatically manage signing
An Xcode setting that registers the App ID and creates and renews certificates and profiles for you.

B

Bad behavior threshold
The crash or ANR rate above which Play may show your app less often or warn users: 1.09% crashes and 0.47% ANRs overall, 8% on any one phone model.
bash
A command shell, the program that reads typed commands and runs them in a terminal. It is built into macOS and Linux, and Windows users can get it through WSL (Windows Subsystem for Linux) or Git Bash.
Beta App Review
Apple's check, against its review rules, of a build before external TestFlight testers get it. The first build added to a group gets a full review; internal testers skip it.
Build number
A counter for each upload that only the stores see (`CFBundleVersion` on Apple, `versionCode` on Android). It must be new, and higher, every time.
Bundle ID
Apple's permanent app ID in reverse domain style, such as `com.kettleandcrane.order`. The store uses it to recognize updates, so it can never change.

C

Capability
An Apple service the app uses, such as Push Notifications or Apple Pay, switched on for its App ID. Each adds an entitlement.
Category
The store section your app is filed under; Kettle & Crane uses Food & Drink on Apple.
cd
A terminal command that moves you into a folder so later commands work there.
Certificate
A file that ties your public key to your name, signed by someone the phone trusts, such as Apple.
Certificates, Identifiers & Profiles
The pages on Apple's developer account site where signing pieces are managed.
CI service
A service that automatically runs checks and builds on every code change; it could run the launch-kit checker.
Closed testing
A Play track for testers you choose by email list or Google Group. New personal accounts need 12 testers opted in for 14 days here.
Code signing
Marking a build with your private key so phones and stores know who made it and that it hasn't been changed.
Commission
The share of each sale the store keeps, such as 30% or 15% on Apple.
Consumable
An in-app purchase that is used up and bought again, such as game coins.
Content rating
Play's age rating, produced by the IARC questionnaire on the App content page. An app without one is removed from Play.
Conversion rate
The share of people who saw your app and then downloaded it. Kettle & Crane's first week was 930 ÷ 12,400, or 7.5%.
Crash
The app stopping suddenly because of an error the code didn't handle.
Crash reporting service
A library you add that sends every crash to your own dashboard within minutes, with stack trace, device and version. Examples are Crashlytics and Sentry.
Custom product pages
Up to 70 extra versions of your App Store page, each with its own screenshots and web address, for different audiences. It isn't a test.

D

D-U-N-S number
A free nine-digit company ID from Dun & Bradstreet that Apple and Google use to check an organization exists. It can take days, so start early.
Data inventory
A list with one row per kind of data that leaves the phone, why, and whether it's linked to the user. You answer store privacy forms from it.
Data safety
Play's form describing what data the app collects and shares, whether it's encrypted and how users delete their account.
Debug build
A debug build is for testing on your own device; a release build is smaller and faster and is the one you sign for the stores.
Demo account
A working login you give App Review so the reviewer can use the app, such as `review@kettleandcrane.com`. It must not expire.
Developer Program Policies
Google's rules for Play apps. Problems show on the Policy status page as rejected, removed or suspended.
Developer verification
An Android rule that certified phones in some countries only install apps from verified developers, going worldwide in 2027.
dp
Android's size-independent pixel unit. An adaptive icon layer is 108 x 108 dp, with only the middle 66 x 66 dp always visible.
dSYM
The debug-symbols file Xcode creates when you archive, used to turn crash addresses into function names and line numbers. Keep the archive.

E

echo
A command that prints text followed by a newline; `echo $?` prints the last command's exit code.
Emulator
Software that runs a virtual phone on your computer: Android Studio's emulator for Android and Xcode's Simulator for iPhone. Used to take screenshots.
Entitlement
A permission built into the signed app, added by each capability, that the system checks before allowing a service such as push notifications.
Event
A named action recorded by in-app analytics, such as `add_to_cart`, with details called parameters. Keep personal data out of them.
Exit code
A number a command ends with: 0 means success and anything else means failure. The checker uses 1 for problems found and 2 for wrong use.
Expedited review
A form to ask Apple to review a version faster, for a critical bug or dated event. Apple grants these when it can.
Export compliance
Apple's per-build question about the encryption your app uses. Until it's answered the build shows Missing Compliance; apps using only encryption built into iOS, like HTTPS, are typically exempt from export papers.

F

fastlane
A free, open-source tool that builds, signs and uploads to both stores and can update listings from text files.
Feature graphic
The 1024 x 500 JPEG or PNG banner, with no transparency, that Play shows on your store page.
Firebase Crashlytics
A free crash reporting service from Firebase with SDKs for Apple platforms, Android, Flutter and Unity.
for loop
A shell construct that runs the same command once for each item or file matching a pattern, such as `for f in listing/apple/*.txt; do wc -m "$f"; done`.
Free Apps Agreement
The agreement that comes with Apple membership and is enough to publish a free app.
Function
A named group of commands in a script that you run by writing its name, like `report` or `check_image`.
Funnel
The events that make up one job, in order, counted to show where people give up. Kettle & Crane's biggest leak is between checkout start and order placed.

G

Google Analytics for Firebase
A free in-app analytics tool you call from code to record events. Event names can be up to 40 characters.
Google Play Console
Google's website for publishing Android apps, with a one-time $25 fee. You sign up with a Google Account as personal or organization.
Gradle
The build tool Android Studio uses; app settings like `applicationId` and `versionCode` live in `app/build.gradle(.kts)`. Gradle Play Publisher is a plugin that uploads builds and listings.

H

Hang
Apple's term for the freeze that Android calls an ANR, caused by a busy main thread.
Homebrew
A Mac package installer used with `brew install imagemagick`.
Hotfix
An urgent fix: halt or pause the rollout, fix only the bug, raise the patch and build numbers, test and submit.

I

Icon Composer
Apple's free app, included with Xcode, that builds a layered icon (for glass, dark and tinted looks) as a single `.icon` file.
if
A shell statement that runs lines only when a test is true; `if [ test ]; then ... fi`. `-d`, `-f`, `-gt`, `-ne` and `!=` are tests used in the checker.
ImageMagick
A free command-line tool for making, checking and resizing images, run as `magick`.
Impressions
The number of times your app was seen in the store for more than one second.
In-app purchase
A payment through the store's own checkout, required for digital things used in the app, like Brew School, and not allowed for physical goods like coffee.
In-app updates
A Play feature letting an Android app offer an update without leaving the app, either flexible (background) or immediate (full screen).
Info.plist
The iOS app's settings file, a property list. It holds the encryption key and purpose strings.
Internal and external testers
On TestFlight, internal testers are your App Store Connect team (up to 100, no review) and external testers are anyone else (up to 10,000, after Beta App Review), invited by email or a public link anyone can open. Play's internal track also holds up to 100.
Internal app sharing
A Play feature for a quick one-off install: upload a bundle and share a download link, with no testing track.
ITSAppUsesNonExemptEncryption
An Info.plist key set to `false` to say the app uses only standard encryption such as HTTPS, which answers the export question for every build.

J

JDK (Java Development Kit)
A free Java toolkit that includes `keytool`. Android Studio ships with a copy.

K

Keychain
The macOS store for passwords and keys, where the private key for each Apple certificate sits.
Keystore
A password-protected file holding Android keys. Back it up and never put it in your code repository.
keytool
A command that comes with Java and makes and lists Android keys; `-genkeypair` creates an upload key and `-list -v` shows its fingerprint.
Keywords
Apple's hidden, comma-separated search words, limited to 100 bytes. Play has no keywords field.

L

License tester
A Google account added in Play Console that can make test purchases without being charged.
Localization
Providing the listing in another language; users see the one for their device language.

M

magick identify
An ImageMagick command that describes an image; with `-format` it prints only chosen details such as width, height and whether it's opaque.
Main thread
The part of the app that draws the screen and answers taps. Slow work on it makes the app freeze.
Managed publishing
A Play setting that holds approved changes until you click Publish changes, so a release, listing and screenshots go live together. It can't be used for a first publication.
Mapping file
R8's translation from short renamed code names back to real ones, so Android stack traces are readable. React Native's JavaScript uses source maps for the same job, and Flutter uses debug symbols.
Metadata Rejected
An App Review result meaning only the listing needs fixing, not the build.
Minimum Functionality
Guideline 4.2: an app that is mostly your website in a frame is rejected; it must do something useful the website doesn't.
Minimum-version check
A check at launch where the app asks your server for the oldest supported version and tells older apps to update.
mkdir
A command that makes a folder; `-p` also makes missing parent folders and doesn't complain if they exist.
Monochrome layer
A third, single-color adaptive icon layer that lets Android 13 and later tint the icon to match the wallpaper.

N

Non-consumable
An in-app purchase bought once and kept, such as Brew School; customers can restore it on a new phone.
Non-renewing subscription
An Apple subscription type giving access for a fixed time that doesn't renew by itself, such as one season of a course.

O

Obfuscation
Shrinking code and renaming classes to short names like `a.b`. R8 does it in Android release builds, making the app smaller but traces unreadable without a mapping file.
Opt-in
A tester accepting an invitation to a Play test track, usually through a link.
Organization account
A developer account for a company, which shows its legal name and needs a D-U-N-S number. An individual or personal account shows your own name.
Organizer
Xcode's window that lists archives, uploads builds with Distribute App and shows crash reports.

P

Paid Apps Agreement
The agreement the Account Holder signs, with tax forms and a bank account, to sell apps or in-app purchases on Apple.
Payments profile
What Google requires, set up from Play Console, in order to sell on Google Play.
Phased release
Apple's automatic 7-day rollout of an update to a growing share of automatic-update users (1% to 100%). You can pause it up to 30 days.
Play App Signing
Google's system where Google holds the app signing key while you sign uploads with your own upload key. Every new app uses it.
Play Billing Library
The code libraries your app uses to sell in-app purchases: StoreKit on Apple platforms and the Play Billing Library on Android.
Play icon
The 512 x 512 PNG, at most 1024 KB, that Play's listing needs; transparency is allowed.
Pre-launch report
Play's automatic test of your uploaded bundle on real devices, with a robot tapping through, reporting crashes and problems. Give it a test account to get past sign-in.
Pre-order
Apple's option letting people order an app up to 180 days before first release; Play's equivalent is pre-registration.
Pricing and Availability
The App Store Connect section where you set an app's price and the countries it's sold in; on Play, countries are on the Production page.
printf
A command that prints exactly what you give it with no newline added, so it's used when writing listing files to be counted.
Privacy manifest
A property-list file named `PrivacyInfo.xcprivacy` declaring tracking, collected data and required reason APIs for the app and its SDKs.
Privacy nutrition labels
The App Store's summary of data your app collects: Data Used to Track You, Linked to You and Not Linked to You.
Privacy policy
A public web page saying what data you collect and why. Both stores require one.
Private key
A private key is a secret file only you hold and use to sign; its partner public key can be shown to anyone and checks signatures but can't sign.
Product
Each thing sold by in-app purchase is a product with a permanent product ID you choose, such as `com.kettleandcrane.order.brewschool`; it can't be changed or reused. The reference name is a label only you see in App Store Connect.
Product page
What people see in the App Store before downloading; you fill it in on App Store Connect.
Product page optimization
Apple's A/B testing of up to three alternative treatments of your icon, screenshots and previews. The app must be live.
Product page views
The number of times your product page was opened.
Promotional text
A 170-character App Store field at the top of the description that you can change any time without a new review.
Property list
Apple's XML settings format where each `<key>` is followed by a value such as `<string>`, `<true/>`, `<array>` or `<dict>`.
Provisioning profile
An Apple file saying this App ID, signed with this certificate, may use these entitlements. Development profiles also list test devices.
Purpose string
A one-sentence reason in Info.plist that iOS shows when the app asks for a protected permission like location. Vague ones get rejected.
Push token
The address Apple or Google gives your app so your server can send it notifications. Push Notifications is also an Apple capability.

R

R8
The Android build tool that shrinks your code and renames classes; it also writes the mapping file. Turned on with `minifyEnabled` in the release build type.
Release configuration
The Xcode settings set meant for shipping, used when you archive.
Release notes
The text users see describing an update. It's 4,000 characters on Apple and 500 per language on Play, wrapped in a language tag.
Required reason APIs
System features that could help identify a device, such as file timestamps or `UserDefaults`, which you declare in the privacy manifest with a reason code like `CA92.1`.
Review prompt
The system window where people tap a star rating without leaving the app. You decide when to ask; the system decides whether to show it.
Role
A set of things a team member is allowed to do. App Store Connect uses roles like Admin and Customer Support; Play uses individually ticked permissions.

S

Sandbox account
A test Apple Account that buys without charge. StoreKit testing in Xcode needs no Apple connection at all, using a configuration file.
Script
A text file of shell commands that run in order, started with `bash` and its name.
Semantic versioning
Version numbers as major.minor.patch: raise the last for a fix (1.0.1), the middle for a feature (1.1.0), the first for a big change (2.0.0).
Sentry
A crash reporting service with a free tier and SDKs for iOS, Android, React Native and Flutter.
Service provider
On Play, a company that processes data only for you, such as a payment or crash service. Sending data to it counts as collected, not shared.
SHA-256 fingerprint
A short code computed from a certificate; a different key gives a different one. Compare it with the one on Play's Play app signing page.
Short description
Play's 80-character summary shown before users tap to read more; the full description allows 4,000 characters.
Sign in with Apple
Apple's privacy-protecting login option, which an app must offer alongside a third-party login such as Google or Facebook (guideline 4.8).
SKU
Your own internal code for an app in App Store Connect, like `KC-ORDER-IOS`, that customers never see.
Small Business Program
An Apple program for developers under $1 million in yearly proceeds, giving a 15% commission instead of 30%.
Stack trace
The list of functions the app was inside when it failed, innermost first; each line is a frame. Start at the first frame from your own code.
Staged rollout
Play releasing an update to a percentage of users that you raise yourself with Update rollout, or stop with Halt rollout.
Store listing
An app's public page in the store: name, description, icons and screenshots.
Store listing experiment
Play's A/B test of up to two variants of your icon, feature graphic, screenshots or descriptions.
Subtitle
A 30-character App Store line shown under the app name on the product page.
Symbolication
Turning memory addresses in a crash report back into function names, files and line numbers, using the dSYM.

T

Target audience and content
A Play form where you say which age groups the app is for; including children triggers Play's Families rules.
targetSdk
The newest Android version an app is built and tested for. Play currently requires Android 16, API level 36.
Terminal
The app where you type commands; the `$` prompt marks the start of a command and isn't typed.
TestFlight
Apple's beta testing service and app, for sending builds to internal and external testers. Builds expire after 90 days.
Testing tracks
Play's testing audiences: internal (up to 100 testers), closed (invited) and open (anyone).
Third-party SDK
Another company's library built into your app. The stores hold you responsible for the data it collects, and it ships its own privacy manifest.
Tracking
Combining your data about a user with other companies' data for targeted ads or ad measurement, or sharing it with a data broker.
Trader
Under the EU's Digital Services Act, someone selling as a business; Apple asks every developer to declare whether they are one.

U

Upload key
Your own key for signing builds you upload to Play. If lost, Google can reset it.
User-perceived crash rate
The share of daily active users who had at least one crash (or ANR) they were likely to notice; Play judges it on a 28-day average.

V

Variable
A named value in the shell, set with `name=value` (no spaces) and read with `$name`.
Version
The number customers see, such as 1.0.0, stored as `CFBundleShortVersionString` on Apple and `versionName` on Android.

W

wc
A command that counts characters in a file with `-m`, including a final newline; `wc -m < file` prints just the number.
Well-formed
XML where every tag is closed, in the right order. `xmllint` checks this.
What to Test
Notes you write for each TestFlight build saying what changed and what testers should try; Test Information is the one-time description, feedback email and demo account.
WSL
Windows Subsystem for Linux, installed with `wsl --install`, which gives Windows users bash. Git for Windows's Git Bash also works.

X

Xcode
Apple's tool for building iPhone apps. Xcode Cloud is Apple's build service, and EAS Submit uploads Expo apps to both stores.
xmllint
A command that checks XML is well-formed; with `--noout` it prints nothing if the file is fine, or the line number and error if not.