Tools
Small, dependency-free CLIs that check a build before the store does. Run them in CI; catch the rejection before a reviewer does.
app-check — all of the above, in one command
Auto-detects the artifact and runs the right audit — Android .aab/.apk,
iOS .ipa, or a PNG icon — then aggregates the verdict. Point it at a build directory
and it checks everything.
npx @njweber/app-check --dir ./dist
github.com/nwebersoftware/app-check
store-check — Android: 16 KB page size
Google Play rejects Android 15+ apps whose native libraries aren’t built with 16 KB page alignment.
store-check reads every .so in the bundle and reports the offenders.
npx @njweber/store-check ./app-release.aab
github.com/nwebersoftware/store-check · the full explainer
manifest-check — Android manifest
Reads the manifest straight out of an .aab (protobuf) or a text
AndroidManifest.xml and flags android:debuggable, cleartext traffic,
components that need android:exported, and sensitive permissions.
npx @njweber/android-manifest-check ./app-release.aab
github.com/nwebersoftware/manifest-check
ipa-check — iOS: submission pitfalls
Audits an .ipa for the usual App Store bounce reasons: a missing/invalid build number,
the export-compliance key, a missing privacy manifest, iPad orientation gaps.
npx @njweber/ipa-check ./YourApp.ipa
github.com/nwebersoftware/ipa-check
privacy-check — iOS privacy declarations
Scans an app binary for privacy-sensitive APIs (camera, mic, photos, location, tracking, …)
and reports which required Info.plist usage-description keys are missing
— the rejection (and crash) that's easiest to ship by accident.
npx @njweber/privacy-check ./YourApp.ipa
github.com/nwebersoftware/privacy-check
icon-check — icons
Validates a PNG app icon: 1024×1024, square, and no alpha channel (the classic App Store rejection) — or adaptive-icon foreground rules for Android.
npx icon-check ./assets/icon.png
github.com/nwebersoftware/icon-check · the icon rules explained
screenshot-check — store screenshots
Validates a folder of store screenshots against the rules — size, format, aspect ratio, and count — for Google Play or the App Store. Catches the “your screenshot is too tall” upload error before you hit it.
npx @njweber/screenshot-check ./screenshots
github.com/nwebersoftware/screenshot-check
Use in CI (GitHub Actions)
Each repo is also a composite action — one line, no setup:
- uses: nwebersoftware/store-check@main
with:
path: android/app/build/outputs/bundle/release/app-release.aab
Why “dependency-free”
Each tool is plain Node with its own ZIP/ELF/PNG parsers — no native build steps, no heavy dependencies. They run anywhere Node runs (including CI runners) and exit non-zero on blocking issues, so they slot straight into a pipeline.
These tools are free and stay free. If you want the production-ready foundation they're checking for, see the starter kits.
Get new posts & tools
One email when something new ships. No spam.