# React Native SDK - Changelog

All notable changes to the GlomoPay React Native SDK.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and the SDK adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

> The canonical changelog ships with the [npm package](https://www.npmjs.com/package/@glomopay/react-native-sdk). This page mirrors it for convenience.


## [4.0.0] - 2026-06-11

### Breaking Changes

- **Consolidated async payment callbacks**: `onBankTransferSubmitted` and `onPayViaBankCompleted` have been replaced by a single `onUserJourneyCompleted` callback. The new callback receives a `GlomoUserJourneyCompletedPayload` with a `journeyType` field from the `ASYNC_PAYMENT_EVENTS` enum.
- **Removed `onPayViaBankBankConnectionSuccessful`**: This callback has been removed.
- **Removed types**: `GlomoBankTransferPayload` and `GlomoPayViaBankConnectionPayload` are no longer exported.
- **`onSdkError` is now required**: Previously optional, `onSdkError` must now be provided. This ensures validation errors, device compliance failures, and configuration issues are handled properly.


### Added

- **`ASYNC_PAYMENT_EVENTS` enum**: Enumeration of asynchronous payment event types (`BANK_TRANSFER_SUBMITTED`, `PAY_VIA_BANK_COMPLETED`).
- **`GlomoUserJourneyCompletedPayload` type**: Flat payload interface with `journeyType`, `orderId?`, `status?`, `senderAccountNumber?`, `transactionReference?`.
- **`onUserJourneyCompleted` callback**: Single callback for all asynchronous payment flow completions.


### Unchanged

- `CheckoutStatus` values `bank_transfer_submitted` and `pay_via_bank_completed` remain for granular `getStatus()` state checks.


Part of the [v4 documentation](/product-guide/sdk/react-native-sdk/v4). See the [Migration Guide](/product-guide/sdk/react-native-sdk/migration) for upgrade instructions.

## [3.1.0] - 2026-06-08

### Added

- **Subscriptions checkout support** - new `subscriptionId` prop on `GlomoCheckout`. When provided, the SDK bypasses order type detection and renders the subscriptions checkout flow directly. No API call is made - the inner checkout component mounts immediately. The `detecting_order_type` status is not emitted for subscription flows.
- **Mutual exclusion validation** - `GlomoCheckout` validates that exactly one of `orderId` or `subscriptionId` is provided. If both or neither are set, `onSdkError` fires with a clear message and `start()` returns `false`.


### Changed

- **`orderId` is now optional** on `GlomoCheckoutProps` - required only when `subscriptionId` is absent.


### Deprecated

- **`useGlomoCheckout` hook** - use the `GlomoCheckout` component with a ref instead. The hook does not provide reactive state - `getStatus()` returns a point-in-time snapshot. Will be removed in a future major version.


Part of the [v3 documentation](/product-guide/sdk/react-native-sdk/v3).

## [3.0.1] - 2026-06-02

### Added

- **`onPayViaBankBankConnectionSuccessful` callback** - fires when a bank connection is successfully established during the pay via bank flow. Provides `GlomoPayViaBankConnectionPayload` (`bankIdentifier`, `cooldownPeriodInMinutes`, `bankName`, `bankImageSrc`, `bankImageAlt`). This is informational only and does not change the checkout status.
- **`GlomoPayViaBankConnectionPayload` type** - new exported type for the bank connection callback payload.


### Fixed

- Repeat `start()` calls with the same orderId no longer fail silently due to cached API responses.
- Checkout dismissal now fully resets internal state, preventing stale UI on re-open.


Part of the [v3 documentation](/product-guide/sdk/react-native-sdk/v3).

## [3.0.0] - 2026-06-01

### Breaking Changes

- **New unified component**: `GlomoLrsCheckout` has been replaced by `GlomoCheckout`. The new component automatically detects the order type (LRS or Standard) and renders the appropriate checkout flow.
- **`start()` is now async**: Returns `Promise<boolean>` instead of `boolean`. Update call sites to `await`:

```tsx
const started = await checkoutRef.current?.start();
```
- **Renamed exports**:
| v2 | v3 |
|  --- | --- |
| `GlomoLrsCheckout` | `GlomoCheckout` |
| `GlomoLrsCheckoutRef` | `GlomoCheckoutRef` |
| `GlomoLrsCheckoutProps` | `GlomoCheckoutProps` |
| `GlomoLrsCheckoutPayload` | `GlomoCheckoutPayload` |
| `GlomoLrsServer` | `GlomoServer` |
| `LrsCheckoutStatus` | `CheckoutStatus` |
| `useLrsCheckout` | `useGlomoCheckout` |
- **Removed exports**: v2 LRS-specific names are no longer available.


### Added

- **Standard checkout support** - cards, bank transfers, pay via bank, and camera-based bank authentication flows, all through the same `GlomoCheckout` component. No integration changes needed - the order type is detected automatically.
- **`onBankTransferSubmitted` callback** - fires when the user submits bank transfer details in a standard checkout flow. Provides `GlomoBankTransferPayload` (`orderId`, `senderAccountNumber`, `transactionReference`).
- **`onPayViaBankCompleted` callback** - fires when the pay via bank journey completes. Provides `{ status: string }`.
- **`onUserRefusedCameraPermissions` callback** - fires when the user denies camera access during bank authentication (Android only). The checkout is dismissed automatically.
- **`detecting_order_type` checkout status** - returned by `getStatus()` while the SDK determines the order type.
- **`bank_transfer_submitted` checkout status** - indicates a bank transfer has been submitted and is awaiting confirmation.
- **`pay_via_bank_completed` checkout status** - indicates the pay via bank flow has completed.
- **`GlomoBankTransferPayload` type** - new exported type for the bank transfer callback payload.
- **`useGlomoCheckout` hook** - for advanced integration patterns needing direct access to order type detection state.


### Platform Configuration (New)

Checkout flows with camera-based bank authentication require native permissions:

- **Android** (`AndroidManifest.xml`): `<uses-permission android:name="android.permission.CAMERA" />`
- **iOS** (`Info.plist`): `NSCameraUsageDescription` key


These are only required for flows that use camera-based bank authentication.

See the [Migration Guide](/product-guide/sdk/react-native-sdk/migration) for upgrade instructions from v1.

## [2.0.2] - 2025-11-26

Private v2 release candidate with experimental features. Not available for general use.

Backwards compatible with `v1.x`

## [1.3.5] - 2026-04-10

Last v1 release. See [v1 documentation](/product-guide/sdk/react-native-sdk/v1).

LRS-only checkout via `GlomoLrsCheckout` component. Synchronous `start()` method. Device security compliance via optional `jail-monkey` integration.

## Related

- [React Native SDK documentation](/product-guide/sdk/react-native-sdk/v4) - latest version (v4)
- [Migration Guide (v1 to v4)](/product-guide/sdk/react-native-sdk/migration)
- [React Native SDK v3 (Archived)](/product-guide/sdk/react-native-sdk/v3)
- [React Native SDK v1 (Archived)](/product-guide/sdk/react-native-sdk/v1)