Expo / React Native client for AI-powered marketing workflows on mobile. Appwrite for auth, Windmill for tool execution.
Google Play flagged three things against 1.5.12, and all three have been worked
through. The deprecated edge-to-edge APIs — setStatusBarColor,
getStatusBarColor and setNavigationBarColor — were being called from two
different libraries, React Native's own StatusBarModule and WindowUtilKt, and
react-native-edge-to-edge. Play scans for the static bytecode reference, so wrapping the
calls in a version check never cleared the warning; every call site now reaches them through reflection
instead, which keeps the behaviour identical on Android 14 and below and removes the reference entirely.
React Native ships as a prebuilt binary, so that half required re-publishing a patched
react-android artifact and verifying with javap that no reference survived and
that every method the original exposed is still present.
On R8, the real cause turned out not to be the setting first suspected: code
shrinking was already enabled, but the build was pulling in the non-optimized default ProGuard file, which
carries -dontoptimize and switches R8's optimization passes off wholesale. That file is now the
optimized variant, and optimized resource shrinking is enabled alongside it. The remaining sub-item —
Android Gradle Plugin 9.0 — is set by the Expo SDK and cannot be changed independently. The bitmap
recommendation led to a genuine bug: picked and captured photos were being handed to the preview at full
resolution, so a 12-megapixel photo became a ~48 MB bitmap and a 50-megapixel one roughly 200 MB. Images
are now capped before they are decoded, which costs nothing in output quality because the saved image is a
capture of the on-screen view. The app targets API 36. Play re-evaluates against an analysed
release, so these results are confirmed by the store only once 1.5.13 has been through review.
How the system actually fits together — the request path for a tool run on each platform, how Windmill authenticates, what runs on each VPS, and the traps worth knowing before debugging.
Read →Same backend, models and execution logic as web. Display may be shortened — nothing else.
Read →phone-session functiontool-executor function