Skip to content

Delete the 16 KB plugin, state the API floor, release 1.4.0 - #258

Merged
adulbrich merged 1 commit into
mainfrom
chore/255-drop-16kb-plugin
Aug 21, 2026
Merged

Delete the 16 KB plugin, state the API floor, release 1.4.0#258
adulbrich merged 1 commit into
mainfrom
chore/255-drop-16kb-plugin

Conversation

@adulbrich

Copy link
Copy Markdown
Owner

Closes #255.

The plugin goes

plugins/withAndroid16KBSupport.js never affected 16 KB page support. The gradle property its filter removed — android.bundle.enableUncompressedNativeLibs — is absent from the Expo template on both SDK 54, where the plugin was written, and SDK 57. So the filter removed nothing, and the plugin's only net effect was adding android.enableJetifier=true, a Support Library rewriting flag unrelated to page size.

Measured on both artifacts before deleting — debug APK and release AAB, each built with and without it:

same set of libraries      : True
libraries differing         : 0     (of 100)
BundleConfig.pb identical   : True

Both control builds also succeeded without Jetifier, so nothing in the dependency tree needed it.

The app is 16 KB ready and stays that way: every 64-bit .so links with PT_LOAD alignment 16384, and the bundle manifest carries extractNativeLibs="false" so those libraries are mapped rather than extracted.

The API floor becomes explicit

@adulbrich recalled this originated in a Play Console notice, which turned out to be the key to the whole thing. What answered that notice was the compileSdkVersion / targetSdkVersion / buildToolsVersion 35 bump in the same commit (9d3668a) — build against API 35 and AGP and the NDK do the alignment for you. The plugin rode along.

Those pins were then dropped in 5c24c26, and compliance survived only because Expo's own default had moved past 35 by then. Nothing in the repo said the requirement existed, so anything setting a lower compileSdkVersion would have dropped 16 KB support with no signal — and the plugin would not have caught it, having never touched page size.

expo-build-properties now pins compileSdkVersion and targetSdkVersion at 36, which is what Expo SDK 57 already resolves to. Verified by prebuild: the generated project is unchanged apart from Jetifier going away.

__tests__/androidSdkFloor.test.ts is what notices if either slips below 35. Confirmed it fails when they do:

✕ pins compileSdkVersion at or above the level 16 KB page support needs

Raising the pins on an SDK upgrade is expected. Lowering them is the thing that must not pass quietly.

Version 1.4.0

package.json and app.json both go to 1.4.0; they are kept in step by hand. eas.json sets appVersionSource: "remote" with autoIncrement, so EAS owns versionCode — the last store build was versionCode 12 / 1.3.0.

1.4.0 rather than 1.3.1 because this is not only fixes. Reconciling the two export formats changed the CSV's birth_control.*.notes column from Time Taken: X Notes: Y to Time: X, Notes: Y, and a patch release would imply there is nothing to notice. Everything else since 1.3.0 is internal work plus nine user-visible defect fixes — stale calendar filters, the day-tap prediction refresh, the flow ring's timezone window, pregnancy weeks past full term, the notes marker, CSV quote escaping, PDF month ordering on non-English locales, and the first-launch migration race.

Verification

npm test, npm run typecheck, npm run lint all pass. 407 tests.

Not smoke-tested on a device for this change: the plugin's removal is covered by the two artifact comparisons above, and the SDK pins were verified through prebuild rather than inferred. If you are publishing from this, a release build through EAS is the real check.

Closes #255.

plugins/withAndroid16KBSupport.js is removed. It never affected 16 KB page
support: the gradle property it filtered out is absent from the Expo template
on both SDK 54, where the plugin was written, and SDK 57, so the filter removed
nothing, and its only net effect was adding android.enableJetifier=true --
a Support Library rewriting flag unrelated to page size.

Measured on both artifacts before deleting. Debug APK and release AAB, each
built with and without the plugin: not one of 100 native libraries differs, and
BundleConfig.pb is byte-identical. Both control builds also succeeded without
Jetifier, so nothing here needed it.

The app is 16 KB ready and stays that way: every 64-bit .so links with PT_LOAD
alignment 16384 and the manifest carries extractNativeLibs="false".

What actually answered the Play Store notice was the compileSdkVersion /
targetSdkVersion / buildToolsVersion 35 bump in the same commit, 9d3668a. Those
pins were dropped again in 5c24c26, and compliance survived only because Expo's
own default had moved past 35 by then. Nothing in the repo said the requirement
existed, so a lower compileSdkVersion would have dropped 16 KB support silently.

expo-build-properties now pins compileSdkVersion and targetSdkVersion at 36,
which is what Expo SDK 57 already resolves to, so the generated project is
unchanged apart from Jetifier going away. __tests__/androidSdkFloor.test.ts is
what notices if either slips below 35, and it fails when they do. Raising them
on an SDK upgrade is expected; lowering them is the thing that must not pass
quietly.

Version goes to 1.4.0 in package.json and app.json, which are kept in step by
hand. eas.json sets appVersionSource remote with autoIncrement, so EAS owns
versionCode. 1.4.0 rather than 1.3.1 because this is not only fixes: the CSV
export's birth_control notes column changed from "Time Taken: X Notes: Y" to
"Time: X, Notes: Y" when the two export formats were reconciled, and a patch
release would imply there is nothing to notice.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ephira Ready Ready Preview Aug 21, 2026 8:43pm

@adulbrich
adulbrich merged commit 749b54f into main Aug 21, 2026
6 checks passed
@adulbrich
adulbrich deleted the chore/255-drop-16kb-plugin branch August 21, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

withAndroid16KBSupport does not do anything about 16 KB pages; its only effect is enabling Jetifier

1 participant