This is Masaki Hirokawa from Gemini Lab.
The fourth week of May is behind us. Coming right after the Google I/O 2026 announcement wave, this week pulled me toward something quieter than "flashy new feature breakdowns" — the boring, important design work that keeps real apps running for months on end.
Looking back, the week organizes into four themes. Production-grade reliability (circuit breakers, graceful degradation, schema evolution, continuous quality monitoring), six indie apps with a cumulative 50M+ downloads (Crashlytics auto-analysis, AdMob integration, review parsing, release-day code review), a week-long trial of Gemini Computer Use and Claude in Chrome on the AdMob console, and small production incidents with practical fixes (streaming buffering, schema enum, MALFORMED_FUNCTION_CALL, Deep Research stalls). Less a chase-the-news week, more a "I want this to still be running in three months" week.
Theme 1: Production Reliability — the Unglamorous Gear
The piece I spent the most time on this week is Wiring Circuit Breakers and Graceful Degradation into Gemini API — an Indie App's Stability-First Notes. After running on the Gemini API for twelve months, there are definitely time slots where latency wobbles. Combining a three-state circuit breaker (Closed → Open → Half-Open) with four degradation stages (full response → simplified response → cache → soft-stop) can dramatically reduce the user-visible "the API is dead" experience. Switching stages based on p95 latency works well enough at indie scale.
On the schema side, Evolving Gemini API Structured Output Schemas in Production — Design Notes from a 50M-Download Indie App took the most design time. When you ship a v1.0 structured-output schema and then need to evolve it to v1.1, then v2.0, changing it carelessly breaks every client at once. I wrote out a pattern that separates an Internal IR from the published schema, runs a Dual-Emit period, and only then enters Sunset — with a Python compatibility checker included.
For monitoring, Designing a Continuous Quality Monitoring Pipeline for the Gemini API is the week's most operational article. Gemini 2.5 Pro shifts behavior slightly with each model refresh, so combining a golden dataset with an LLM-as-judge to measure quality weekly catches silent regressions. My setup runs at around ¥4,200/month and has actually caught regressions of 2.4% and 47% over the past few months. "Finding out things broke only after they broke" is, after twelve years of indie development, the failure mode I most want to avoid.
For production asyncio, Gemini API asyncio Patterns for Production: How I Cut Processing Time by 80% in My Indie App Backend is the longer-form piece. Naively stacking asyncio.gather calls breaks Gemini's rate limits and dead-letter queue design under pressure. I wrote down a semaphore + retry-budget + backpressure pattern that holds up at indie scale.
Theme 2: Six Apps in Parallel × Gemini — Working at 50M Downloads
I've been running an indie app business since 2014, and right now I maintain six apps across iOS and Android in the wallpaper, healing, and law-of-attraction categories. This week I focused on integrating Gemini into that day-to-day operation.
Automating Firebase Crashlytics Analysis with Gemini API — A Real-World Implementation from an Indie App documents the pipeline that took Crashlytics reports from the Android v2.1.0 release and had Gemini cluster and summarize them. When the Glide 5.0.5 × AGP 9.x Java 8 Supplier NoClassDefFoundError surfaced as a clean automatic cluster, the morning notification quite literally told me the root cause in one line.
On the AdMob side, Gemini 2.5 Pro × AdMob Weekly Floor-Price Candidate Pipeline and Designing a Gemini API Control Plane for a Multi-App Portfolio — Firebase Remote Config + Cloudflare Workers are the pair I leaned on most. Sending the weekly AdMob mediation eCPM CSV to Gemini and getting back structured floor-price candidates via Function Calling reclaimed hours I used to spend reading dashboards across all six apps.
On the review side, Overnight Classification of 8,000 App Reviews with the Gemini Batch API pairs naturally with Automating App Store and Google Play Review Replies with Gemini API — The 8-Second Rule I Discovered the Hard Way. Classifying 8,000 reviews overnight with the Batch API makes the start-of-month decisions much easier. Meanwhile App Store Connect will block you if replies fire too quickly, so the unglamorous discipline of inserting roughly eight seconds between submissions is what keeps the loop running. Both pieces had to land before review ops felt sustainable.
For metadata, Auto-Generating App Metadata in 30 Languages with Gemini API — Lessons from Beautiful HD Wallpapers is the implementation note. Working the character limits, prohibited terms, and the gap between iOS and Google Play localization specs into the prompt took several iterations on Beautiful HD Wallpapers before it stabilized.
The release-day piece is Tuesday's blog post: The Day I Shipped Android v2.1.0: How Gemini 3.2 Quietly Caught a One-Line Glide Crash Fix. Adding coreLibraryDesugaringEnabled true in one line cleared the crash for every Android 6.0.1 user, and I doubt I would have found it as quickly without Gemini in the review loop. Auto-generating Japanese and English Release Notes from git log with Gemini API — A Real Implementation from Beautiful HD Wallpapers v2.1.0 is from the same release cycle.
Theme 3: Trialing Gemini Computer Use and Claude in Chrome
This week's most exploratory piece is Gemini Computer Use vs. Claude in Chrome on the AdMob Console — A One-Week Comparison.
I used to half-give-up on AdMob console automation because the layout shifts often enough that scripts go stale. This week I ran both Gemini Computer Use and Claude in Chrome side by side for seven days to feel out what each is suited for and where both still stumble. The honest conclusion: both are strong on visually self-contained operations like editing ad units, but the deeper, layered screens like mediation configuration still need human assistance.
For longer-form validation, Two Months With Gemini 2.5 Pro's 1M Context: What It's Actually Good (and Bad) At captures two months of feeding the entire Beautiful HD Wallpapers Android project into the 1M context. It's strong for surveying broadly, less so for drilling deep into one spot — there I plan differently.
On the Apple side, Two Months with Gemini 2.5 Pro and Apple Privacy Manifest Across Four Indie iOS Apps is the operational report from four iOS apps. Delegating Privacy Manifest diff checks to Gemini changes the monthly overhead meaningfully.
For the Files API plus storage, Designing an Image Pipeline with the Gemini Files API and Cloudflare R2 documents the split: R2 as durable storage, Files API for transient processing, since Files API objects vanish after 48 hours. The key knobs are rate control that keeps re-upload costs around ¥3,000/month and hash-key idempotency.
And Building a Wallpaper Variation Pipeline with Gemini 3.2 Flash Image Output — How an Indie Developer Splits the Work with Imagen 4 and Cut Monthly API Cost is the measured story of letting Gemini 3.2 Flash and Imagen 4 each handle what they're good at, which compressed monthly API spend by 40%.
For workflow scaffolding, Designing Event-Driven AI Workflows with Gemini API and Cloud Pub/Sub — Notes from an Indie Developer and Rolling Out a Multilingual Onboarding Flow with Gemini 2.5 Flash and Firebase Remote Config together cover Pub/Sub plus Remote Config for staged rollouts, idempotency, and DLQ design.
Theme 4: Small Production Incidents and Practical Fixes
In parallel with the design pieces, this week produced four troubleshooting articles drawn from incidents I actually hit.
Why Gemini API Streaming Returns the Whole Payload at Once in Production — Buffering on Cloud Run, Vercel, and Cloudflare dissects the "streams locally, batches in production" failure mode by platform.
When responseSchema enum is Ignored — Causes and Workarounds in the Gemini API is a post-mortem from a real production incident where structured output returned strings outside the enum. Together with Diagnosing MALFORMED_FUNCTION_CALL Errors in the Gemini API, these two are the pieces I'd reach for when "it was working yesterday" hits the structured output path.
When Gemini Deep Research Stalls Mid-Run — Five Causes and How to Recover is for anyone who has actually pushed Deep Research on long-running jobs. Why Gemini API seed Doesn't Always Make Output Deterministic — A Practical Workaround from a Wallpaper App Classification Pipeline is from the same family of "it won't settle the way I expect" — I hit it while validating automatic wallpaper category classification.
And Why Your Apps Script Stops Mid-Batch When Calling the Gemini API — UrlFetchApp Timeouts and the 6-Minute Execution Limit, Diagnosing INVALID_ARGUMENT Errors in Gemini API Batch Image Analysis, and Debugging Gemini API Calls from Next.js App Router Server Actions are the three "I lost three hours to this" notes I left behind for the next person.
Looking Ahead
This week was about quietly building out the gear that keeps things running. Next week, with a little more time since I/O 2026, I'd like to focus on the announcements I can actually measure against three-month real use, and write up only the ones that survive.
After twelve years of running indie apps, the loud new feature announcements matter less to me than the quiet accumulation of reliable gear. Thank you for reading this week, and I hope to see you here again next week.