GEMINI LABJP
OUTAGE — Gemini recovers from one of its biggest outages (errors 1076/1099) as engineering mitigations take effectDAILY-BRIEF — The new Daily Brief agent works overnight, analyzing your inbox, calendar, and tasks into a personalized morning digestGEMINI-OMNI — Gemini Omni combines Gemini with Google's generative media models to produce consistent, high-quality video from a single promptENTERPRISE — Gemini 3.5 Flash is enabled by default in Gemini Enterprise as of Jun 8 and can no longer be turned offDEPRECATION — Image preview models (3.1-flash-image / 3-pro-image) shut down Jun 25; migrate to the GA versions nowFILE-SEARCH — File Search now supports multimodal search, natively embedding and searching images via gemini-embedding-2OUTAGE — Gemini recovers from one of its biggest outages (errors 1076/1099) as engineering mitigations take effectDAILY-BRIEF — The new Daily Brief agent works overnight, analyzing your inbox, calendar, and tasks into a personalized morning digestGEMINI-OMNI — Gemini Omni combines Gemini with Google's generative media models to produce consistent, high-quality video from a single promptENTERPRISE — Gemini 3.5 Flash is enabled by default in Gemini Enterprise as of Jun 8 and can no longer be turned offDEPRECATION — Image preview models (3.1-flash-image / 3-pro-image) shut down Jun 25; migrate to the GA versions nowFILE-SEARCH — File Search now supports multimodal search, natively embedding and searching images via gemini-embedding-2
Back to Blog

Gemini Lab Highlights (June 1–12) — Pinning Decisions Down in Code, Migrating to Gemini 3.2, and a Pre-I/O Outlook

Weekly RoundupGeminiGemini APIIndie DevGemini 3.2Google I/O 2026

This is Masaki Hirokawa from Gemini Lab.

It's been a little while since the last weekly roundup, so this one covers the first twelve days of June in a single pass. Laying the articles side by side, a pattern emerged that I hadn't planned: most of them are about taking decisions that live in a human's head and pinning them down in code. Model IDs and safety settings, the provenance of generated output, the break-even line for each feature. These are exactly the places where "we decided this once" quietly drifts out of sync.

Alongside that thread there were five field reviews from running Gemini inside my wallpaper-app operations for a few weeks at a stretch, three production troubleshooting write-ups, and — toward the end of the stretch — a Gemini 3.2 API migration guide plus a pre-I/O outlook. Here's the tour.

Theme 1: Pinning Decisions Down in Code — Config, Provenance, and Economics

The piece I'm most satisfied with from this stretch is Stopping Gemini API Config Drift — Codifying Model IDs and Safety Settings to Catch Cross-Environment Gaps. Dev runs gemini-3.1-pro, production still points at an old gemini-2.5-pro, and the safety settings differ in one subtle place — when you operate several apps in parallel, this kind of skew creeps in silently. Since moving model IDs and generation settings into declarative files with a CI diff check across environments, the time I used to spend muttering "why does production behave differently?" has visibly shrunk.

In the same family, Recording Provenance for Gemini Output — Designing for Reproducibility and Audit tackles the moment, months later, when someone asks you to reproduce a generated result. If you stored only the output — not the model, prompt, and settings that produced it — you're stuck. The article turns "attach metadata to every generation" from a good intention into an actual design.

On the business side of "decisions," Measuring the Economics of Each Gemini-Powered Feature — So You Can Keep It, Fix It, or Retire It argues for attributing API cost and usage at the feature level rather than the app level. The moment you split the numbers per feature, the "barely used but billed every month" features surface on their own, and keep-fix-retire decisions get far easier to make honestly.

Closer to the operational floor, Reconciling Orphaned Gemini Files API Uploads Across a Fleet of Apps deals with the uploads that pile up unreferenced when several apps share the Files API. Reconciling your own ledger against the API's listing and sweeping the difference is unglamorous work that pays for itself.

