◉RORK LABJP
●EXPO — EAS Observe now records native crashes (Oct 7). On SDK 57, update to 57.0.21 or later●RORK — GPT-6.1 Sol (Sep 29) and Claude Sonnet 5.5 (Sep 28) are now in the model menu●RN 0.88 — React Native 0.88.x is scheduled for Oct 12, 2 days left●Q&A — People keep asking why AuthSession returns no result in Android standalone builds●WINDOWS — A walkthrough shows how to ship an iPhone app from Windows only, with no Mac●NEW — When only notifications fail in Expo Go: three checks to run first●EXPO — EAS Observe now records native crashes (Oct 7). On SDK 57, update to 57.0.21 or later●RORK — GPT-6.1 Sol (Sep 29) and Claude Sonnet 5.5 (Sep 28) are now in the model menu●RN 0.88 — React Native 0.88.x is scheduled for Oct 12, 2 days left●Q&A — People keep asking why AuthSession returns no result in Android standalone builds●WINDOWS — A walkthrough shows how to ship an iPhone app from Windows only, with no Mac●NEW — When only notifications fail in Expo Go: three checks to run first
Articles/AI Models
◉ AI Models/2026-09-17Advanced

The recommended replacement was already gone — auditing all 74 rows of Gemini's deprecation table

Cross-checking Gemini's deprecation table turned up five rows where the recommended replacement had itself already shut down, including gemini-2.5-flash-image, which goes away on October 2. Here is how to verify a migration target, and how to catch the 404 before your users do.

Gemini8model deprecationmigrationerror handlingRork577

✦ Premium Article

I was changing the model name behind the category classifier for my wallpaper app one morning, and I fumbled it — the old ID stayed in place, the run went through, and every image came back with an empty category.

The cause took a minute to find. What kept me at the desk was the deprecation page I opened next. The model I had picked as my migration target had a date beside it, and the date was in the past.

I had assumed the "recommended replacement" column always pointed at something still running. That assumption was the expensive part of the morning.

Only a handful of rows actually carry a date

I pulled the Gemini deprecations page apart as a table. Sorting its 74 rows (page last updated 2026-09-15) against today's date, 2026-09-17, gives this:

BucketRowsWhat it means for you
Shutdown date already passed39Calling it is not an option
Shutdown date in the future4You can plan against a date
No shutdown date announced31You cannot plan against a date

Four rows out of seventy-four have a future date on them:

ModelShutdownDays from today
gemini-omni-flash-preview2026-09-3013
gemini-2.5-flash-image2026-10-0215
gemini-3.1-flash-lite2027-05-07232
gemini-embedding-0012028-05-14605

One correction while we are here. You will hear that "the 2.5 family all goes away in October." On today's table, gemini-2.5-flash, gemini-2.5-pro and gemini-2.5-flash-lite each read "no shutdown date announced." The October 2 date belongs to the image model, gemini-2.5-flash-image, and to nothing else in that family.

So the slice of the problem you can handle with a calendar is much thinner than it looks. Putting a reminder in your calendar works for four rows. For the other seventy, there is no date to remind you of.

Copying the replacement column sends you to a dead model

Then I went one step further with the same table. I took each model ID written in the "recommended replacement" column, looked it up as a row of its own, and checked whether it had a shutdown date.

Five rows came back. Five entries recommend a replacement that has itself already shut down.

ModelIts shutdownRecommended replacementReplacement's shutdown
gemini-2.5-flash-image2026-10-02gemini-3.1-flash-image-preview2026-06-25 (passed)
imagen-3.0-generate-0022025-11-10imagen-4.0-generate-0012026-08-17 (passed)
imagen-4.0-generate-preview-06-062026-02-17imagen-4.0-generate-0012026-08-17 (passed)
imagen-4.0-ultra-generate-preview-06-062026-02-17imagen-4.0-ultra-generate-0012026-08-17 (passed)
gemini-robotics-er-1.5-preview2026-04-30gemini-robotics-er-1.6-preview2026-08-31 (passed)

Look at the first row. The model disappearing in fifteen days points you at gemini-3.1-flash-image-preview, and that preview stopped on June 25. Anyone who copies the replacement column straight across migrates onto something that is already gone.

The target that is actually alive is the GA release, gemini-3.1-flash-image, with the preview suffix dropped. The table does say so — on a different row. You will not learn it by reading the gemini-2.5-flash-image row.

Six more rows recommend a replacement that has a future shutdown date of its own, which is to say the place you move to is also on a clock. And one row recommends a model that has no row at all: gemini-robotics-er-1.6-preview points at gemini-robotics-er-2-preview, which does not appear in the table.

The replacement column tells you where the family is heading. It does not tell you what is running today. Miss that distinction and you will do the same migration twice.

✦

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 verify, on your own, whether an officially recommended replacement is still alive — including whether it has a shutdown date of its own
✦You will be able to put a landing pad under your AI calls so that a 404 arriving before the published date never turns into a silent failure in front of a user
✦You will be able to decide whether a model ID belongs inside your shipped app at all, knowing that only 4 of 74 rows carry a future shutdown date
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

Rork 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 $15 for lifetime access
View Membership →

Related Articles

◉ AI Models2026-07-17
The Three-Minute Video That Kept Failing — Moving Rork's Gemini Uploads Off the Worker
How I rerouted video uploads to the Gemini Files API from a Cloudflare Workers relay to a direct device-to-Google path — why the 128MB isolate limit breaks the relay, how to hand out a resumable upload URL without leaking your API key, what Expo SDK 54 broke on the device side, and how the 20GB project ceiling and media resolution decide the bill.
◉ AI Models2026-03-27
Rork × Multimodal AI: Design Patterns for Building Intelligent Apps with Camera, Voice, and Text
Learn how to build multimodal AI apps with Rork that seamlessly integrate camera image recognition, voice input, and text analysis. Covers unified input layers, AI orchestration across Gemini, Claude, and Core ML, UX flow design, and production-ready error handling.
◉ AI Models2026-10-05
Sonnet 5.5, GPT-6.1 Sol, or Opus 5.5? I Decide by the Kind of Fix Before I Pick the Model. A Week of Logging Where My Rork Credits Went
After Rork's model menu settled into Sonnet 5.5, GPT-6.1 Sol, and Opus 5.5, I sorted my fixes into three kinds and assigned a model and effort level to each. Here is how I read the changelog, the tiny ledger that tracks where each credit goes, and the rule I drew from a week of entries.
📚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