General

Shipping Image Generation Inside a Mobile App: The Constraints Nobody Mentions Until Launch

Adding a “generate an image” button to a mobile app looks like a small feature. The API call is three lines. The complications arrive afterwards, and they are almost all about latency, cost control and store policy rather than about the model itself.

Here is what teams building this actually run into.

Nothing Runs on the Phone

The first assumption worth discarding is that a modern device can do this locally. Light edits can — small object removal, background blur, upscaling. Creating a genuinely new image is a network request to a data centre, which means your feature inherits every property of a remote dependency.

It fails on poor connections. It has variable latency measured in seconds to a minute. It costs money on every tap. It can be rate limited during a traffic spike. Design the feature as an asynchronous, cancellable, retryable job from day one, because retrofitting that after users complain is a rewrite of your UI layer.

Latency Is a Product Problem, Not a Loading Spinner

Generation takes anywhere from a few seconds to a minute depending on model and settings. On mobile, that is long enough that the user will background your app, and on iOS in particular that can mean your request completes into nothing.

The pattern that works: submit the job, return the user to a usable screen immediately, deliver the result through a notification or a gallery that fills in. The pattern that generates one-star reviews: a modal spinner blocking the screen for forty seconds.

A draft mode helps here as much as it helps cost. A fast low-resolution preview in a few seconds, then an optional high-quality render, keeps the interaction feeling responsive even when the good render is slow.

The Cost Structure Mobile Teams Underestimate

Unlike most of the mobile stack, this is not a flat monthly fee. Generation is billed per image, from fractions of a cent to a few tens of cents depending on resolution and quality, through platforms that expose several models behind a single account. Published rates for the GPT Image 2.5 API and comparable models sit openly on those platforms, which lets you model unit economics before launch rather than after.

Two numbers decide whether the feature is viable. The first is the attempt multiplier: nobody keeps the first output, and real usage runs three to eight generations before a user is satisfied. The second is the share of users who never convert. A free tier that allows unlimited attempts will be found by exactly the users who will never pay, and they will use it enthusiastically.

Practical defence: a per-user daily cap, a global daily spend cap that fails closed, draft-quality by default, and full quality behind an explicit action. None of that is hostile to users; it is what keeps the feature affordable enough to keep running.

Store Policy Will Find You

Both major app stores have tightened rules around user-generated visual content. If your app lets users type arbitrary prompts and get images back, you are running a content generation platform, and the review process will treat you as one.

Expect to need content filtering on input and output, a reporting mechanism, and an age rating that reflects the capability rather than the intent. Teams that ship this without moderation get rejected, and the rejection usually arrives on the third submission when it is most expensive.

If the feature does not need free-form prompts — if it is applying a style to a user photo, or generating a background from a fixed set of options — constrain it. A closed prompt space removes most of the moderation burden and most of the review risk.

What to Tell Users It Cannot Do

Setting expectations inside the UI reduces support volume more than any FAQ.

Text inside generated images is unreliable across every model available. If your users want a poster with words on it, generate the background and composite the text in your own layer.

Consistency across multiple images is hard. If users expect the same character across a sequence, they will be disappointed, and no amount of prompt guidance fixes it.

Real people, real products and real places come out approximate. For an app where users generate images of themselves or their belongings, this is the number one source of confused support tickets.

A Viable Shape

The version that survives contact with real users tends to be narrow: a constrained prompt space or style presets rather than a blank text box, draft-then-final quality, asynchronous delivery, hard spend caps, and honest in-app copy about what the output will and will not be.

That is a smaller feature than the one usually specified, and it is the one that ships, passes review, and does not quietly consume the margin on every free user.