Sending user text to an external AI: what actually goes in Play's Data safety form
Classifying user input sent to an external AI as collected, shared, or ephemeral in Play's Data safety form, plus a redaction ordering bug found by running the code.
Your Blended eCPM Dropped and Revenue Went Up: Splitting the Change Into Country Mix and Rate
Blended eCPM is a weighted average, not a price. Here is how I split a month-over-month change into a country-mix effect and a rate effect that reconcile exactly to the total, plus what to check before you cut a low-eCPM country.
Rork's Free Tier Gives You 35 Credits a Month, but the Number That Shapes Your Work Is 5 a Day
Rork's free plan is 35 credits per month with a 5-credit daily cap. The daily cap, not the monthly total, decides how you work. Here is how I spend those five, what I verify off-credit, and where the free tier stops.
When a link opens the browser instead of your app, look at the signing key before assetlinks.json
Android App Links fail silently when the certificate fingerprint does not match. Here is the real keytool output, the upload key versus app signing key trap, and a small checker you can run before you deploy.
Starting with the EAS Observe free tier, and why Crashlytics stays installed
EAS Observe reached general availability on August 20. I looked into consolidating down to one monitoring service and found that native crashes are still out of scope. Here are the free-tier limits and the setup details that trip people up.
Adding image paste with expo-paste-input, and moving the disappearing file:// URIs out of cache
How to let users paste images and GIFs into a chat input with expo-paste-input. The URIs that onPaste hands you are temporary files that can vanish before the user hits send. Here is the relocation code and the order I verify it on real devices.
After the Google Play deadline: which dormant Android apps to raise, and which to leave at 35
Apps you have stopped updating are governed by a different bar than apps you still ship. Here is how to inventory effective targetSdk across your builds and decide which apps to raise, hold, or retire.
After Bumping targetSdk to 36, Which Part of Your Dependencies Should You Actually Read
I opened six real dependency AARs and counted what they contribute to my manifest. Not one declares targetSdkVersion, and twelve permissions arrive that I never wrote. Here is what to check before you submit.
The Remote Config keys you add after your release path closes are invisible to the build already on devices
A record of recounting what I can still change remotely before my release path closes. A key you add in the console does nothing unless a build that reads it is already on devices. Which switches to ship in the last build, and a shared-defaults bug I measured.
I Split Rork and Claude Code by Who Owns the Build Environment
How to decide between Rork and a terminal coding agent using data from your own repository instead of impressions of generated code. Includes a script that counts which layer your maintenance work lands in, and a check that catches native settings silently disappearing on regeneration.
My chart broke on day one, not at scale
A line chart that vanished for anyone with only a few days of data. The cause was a zero-height Y axis turning coordinates into NaN. Here is the measured behavior and the small normalization layer that fixed it.
TestFlight External Testing or Phased Release: Where a Solo Developer's Time Actually Pays Off
When you ship a Rork-built app to other people, you can recruit external testers or let a phased release absorb the risk. Here is how I split my limited time between the two, based on where distribution actually stalls and which three areas still deserve pre-release checks.