AppbrewDevelopers
Changelog

0.33.0

Every app can load instant code: the remote-bundle loader defaults its host and brewery exports a prewarm hook. Nector loyalty tiers render before sign-in, with the program's own coin expiry unit.

No native changes

Both changes are JavaScript. They reach users with the next app release; no pod install is needed.

Breaking

None. No exported signature changed shape in this release.

New

Instant code loads in any app that calls app.init. The remote-bundle loader in @gauntlet/brewery now falls back to the Appbrew bundle host when REMOTE_BUNDLE_URL is missing from the app's .env, so an app no longer needs the key to load instant code. Set it to an empty string to turn instant code off for one app. The loader is installed by app.init, so an app still on config.init(appId).then(...) loads nothing; move it to onConfigReady(callback) from @gauntlet/state, followed by app.init({ appId }) with app from @gauntlet/brewery.

Two behaviours differ from config.init().then(). The onConfigReady callback does not run when config fails to load, where the old .then callback ran with no data. Work chained with .finally after .then belongs in the ready callback, since app.init returns nothing to chain on.

prewarm from @gauntlet/brewery. Call it from index.js when the screen is created, so a launch from a background push skips it. It is idempotent, since a screen restart calls it again.

Fixed

Nector loyalty tiers render before sign-in. The VIP program model read its rules from the authenticated rewards call, so a signed-out shopper saw no program copy or tiers. NectorProvider now loads the same rules without a customer token and exposes a ready promise, which the hooks await when they mount before init finishes.

Nector coin expiry uses the program's unit. Expiry counts are read with the unit the program sets (days, weeks or months) instead of assuming months, and the earn rate falls back to the program-level coins-per-unit value when the order reward rule does not carry one.

On this page