> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.qonversion.io/llms.txt
> Use this file to discover all available pages before exploring further.

# [Jan 2026] Migration guide. Capacitor 1.

> In this major release of the Qonversion Capacitor Plugin, we've made crucial changes to support No-Codes along with the new purchase method, plugin migration to the Qonversion organization in NPM, and some others.

## No-Codes support

Qonversion No-Codes are now officially released! For integration steps, please follow our [documentation](no-codes).

## Capacitor 8 support

We are now supporting the new Capacitor 8. For that purpose, we've upgraded the minimal supported native versions:

* iOS version - 13.0 -> 14.0,
* Android version - 22 -> 23,
* Java version - 17 -> 21.

## New purchase method

We have refactored the `purchase` method - now it returns comprehensive information, including status, entitlements after the purchase, error information if it happened, and also stores transaction info. After upgrading to this version, rewrite your `purchase` calls as follows:

<CodeGroup>
  ```typescript Before theme={null}
  try {
    // Old method returned only Map<string, Entitlement>
    const entitlements = await Qonversion.getSharedInstance().purchaseProduct(product, purchaseOptions);
    
    // Check for entitlement
    const premiumEntitlement = entitlements.get('premium');
    if (premiumEntitlement?.isActive) {
      console.log('Purchase successful! Premium access granted.');
    }
  } catch (error) {
    // All errors, including user cancellation, were handled via catch
    if (error.code === QonversionErrorCode.CanceledPurchase) {
      console.log('User canceled the purchase');
    } else {
      console.error('Purchase failed:', error.message);
    }
  }
  ```

  ```typescript After theme={null}
  const result = await Qonversion.getSharedInstance().purchase(product, purchaseOptions);

  if (result.isSuccess) {
    // Purchase succeeded
    const premiumEntitlement = result.entitlements?.get('premium');
    if (premiumEntitlement?.isActive) {
      console.log('Purchase successful! Premium access granted.');
    }

    // Access transaction details
    console.log('Transaction ID:', result.storeTransaction?.transactionId);
    console.log('Product ID:', result.storeTransaction?.productId);

  } else if (result.isCanceled) {
    // User canceled — not an error, just a status
    console.log('User canceled the purchase');

  } else if (result.isPending) {
    // Purchase awaiting confirmation (e.g., parental controls, deferred payments)
    console.log('Purchase is pending approval');

  } else if (result.isError) {
    // An actual error occurred
    console.error('Purchase failed:', result.error?.description);
    console.error('Error code:', result.error?.code);
  }
  ```
</CodeGroup>

## Google Play Billing Library upgrade to version 8

In this version, we've upgraded Google Play Billing Library on Android to version 8.1.0, which results in `skuDetails` removal from `Product` and also requires setting up Base Plan ID for all the subscription products in the Qonversion Dashboard, if you haven't set them yet. Read more [here](july-2025-migration-guide-google-play-billing-library-8#upgrade-subscription-products-in-qonversion-dashboard).

## Properties renamings

We've made a couple of renamings of our DTO properties to sync them with the rest codestyle. If you were using these fields, simply upgrade their names as described in the table below

| Old name               | New name               |
| ---------------------- | ---------------------- |
| `Product.qonversionID` | `Product.qonversionId` |
| `Product.storeID`      | `Product.storeId`      |
| `Product.basePlanID`   | `Product.basePlanId`   |

***

[\[Jan 2026\] Migration guide. Cordova 7.](jan-2026-migration-guide-cordova-7)

[\[Nov 2025\] Migration guide. iOS 6.0.0](nov-2025-migration-guide-ios-600)
