Tags: grab/superapp-sdk
Tags
_Demo apps demonstrate per-user visit tracking with `StorageModule`._ ### Added - Visit counter in CDN and React demos, displayed on the home page after sign-in. ### Changed - React demo: `@grabjs/superapp-sdk` `^2.0.0-beta.38` → `^2.0.0-beta.56`.
_Refines public API typings by removing redundant no-content result a… …liases and tightening method/type documentation._ ### Added - Expanded inline parameter descriptions to improve API clarity. ### Changed - Consolidated module method/type docs with explicit `status_code` outcomes and simplified request descriptions across updated modules. ### Fixed - Reduced ambiguity in no-content API contracts by standardizing on response types instead of separate `*Result = void` aliases. ### Removed - Removed redundant no-content `*Result` aliases from public exports and module types.
_Strengthens module type/schema contracts and trims schema exports fr… …om the public API surface._ ### Added - Explicit, SDK-native type aliases across module request/response/result contracts. ### Changed - Annotated module Valibot schemas with `v.GenericSchema<...>` to align runtime schema definitions with exported TypeScript types. ### Fixed - Improved type consistency between schemas and module contracts to reduce inferred-type drift. ### Removed - Removed public re-exports of `*Schema` symbols from module `index.ts` files and the root `src/index.ts`.
_Aligns core response contracts with explicit SDK naming and stricter… … status-code guards._ ### Added - Added explicit core response/status types: `SDKOkResponse`, `SDKNoContentResponse`, `SDKRedirectResponse`, `SDKErrorResponse`, and `SDKErrorStatusCode`. ### Changed - Renamed public core contracts from `Bridge*`/`InvokeOptions` to `SDK*`/`ModuleInvokeOptions` across exports, modules, and docs. - Updated core response schemas from `bridge*Schema` naming to `sdk*ResponseSchema` naming. - Narrowed type guards (`isSuccess`, `isClientError`, `isServerError`, `isError`) to explicit supported status codes instead of open ranges. ### Fixed - Updated guard tests and documentation examples to match the stricter status-code behavior. ### Removed - Removed legacy `BridgeResponse`, `BridgeStream`, and `BridgeStreamHandlers` API docs in favor of `SDKResponse`, `SDKStream`, and `SDKStreamHandlers`.
_Improves API docs organization with explicit groups/categories and s… …implified TypeDoc plugins._ ### Added - Added `@category` support in TSDoc config and applied category/group annotations across exported modules, types, and schemas. ### Changed - Reorganized TypeDoc output ordering (groups/categories) for HTML, API JSON, and Markdown builds. ### Removed - Removed `typedoc-plugin-valibot` from documentation build plugins and dev dependencies.
_Bump eSIM minimum Grab app to 5.409.0; Slack release posts use an in… …-channel header with changelog in a thread._ ### Changed - `DeviceModule.isEsimSupported`: `MINIMUM_VERSION` set to Grab app **5.409.0** (was 5.402.0). - `scripts/notify-slack.mjs`: release posts a short header in-channel; formatted changelog and doc links go in a thread reply (context line points readers to the thread).
### Changed - `IdentityModule.authorize`: `200` responses now include the PKCE artifacts (`codeVerifier`, `nonce`, `redirectUri`) in `result` alongside `code` and `state`, so callers no longer need to call `getAuthorizationArtifacts()` after a successful in_place flow. Storage writes are unchanged, so `getAuthorizationArtifacts()` remains available as a fallback.
### Changed - `DeviceModule.isEsimSupported`: client-side minimum Grab app **5.402.0** (`DeviceModule.MINIMUM_VERSION`); below that returns `426` without invoking the bridge; types and Valibot schema accept `403`, `424`, and `426`; JSDoc notes `mobile.device` scope and error-handling example
### Added
- `204` responses for storage `get*` methods when the key has no value (after normalizing raw bridge payloads)
- Validation and warnings for unexpected raw bridge shapes on storage reads
### Changed
- Storage `getBoolean`, `getInt`, `getString`, and `getDouble` expose `result` as the scalar value (not `{ value: … }`); empty keys for `get*` and `remove` return `400` without calling the bridge
- Empty keys for `setBoolean`, `setInt`, `setString`, and `setDouble` return `400` without calling the bridge (same client-side validation pattern as `get*` and `remove`)
### Removed
- `{ value }` wrapper on successful storage read results
### Added - New "Scopes and Permissions" section in Core Concepts guide explaining Backend vs. Mobile scopes - Authentication and initialization flow examples in Integration Guide ### Changed - Refined Core Concepts guide with improved type guard and stream documentation - Simplified Integration Guide with consolidated analytics and checkout examples - Demo applications (CDN and React) updated with improved error handling and direct status code checks - Security documentation in demo apps updated to emphasize backend token exchange requirements - Analytics documentation updated to use `ContainerAnalyticsEventState` constants ### Fixed - Coordinate property access in demo applications
PreviousNext