All Articles
I counted how many versions expo install starts recommending after one patch bump
What expo install recommends is tied to the patch version of expo itself. I measured the ledger diff against the npm registry, how far npm install drifts, and the one check worth adding to a generated project.
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.
Three Minutes After the Screen Locked, My expo-audio Ambient Sound Went Silent
Why expo-audio stops playing when the screen locks, diagnosed as three separate layers: build config, audio session, and lock screen integration. The three-minute stop on Android is documented behavior.
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.
expo-doctor passes on API level 35. Here is what its 22 checks actually cover
I opened the expo-doctor 1.20.4 bundle and listed every check it registers. Only one looks at store requirements, and its threshold is still API level 34.
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.
Nine Expo patches shipped in thirty days. Which one is your app actually running?
A tilde in package.json does not mean you are on the newest patch. The file that decides what actually gets installed is package-lock.json. Here is what npm did when I ran the checks myself.
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.
Sunset.png and sunset.png: one file on your Mac, two on the build server
An image that renders locally but breaks the cloud build. The cause was filename casing. Here is the reproduction, the git behavior behind it, and a small checker with measured results.
Two weeks of half-finished batch runs, and every log line said success
A job scheduled twice a day was firing once, and nothing in the logs showed it. Here is the run ledger that catches executions that never happened, plus a backlog-slope check, with real command output.
Count your worklets before you start deleting your own code
Hermes V1 attaches 512KB of debug metadata to every worklet, so simply importing Reanimated can add tens of megabytes. Here are the three numbers to count before blaming your own code, and how to choose between the four available fixes.