Publishing an AI-built app on the App Store and Google Play
AI tools produce a working prototype in a few days. Between that prototype and an app accepted by Apple and Google, there are steps these tools do not take for you. Here they are, in the order they block.
First, what kind of app do you have?
It all depends on what the tool generated. Lovable and Bolt most often produce a web application, which opens in a browser. Rork generates a React Native project with Expo, which is a real mobile app. With Cursor, you choose the technology yourself.
The difference matters: the App Store and Google Play do not accept a web address, they accept a compiled and signed application file. A React Native project compiles as it is. A web application first has to become a mobile app, either wrapped in a native shell or rebuilt in React Native.
Apple rejects apps that only display a website and add nothing to it: this is rule 4.2 of its guidelines, known as "minimum functionality". For a simple web app, the shell is rarely enough. It takes features that belong on a phone, such as notifications, the camera or offline use.
The developer accounts
- Apple Developer Program: 99 dollars a year. You also need a Mac to compile the app, or an online build service.
- Google Play Console: 25 dollars, paid once.
On Google Play, a personal account created since November 2023 must first have the app tested by at least 12 people for 14 days in a row before it can be published to everyone. A company account skips this step. Plan for it in your schedule.
Create these accounts in your own name or your company's: the app and its users belong to you, not to your contractor.
What Apple and Google check
- An online privacy policy, and the forms that declare the data collected: privacy labels at Apple, the "Data safety" section at Google.
- Account deletion: if people can create an account in the app, they must be able to delete it from the app. Google also asks for a web page to do it.
- A demo account: if the app requires a sign-in, the review team must be able to get in.
- Payments: selling digital content or a digital subscription goes, as a rule, through Apple's in-app purchase and Google Play's billing. A card payment inside the app for something digital is a classic reason for rejection. Physical goods and services are paid through a regular payment provider.
- Sign-in: if you offer "Sign in with Google", Apple also asks for an equivalent option that protects privacy, in practice "Sign in with Apple".
- A complete app: no empty screen, no placeholder content, no crash at launch. This is a very common reason for rejection.
What AI often leaves behind
Before sending the app to review, four points deserve a developer's eye, because they do not show on screen.
- API keys in the app code: anything inside the app can be read by someone who decompiles it. Secret keys belong on a server.
- Database access rules: without them, a signed-in user can read or change other people's data.
- Accounts and payments: email confirmation, password reset, a subscription checked on the server and not only in the app.
- Stability on real phones: slow network, offline mode, older models, the back button on Android.
The listing and the submission
Each store asks for a listing: name, description, keywords, screenshots in the right sizes, icon, age rating. Google Play adds a feature graphic. A careful listing matters as much as the app: it is what people see before they download.
Then comes the review. Allow a few days, and one round trip if a point is rejected: the rejection comes with the rule concerned, you fix it, you send it again.
What we do
With the AI-built app rescue, we review the code, hand over a written report, fix security, crashes and payments, then publish the app: from €2,900 excl. VAT, in 1 to 3 weeks.
If your app is already solid and only the release is missing, App Store and Google Play publishing covers the accounts, listings, screenshots, forms and submission: €990 excl. VAT, fixed price.
And if the prototype mostly served to validate the idea, starting again from a clean base is sometimes faster. That is what the app launch is for.