◉GEMINI LABJP
●ARGON — gemini-4-argon is generally available as of 10/13, aimed at complex coding, agents, math and science●DEEP RES — deep-research-pro-preview-12-2025 shuts down 10/23, 6 days left. Move to deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 is GA (10/06). gemini-3.1-flash-image is deprecated with no shutdown date yet●MCP — One write-up cut an 85,000-token tool result to 310 tokens by wrapping it in an ADK FunctionTool●FLASH — gemini-3.7-flash and 3.5-flash now route automatically to newer Flash models (10/08)●NEW — Stop Re-Reading Every Crash Report: Gre…●ARGON — gemini-4-argon is generally available as of 10/13, aimed at complex coding, agents, math and science●DEEP RES — deep-research-pro-preview-12-2025 shuts down 10/23, 6 days left. Move to deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 is GA (10/06). gemini-3.1-flash-image is deprecated with no shutdown date yet●MCP — One write-up cut an 85,000-token tool result to 310 tokens by wrapping it in an ADK FunctionTool●FLASH — gemini-3.7-flash and 3.5-flash now route automatically to newer Flash models (10/08)●NEW — Stop Re-Reading Every Crash Report: Gre…
Articles/API / SDK
◈ API / SDK/2026-05-22Advanced

Generating Multilingual Onboarding Copy with Gemini 2.5 Flash and Rolling It Out via Firebase Remote Config: An Indie Developer's Notes

An indie developer's implementation notes on generating multilingual onboarding copy for six wallpaper apps with Gemini 2.5 Flash and validating it through Firebase Remote Config gradual rollout, including Apps Script code, D1 retention measurement, and AdMob eCPM separation.

gemini-api286firebase-remote-configindie-dev48onboardingab-testingapps-script10retention

✦ Premium Article

Firebase Remote Config rolls out a new value, and D1 retention shifts by 0.8 points. Do you dismiss that as noise, or do you treat it as a real signal from the new copy? When you're an indie developer running six wallpaper apps in parallel, whether you have the measurement plumbing to answer that question changes the precision of every subsequent decision.

Recently, working solo, I built a pipeline that generates onboarding copy for six apps with Gemini 2.5 Flash and ships it through Firebase Remote Config with a gradual rollout. What used to take several days of back-and-forth with a translation service now runs in tens of seconds from an Apps Script trigger.

This article is a write-up of the actual Apps Script code I run in production, the Analytics event design I use to measure D1 retention per variant, and the numbers I've started seeing across six apps. Everything was verified in May 2026 against Gemini 2.5 Flash and the Firebase Remote Config REST API v1.

Why move onboarding copy into Remote Config at all

If you hard-code onboarding copy into your app resources (strings.xml on Android, Localizable.strings on iOS), every word change ships as a new binary that has to go through store review. That's one to three days of latency, and once a version is out you can't easily roll back if a new phrasing turns out worse. I couldn't tolerate that lag, so the copy for the first three onboarding screens now lives entirely in Remote Config.

When deciding what goes into Remote Config, I use three criteria.

  1. Does the copy need to be swappable without store review?
  2. Does it need multilingual variants? (For me that's English, Japanese, Simplified Chinese, Spanish, Portuguese, German, French — seven languages.)
  3. Do I want to A/B test variations of it?

Anything that touches legal language — terms of service, privacy policy excerpts, push notification permission explanations — stays in the resource files. Remote Config-driven copy gets regenerated regularly, and the nuance shifts slightly each time. Putting legally reviewed copy on that path is asking for trouble. Drawing that line clearly up front made everything downstream easier to operate.

Why I picked Gemini 2.5 Flash

I compared Gemini 2.5 Flash, Gemini 2.5 Pro, and Gemini 3 Pro before settling on Flash. My reasoning came down to three points.

  • Cost. Generating 7 languages × 3 screens × 6 apps = 126 strings weekly costs roughly ¥2,000–¥3,000 per month on Pro tier. On Flash, the same workload comes in under ¥300 per month. Across a year of operation that's a massive difference.
  • Latency. Average generation time per string is around 800ms on Flash, versus 2.5–4 seconds on Pro. Apps Script has a six-minute execution limit. Pushing 126 strings through Pro in one run was a non-starter.
  • Tone consistency. For copy that needs a soft, gentle voice matching the wallpaper apps' aesthetic, Flash produced more uniform output. Pro's longer reasoning chain occasionally produced copy that felt overly explanatory.

I wrote in an earlier article about using Pro for crash analysis and Flash for copy generation — the same split applies here. Onboarding copy benefits from brevity and consistency, not deep reasoning.

✦

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
✦Get production-ready Apps Script code that calls Gemini 2.5 Flash and writes multilingual values into Firebase Remote Config — drop it into your own project
✦Learn the exact Analytics event design for measuring D1 and D7 retention across rollout variants, and how to isolate AdMob eCPM effects per traffic source
✦See the four real pitfalls I hit while running this pipeline across six apps in parallel, and the workarounds I settled on
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

◈ API / SDK2026-08-23
Moving app AI work from runtime calls to a pre-ship batch pass
Where you put a Gemini call decides whether your request count scales with users or with assets. Here is the decision rule I used to move classification into a pre-ship batch pass, plus a resumable implementation.
◈ API / SDK2026-08-22
Once You Pass Twenty Mediation Groups, How Do You Find the Setting That Went Missing?
As ad mediation groups multiply, missing sources and type drift accumulate quietly. Here is the split I settled on: normalize the settings into one matrix, let code confirm the gaps, and send Gemini only the cells that need judgment.
◈ API / SDK2026-06-23
Integrating Gemini 3.2 Pro Function Calling into iOS/Android Apps: Production Design Patterns
A practical guide to integrating Gemini 3.2 Pro Function Calling into iOS and Android apps. Includes working SwiftUI, Kotlin, and Python code, plus production patterns proven in a real indie wallpaper app — cost, latency, staged rollout, and regression testing.