On cost structure, Trimming Gemini Embeddings from 3072 to 768 Dimensions: A Matryoshka Approach to Cutting Vector DB Cost and Latency is a very practical question in disguise: how much storage can you shed before retrieval quality actually suffers? If you're running vector search in production, the Matryoshka trade-off is worth an afternoon of testing.

And for small backends, A Lightweight Gemini Backend with Bun and Hono — Reclaiming the Small Tools of Indie Development is about rewriting the kind of tiny internal tool that had grown heavier than it deserved. With Bun and Hono, startup and deploys got light again — and at indie scale, lightness is what keeps a tool alive.

Theme 2: Field Reviews from Wallpaper-App Operations

I've been an indie developer since 2014, and five articles from this stretch are straight field notes from running Gemini inside that operation for weeks at a time.

For localization, Mixing Gemini 2.5 Flash and Flash-Lite for App Store Localization describes a simple split: major languages go through Flash, long-tail languages through Flash-Lite. Perceived quality barely moves while cost drops — and which languages count as "major" depends on your download distribution, so the article includes how I drew that line.

Its store-operations counterpart is A Month of Refreshing App Store Promotional Text Weekly with Gemini. Promotional text is one of the few store fields you can swap without review, yet manual processes reliably abandon it. A month of weekly generation plus a human final check turned it back into a living field.

On review risk, Pre-Screening Wallpaper App Submissions with Gemini Vision: A Two-Week Field Memo documents two weeks of machine-screening images before submission. Wallpaper apps rotate images constantly, so the odds of a risky image slipping in never reach zero. The memo records both the catches and the misses, honestly.

On division of labor, Don't make Gemini judge your AdMob report — confine structured output to extraction is my current answer to a real temptation. Let Gemini extract the numbers from the report; keep the floor-price decision itself in explicit code-side rules. Where to stop trusting a generative model with judgment is a line worth drawing deliberately.

And on the toolchain, Three Weeks After Moving Firebase from CocoaPods to SPM with Gemini 3 Pro collects the friction points from a migration every iOS developer will eventually face, now that CocoaPods distribution has an announced end date.

Theme 3: Three Production Snags — Quiet Failures Cost the Most Time

Three troubleshooting pieces round out the stretch. Empty Output but finish_reason Is MAX_TOKENS on Gemini 2.5/3: Cause and Fix covers thinking-budget exhaustion: the model spends its entire token budget on reasoning and returns an empty body inside a "successful" response. No error, just silence — which is exactly what makes it maddening.

Why Firebase AI Logic Returns 403 When Calling Gemini from iOS — And How to Fix It walks the App Check–related checklist in a single linear order, for the case where every setting looks right and the 403 keeps coming.

Gemini Live API Audio Sounds Sped Up — Fixing the Sample Rate Mismatch is the small-but-painful one: the audio isn't broken, your playback sample rate is. I hope it catches the searches of anyone hearing chipmunk-voiced responses.

Theme 4: Migrating to Gemini 3.2, and a Pre-I/O Outlook

The later part of the stretch leaned into current events. Gemini 3.2 API Developer Guide — Correct Model IDs, Migration from 3.1, and Production Checklist started from a question I kept seeing in developer communities: "I specified gemini-3.2-pro and got an error — what's the right model ID?" The guide collects the correct IDs, the deltas from 3.1, and a pre-cutover checklist from an implementer's point of view.

Then there's Google I/O 2026 Preview — What I'm Watching for in Gemini This Year: how the Gemini 3 family lineup might get consolidated, the next stage for Gemini Nano, cross-app context in Workspace, and whether Project Astra finally reaches general users. Predictions are allowed to miss — checking them against reality is half the fun of writing roundups.

One Next Step

The first half of June was dominated by designs that pin decisions down in code. If you try just one thing, start with the config drift article: write your project's model IDs and generation settings into a single declarative file. It's thirty minutes of work, and the hours you currently lose to "why is this environment different?" start coming back almost immediately.

I'll grade my I/O predictions in an upcoming roundup. Thank you for reading along, as always.