GEMINI LABJP
SUNSET — The image generation models shut down today, August 17: imagen-4.0-generate-001, ultra, fast, and the Gemini 3 Image family, and calls after that fail with a hard errorSCALE — Gemini crossed one billion monthly active users on August 11ASSISTANT — Starting September 4, Gemini replaces Google Assistant on Android and Wear OS, a rollout expected to take several weeks and one you cannot reverse on a deviceDEVICES — The change covers Android phones and tablets, Wear OS watches, Assistant-enabled headphones, and phone-projected Android Auto; cars with Google built-in keep workingSPARK — Since August 13, Gemini 3.7 Flash has powered Gemini Spark for AI Pro and Ultra subscribers across more than 160 countriesPRICE — Gemini 3.7 Flash carries introductory pricing of $0.75 per million input tokens and $3.75 output through December 31, moving to $1.50 and $7.50 after thatSUNSET — The image generation models shut down today, August 17: imagen-4.0-generate-001, ultra, fast, and the Gemini 3 Image family, and calls after that fail with a hard errorSCALE — Gemini crossed one billion monthly active users on August 11ASSISTANT — Starting September 4, Gemini replaces Google Assistant on Android and Wear OS, a rollout expected to take several weeks and one you cannot reverse on a deviceDEVICES — The change covers Android phones and tablets, Wear OS watches, Assistant-enabled headphones, and phone-projected Android Auto; cars with Google built-in keep workingSPARK — Since August 13, Gemini 3.7 Flash has powered Gemini Spark for AI Pro and Ultra subscribers across more than 160 countriesPRICE — Gemini 3.7 Flash carries introductory pricing of $0.75 per million input tokens and $3.75 output through December 31, moving to $1.50 and $7.50 after that
Articles/Dev Tools
Dev Tools/2026-08-17Advanced

Your Shipped App Still Remembers the Retired Model

Finishing the server-side migration is only half of a model retirement. The older builds of your app still hold the old model name, and once the cutoff passes, rolling back stops being a recovery option. Here is how I moved model resolution onto the server.

Gemini API212model migration4mobile appsoperations13indie development13

Premium Article

On the morning of the cutoff, every server-side call had already been switched over. I still felt uneasy, and the reason was specific: the older builds of my apps sitting on the App Store and Google Play were still holding the old model name.

The wallpaper apps I run as an indie developer lean on Gemini for image classification and description text. The calls themselves live on the server, but there was a period when early builds carried a client-side config file that said which model backed which feature.

When the preview image models were retired at the end of June, a piece of that leftover surfaced. My server logs showed a thin but steady trickle of requests carrying a model name that, in theory, nobody was sending anymore.

A retirement date is not the day your migration finishes. It is the day your oldest still-supported client stops working. Miss that distinction and your preparation is only half done.

Deploying does not rewrite the binaries already out there

If you only run a web service, model retirement is structurally simple. You deploy, and the next request takes the new path. Nobody walks the old one.

Add a mobile app and that assumption breaks. The binary lives on the user's device, and you have no way to rewrite it. Updates happen on the user's schedule and the store's.

LayerTime until a change takes effectAgainst the cutoff
Server codeImmediately on deployCan be done by the day
Remote configMinutes, or next launchCan still be done on the day
App binaryReview, phased release, user updateWill not be in place by the day

Only the third row is outside your control. The moment you bake a value with an expiry date into that layer, the cutoff stops being yours to manage.

Once I understood that shape, I started peeling proper nouns out of the client config one at a time. The work is unglamorous, but it reads better as a single idea: move values that expire into places you can still edit.

The moment the cutoff passes, rollback stops being recovery

The second thing that is easy to miss is that a retirement date inverts the meaning of a rollback.

During a migration we naturally keep an escape route. Revert the environment variable. Redeploy the previous revision. Halt the phased release so the old build stays put. Normally these are all correct moves.

Past the cutoff, the model at the end of the old path no longer exists. Rolling back is no longer a return to a known-good state; it is choosing a state that is guaranteed to fail. Calls after retirement stop with a hard error rather than a deprecation warning, so there is no window in which this shows up as partial degradation. And in the middle of an incident, that is exactly the button your hand reaches for.

Starting about a week before the date, I began checking three things concretely:

  1. Which point in the deploy history is the first one that resurrects a call to the retired model
  2. Blocking rollbacks past that revision in the deployment settings themselves
  3. Where the "previous app version" left behind by pausing a phased release actually lands when it reaches Gemini

The third one was the awkward one. Pausing an iOS phased release only stops the rollout; people who already updated do not go back, and people who have not updated stay where they are. So the pause neither reverts everyone nor advances everyone. It freezes two populations in place. If the older population's path dies at the cutoff, freezing it prolongs the outage rather than ending it.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
You will be able to estimate how long a value baked into a shipped binary keeps affecting your operations
You will be able to decide for yourself where the line sits between the client and the server when Gemini API model resolution moves server-side
You will be able to judge, before you press it, whether a rollback across a retirement date is safe
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Gemini Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Dev Tools2026-07-18
I Was Handing Gemini Obfuscated Stack Traces — Until retrace Went In Front, the Diagnoses Were Confident and Wrong
Release stack traces come out of R8 with the names flattened. Feed one to Gemini as-is and the diagnosis arrives calm, well-written, and wrong. Put retrace in front, match the mapping by versionCode, and forbid confident answers when you cannot restore. Numbers from 42 reports.
Updates2026-07-04
Before the August 17 Gemini Image Model Shutdown: Inventory Where You Actually Call Them First
Some Gemini image generation models retire on August 17. Before choosing a replacement, here is how to inventory which models are actually being called, and from where, using your request logs.
Dev Tools2026-08-05
Green Tests, Dead Production — How Recorded Fixtures Hide a Model Retirement, and a Freshness Gate to Catch It
A test suite that replays recorded API responses will sail straight past a model retirement. I reproduce the failure in a minimal setup and build a cassette freshness gate, with measured overhead.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →