Independent product studio · Swedenhello@karelialabs.com

Web tool and CLI Live

Ship Check: check your APK, AAB or IPA against store rules before you upload

Google Play and the App Store publish rules with dates and then tell you after you upload. Ship Check reads your APK, AAB or IPA before you do, shows which library breaks which rule and tells you which engine or SDK ships it.

The web tool is free. Ship Check CLI, for build servers, is $29.

Input
Android .apk and .aab, iOS .ipa
Web tool
Free, MIT licence, runs in your browser
CLI
Node 18 or newer, no install, no dependencies
Rules checked
2026-11-10, each result links its source
Tested with
25 unit tests, 5 real APKs and 112 browser checks in Edge and Chrome
Price
Web tool free, CLI $29 one-off
A recording of the live page checking real open-source APKs from F-Droid. The video loads from YouTube only when you press play.

Drop a build on the page. It is read in your browser and never uploaded. For build servers, Ship Check CLI runs the same checks and exits with a code that stops the pipeline.

What Ship Check does

16 KB pages, per library

Every PT_LOAD segment of every 64-bit native library must have an alignment of 16384 or more. 32-bit libraries are exempt and shown as such. Google Play stops releasing updates without 16 KB support from 1 February 2027.

RELRO

Google's own rule for GNU_RELRO, so a library that is aligned but would still crash on a 16 KB device is caught. In the test set, a real Flutter app passes alignment on all five 64-bit libraries and fails RELRO on one.

Zip and bundle alignment

Uncompressed libraries in an APK must start on a 16 KB boundary, and an AAB carries its own page alignment setting. Ship Check also reads NDK and compiler markers where they exist.

Which engine or SDK is to blame

Libraries are matched to Unity, Unreal, Godot, Flutter, React Native, Solar2D, Cocos, Defold, GameMaker, Sentry, MMKV, Wwise, FMOD, AppLovin and more, with an evidence note for each match. A library that is not in the map is shown as unknown. A fix is shown only where the vendor documents it.

Real SDK levels and Billing

The real target and minimum SDK from the manifest, the package and version, and the Play Billing Library version.

Dated rules with their sources

Google Play 16 KB, 64-bit, target API 36 and Play Billing versions, and Apple's iOS 26 SDK and the April 2027 iOS 27 SDK and iOS 15 requirements. Each rule has its official source and the day it was read.

Reports you can keep

Copy the report as Markdown or download it as JSON. The page works offline, at 375 px width and in dark mode.

Screenshots

Ship Check report for a real Flutter app: every 64-bit library passes 16 KB alignment but one fails the RELRO rule
RELRO catches what the alignment check misses
Ship Check report for a real React Native app: 23 libraries fail 16 KB alignment, grouped by the engine that ships them
Every failing library, named by its engine
Ship Check report for a real Godot build: the libraries pass and the target API does not
Real Godot build: libraries pass, target API does not
Ship Check report for a test build with a Unity library, a React Native library and an unknown one
Fixes only where the vendor documents them
Ship Check report for a test IPA built with the iOS 26 SDK, with Apple's dated rules for April 2027
IPA: Apple's dated rules, with the date
Ship Check at 375 pixels wide, with nothing uploaded
The same page at phone width

In your build pipeline

Ship Check CLI is the same checks as a command: node shipcheck.mjs MyGame.aab --fail-on=error. Add --json for a full report, --fail-on=warning to also stop on rules that start soon, and --date 2027-02-01 to see what a build looks like on a future day. It exits with a code your pipeline can act on.

The web page and the CLI share the same code. The paid part is the packaging, the JSON report and the exit code for your build server, and support.

Pricing

FreeShip Check on the web

Runs in your browser. Nothing is uploaded.

$29Ship Check CLI

One purchase covers one team or company. Updates within version 1.x.

Good to know

  • It reads what is in the file. It cannot see your store listing or console settings.
  • AAB and IPA files are tested with synthetic files built to the documented formats, because no open-source AAB or IPA was available as test input. The APK checks were also compared with an independent implementation on 5 real APKs from open-source apps, 111 libraries in all, with identical results.
  • Tested on Windows with Node 24.12.0. Other operating systems and Node versions are untested.
  • The evidence for GameMaker, Defold and Cocos libraries comes from community sources rather than official documentation, and the evidence note says so.
  • A technical tool, not legal advice. A passing report does not guarantee that a store accepts your app.

Guides

FAQ

Is my build uploaded?

No. The page reads the file in your browser, and the CLI reads it on your own machine.

Why RELRO as well as 16 KB alignment?

A library can be aligned and still fail Google's rule for the relocation segment. Ship Check checks both.

Which engines does it work with?

Any engine that produces an APK, AAB or IPA. It names the engine or SDK behind each library where it knows it, including Unity, Unreal, Godot, Flutter, React Native, Solar2D, Cocos, Defold and GameMaker.

Is the web tool really free?

Yes. It is released under the MIT licence, and you can download the files from the page's own folder to run it offline.

Is this the same as Ship Check Lite?

No. Ship Check Lite is the Solar2D version for Android builds. Ship Check covers Android and iOS builds from any engine and the dated store rules.

Related tools

More from Karelia Labs

Updated