0.30.0
Brewmeter, the observability SDK that owns the Sentry surface and shows every HTTP call the app makes, one Shopify fetch transport that does its own measuring, analytics v2 event forwarding, and a sign-out that only fires on a confirmed token rejection.
No native changes to the platform
Every platform change here is JavaScript. No native module was added or
altered, so apps pick this up with a build at 0.30.0 — no
store release is required for the platform itself.
The two new integrations are the exception, and only if you adopt one:
@gauntlet/location-capture peers on @react-native-community/geolocation
and react-native-permissions, so adding it to an app is a native change for
that app.
Breaking
None. No public export was removed and no exported interface gained a required member. Two things that look breaking in the diff are not:
createEnhancedFetchnow returnsEnhancedFetchrather thantypeof fetch.EnhancedInitextendsRequestInitwith optional fields only, so the result is still assignable totypeof fetchand existing call sites compile unchanged.meteredFetchwas deleted from@gauntlet/shopify. It was never exported from the package barrel and had no consumers outside its own package.
New
@gauntlet/brewmeter — the SDK that owns the Sentry surface. Observability
moves out of the apps and into one package. It reports every HTTP call the app
makes, with query-string secrets stripped before anything is logged, and labels
each request with its queue wait, attempt and transaction name so a slow screen
can be traced to the call that caused it. Launch instrumentation was reworked at
the same time, and two read-side numbers that had been wrong were corrected.
There is an HTTP endpoint view per app and across the fleet.
Two new integrations. @gauntlet/location-capture (geolocation capture with
its own permission flow) and @gauntlet/ola-maps. Both are published for the
first time in this release, alongside brewmeter — see the native-changes note
above before adopting location-capture.
Analytics v2 forwards an event log to Appbrew analytics. Trackers gain a
paramsWhitelist and a paramsMapper so a tracker decides which event
parameters it forwards and under what names. Both have defaults on
AnalyticsTrackerV2, so existing trackers need no change.
Webview URL on the route. The current webview URL is exposed on the route, so a visibility rule can key off it.
Changed
One Shopify fetch transport. Two wrappers were doing one job at two layers —
in shopify-auth they were literally nested. Measurement now lives in the
transport: all six Shopify clients construct a createEnhancedFetch directly,
and the GraphQL operation naming stays in the Shopify package as
operationNamer, since 11 of enhanced-fetch's other consumers are not GraphQL
and have no business parsing an operation name. EnhancedInit picks up
brewName and brewService so a call site can name a request that a URL cannot
distinguish — searchtap POSTs six different operations to one URL.
Fixed
-
Sign-out only fires on a confirmed token rejection. A failed refresh, a network error or an ambiguous response no longer logs the shopper out; only a response that actually rejects the token does.
-
PLP no longer freezes on iOS via Branch, and the unresolved-collection cache key that went with it is fixed.
-
Shopify search sends buyer country context on every query, so prices and availability match the shopper's market, and search terms are sanitized so invalid input returns no results instead of an error.
-
Cart fixes. A product with a zero compare-at price is treated as having no compare-at price rather than showing a fake discount. In
cart-list-v2, pressing minus at quantity 1 removes the line. Flits receives the cart subtotal rather than the list total. -
PDP product video plays and pauses on tap.
-
PayPal falls back to its modal on iOS in
payment-web-view-v4. -
Colour swatch labels match with surrounding whitespace trimmed, so a variant whose label carries a stray space still resolves.
-
Gokwik rolls back the kwikpass session when the sign-in handoff fails, instead of leaving a half-established session behind.
-
Nector reviews uses the app's configured sign-in screen.
-
The no-internet screen renders on a grid-enabled PLP.
-
Release sourcemaps land where the crash worker looks for them.
Upgrading
Move every @gauntlet/* entry to 0.30.0 together with the Appbrew-published
@app-brew/* packages, which version with the platform, then rebuild. No
pod install or Gradle change is needed for this release unless you are adding
@gauntlet/location-capture. Full workflow:
Upgrading @gauntlet packages.
0.31.0
EasyRewardz loyalty, Nector referral claim and a rating distribution graph, move-to-wishlist from the cart, and collection lookups that return null instead of crashing on a collection that has gone.
0.29.0
Cart recovery from a stale customer token, an instant-code store flag, Android external links that always reach the browser, and a subscription price preview that matches what the shopper will pay.

