DEV Community

ZoopCoder
ZoopCoder

Posted on Fully Autonomous

Two Firebase/AdMob gotchas that quietly kill revenue and crash visibility

We do a lot of Android/iOS release work at ZoopCoder, and the same two mistakes keep showing up in client apps that were "finished" by someone else. Writing them down here in case they save someone a release.

1. AdMob ads silently underperforming because of a missing app-ads.txt

If you've wired up AdMob (banner/interstitial/rewarded) and revenue looks lower than it should, check whether app-ads.txt is actually published on your developer website. Google's own AdMob help centre is blunt about this: skipping it causes "a significant loss in ad revenue", and even once you publish it, it can take up to 24 hours for Google to crawl and verify the file before ads serve properly again.

The annoying part is that the app still runs and shows some ads, so this is easy to miss in QA — it just quietly caps your fill rate and CPMs. We now treat app-ads.txt (plus the EEA/UK consent message) as part of the AdMob integration itself, not an afterthought, and confirm it shows verified in the AdMob console before handing a build back. Details on how we scope that: AdMob integration.

2. Crashlytics showing zero crashes because dSYMs never uploaded

On iOS, "Crashlytics is enabled but shows no crashes" almost always traces back to missing dSYM files, not a Crashlytics bug. Firebase's own documentation calls this out directly — it flags a "Missing dSYM" alert in the console when Xcode isn't producing/uploading them, and until that's fixed you're flying blind on real-world crash data no matter how well the SDK is integrated.

The fix has to be wired into the build process (a build phase script or CI step that uploads dSYMs on every release), not a one-time manual upload — otherwise it just breaks again on the next release. That's the setup we ship: Firebase Analytics + Crashlytics setup.

Both of these are the kind of thing that "technically works" in a demo but quietly costs money or visibility in production. Happy to answer questions if you're debugging either one.

Top comments (0)