0.28.0
Home-screen quick actions, remote blocks on web, order-cancel processing state, and a native web view brought in line across platforms.
Contains native changes
Quick actions ships a new native module, and the native web view changed on both platforms. Picking up either needs a store release — a config publish is not enough. Everything else here is JavaScript and needs only an app build at 0.28.0.
Breaking
None. No public export was removed and no interface gained a required method. The one revert in this release — useBlockStyle and useBlockSettings taking a non-nullable BlockConfig again — does not change any call site's type, because useBlock throws rather than returning null.
New
Home-screen quick actions — long-press the app icon for up to four shortcuts. Configured per brand at store.quickActions with a title, subtitle, icon, and any Link as the target; leave it unset and shoppers get Wishlist, Cart and Account, filtered to the screens the app actually has. There is nothing to build: the hook runs inside brewery's shell, so apps get registration and tap routing for free once the @app-brew/quick-actions native module is installed. Icons are per-platform — Android takes an image URL, iOS takes an SF Symbol name — and mailto: targets open the in-app compose screen rather than the mail client. See Quick actions.
Remote blocks on the web — the remote-block system gains a web target, an app scaffold and authoring APIs, so a block bundle can be built once and rendered on web as well as native. Deeplink previews now load host-side bundles through lens, which is what makes a shared preview render the real block rather than a placeholder.
Unified in-app update overlay — forced and flexible update paths now share one overlay across the six packages that touched them, replacing the split behaviour introduced in 0.27.0.
Add-to-cart from modal links — modal-link ATC routes through a single sheet host with a double-open guard, and the sheet takes a bottomInset. Fixes the case where two sheets could stack on a fast double tap.
Nector loyalty revamp — a reworked loyalty surface, with per-block configurable empty-screen text and styling.
Smaller additions — wishlist can show recently added products first; the cart list removes an item when minus is pressed at quantity 1; sort options take a deterministic order via sortOptionsOrder; filter buttons gain a separator divider and long-label ellipsizing; Judge.me gains a sort dropdown and a rating-input empty colour; the appbar's scroll-swap accepts style and source overrides; the product hotspot supports multi-slide carousels with a header and dots; orders-v5 can close its cancel window on the earlier of status or duration; GoKwik sends shopify_order_id on the purchase payload; Shiprocket EDD gets date reformatting, a delivery icon and checking text; Shopflo adds SSO steps 2–5 for OTP login.
Fixed
- Order cancel now shows a processing state instead of appearing to do nothing.
- Cart list v2: consistent price modes, template variables and free-gift classification — and quantity-0 lines are no longer labelled as free gifts.
- Coupon codes validate case-insensitively, with an option to force uppercase input.
- Recursive schema markers no longer carry a
$refkey, which was breaking Milo. - The payment web view opens native sign-in only for store login URLs.
- Tab buttons are no longer wrapped when the theme has no wrapper style.
- Phone input passes country-picker flag props explicitly, for React 19's
defaultPropsremoval. - Carousel gains an
autoScrollVideosoption, takes its poster fromitem.src, and fixes promoisInView. - Toast height and theming, image-banner touch handling, address-list null safety, profile-greeting name and icon options, and OTP copy on the account screen.
- Nector records actions only for social triggers in ways-to-earn.
- Searchanise builds variant titles from options.
- Yotpo rewards saved birthdays a day early in timezones behind UTC.
- Native web view: a scroll issue, plus a pass to bring it in line with the legacy web view on both platforms.
- Link-hotspot block registration was restored after being dropped with the one8-only path.
- MoEngage tracker fixes across state, GoKwik and MoEngage.
Upgrading
Bump every @gauntlet/* entry to 0.28.0 together with the Appbrew-published @app-brew/* packages, which move with the platform, then rebuild. Apps that want quick actions also need @app-brew/quick-actions added and a pod install. Full workflow: Upgrading @gauntlet packages.

