---
description: The Capawesome April update is here! This update includes new features and improvements for Capawesome Cloud and our Plugins.
title: Capawesome April 2025 Update - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/2025-april-update.png
---

[ Skip to content](#capawesome-april-2025-update) 

[ 🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode.](/blog/announcing-the-capacitor-vault-plugin/) 

* [  SDKs ](/docs/sdks/)
* [  Formbricks ](/docs/sdks/capacitor/formbricks/)
* [  Geocoder ](/docs/sdks/capacitor/geocoder/)
* [  Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [  Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [  libSQL ](/docs/sdks/capacitor/libsql/)
* [  Live Update ](/docs/sdks/capacitor/live-update/)
* [  Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [  Media Session ](/docs/sdks/capacitor/media-session/)
* [  ML Kit ](/docs/sdks/capacitor/mlkit/)
* [  Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [  NFC ](/docs/sdks/capacitor/nfc/)
* [  OAuth ](/docs/sdks/capacitor/oauth/)
* [  Pedometer ](/docs/sdks/capacitor/pedometer/)
* [  Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [  PostHog ](/docs/sdks/capacitor/posthog/)
* [  Printer ](/docs/sdks/capacitor/printer/)
* [  Purchases ](/docs/sdks/capacitor/purchases/)
* [  RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [  Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [  Screenshot ](/docs/sdks/capacitor/screenshot/)
* [  Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [  Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [  Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [  Share Target ](/docs/sdks/capacitor/share-target/)
* [  Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [  SQLite ](/docs/sdks/capacitor/sqlite/)
* [  Superwall ](/docs/sdks/capacitor/superwall/)
* [  Torch ](/docs/sdks/capacitor/torch/)
* [  Vault ](/docs/sdks/capacitor/vault/)
* [  Wifi ](/docs/sdks/capacitor/wifi/)
* [  Zip ](/docs/sdks/capacitor/zip/)
* [  Cordova ](/docs/sdks/cordova/)
* [  Cloud ](/docs/cloud/)
* [  Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [  Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [  FAQ ](/docs/cloud/live-updates/faq/)
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Set Up Environments ](/docs/cloud/native-builds/environments/)
* [  Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [  Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [  Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [  Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [  Use pnpm or Yarn ](/docs/cloud/native-builds/package-managers/)
* [  Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [  Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [  Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [  Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [  Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [  Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  FAQ ](/docs/cloud/native-builds/faq/)
* [  App Store Publishing ](/docs/cloud/app-store-publishing/)
* [  Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [  Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [  Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [  FAQ ](/docs/cloud/app-store-publishing/faq/)
* [  Automations ](/docs/cloud/automations/)
* [  Reference ](/docs/cloud/automations/reference/)
* [  Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [  FAQ ](/docs/cloud/automations/faq/)
* [  Assist ](/docs/cloud/assist/)
* [  CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Integrations ](/docs/cloud/integrations/)
* Account
* [  Organization ](/docs/cloud/organizations/)
* [  Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [  Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [  Billing ](/docs/cloud/organizations/billing/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  AI ](/docs/ai/)
* [  Insiders ](/docs/insiders/)
* [  Billing & Plans ](/docs/insiders/billing-and-plans/)
* [  FAQ ](/docs/insiders/faq/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/support/)
* [  Contributing ](/docs/contributing/)
* Contributing code
* [  Code of Conduct ](/docs/contributing/code-of-conduct/)
* [  Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [  Blog ](/blog/)
* Categories

* [  Cloud ](#cloud)
* [  Plugins ](#plugins)
* [  App Check ](#app-check)
* [  Authentication ](#authentication)
* [  ML Kit ](#ml-kit)
* [  Printer ](#printer)

# Capawesome April 2025 Update[¶](#capawesome-april-2025-update "Permanent link")

The Capawesome April update is here! This update includes new features and improvements for [Capawesome Cloud](/docs/cloud/) and our [Plugins](/docs/sdks/capacitor/). Let's take a look at the most important changes.

[ ![Build and deploy your Capacitor app with Capawesome Cloud](../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](/) 

## CLI[¶](#cli "Permanent link")

### Login via browser[¶](#login-via-browser "Permanent link")

The [Capawesome CLI](/docs/cloud/cli/) now supports logging in via the browser. This feature allows you to authenticate your CLI session using a web-based login flow, making it easier to manage your credentials and access the Capawesome Cloud. To get started, simply run the following command in your terminal:

`[](#%5F%5Fcodelineno-0-1)npx @capawesome/cli login
`

This will ask you how you would like to authenticate. Select "Login with a web browser" and follow the instructions in your terminal. The CLI will generate a one-time code that you can use to authenticate in your browser.

`[](#%5F%5Fcodelineno-1-1)✔ How would you like to authenticate Capawesome CLI?
[](#%5F%5Fcodelineno-1-2)Login with a web browser
[](#%5F%5Fcodelineno-1-3)
[](#%5F%5Fcodelineno-1-4) ╭──────────────────────────────────────╮
[](#%5F%5Fcodelineno-1-5) │                                      │
[](#%5F%5Fcodelineno-1-6) │  Copy your one-time code: VPD2-VCH4  │
[](#%5F%5Fcodelineno-1-7) │                                      │
[](#%5F%5Fcodelineno-1-8) ╰──────────────────────────────────────╯
[](#%5F%5Fcodelineno-1-9)
[](#%5F%5Fcodelineno-1-10)
[](#%5F%5Fcodelineno-1-11)✔ Select Yes to continue in your browser or No to cancel the authentication.
[](#%5F%5Fcodelineno-1-12)Yes
[](#%5F%5Fcodelineno-1-13)◐ Opening browser...
[](#%5F%5Fcodelineno-1-14)◐ Waiting for authentication...
[](#%5F%5Fcodelineno-1-15)◐ Signing in...
[](#%5F%5Fcodelineno-1-16)✔ Successfully signed in.                      
`

## Cloud[¶](#cloud "Permanent link")

### Account linking[¶](#account-linking "Permanent link")

You can now set a password for your Capawesome Cloud account if you previously signed up using a third-party provider (e.g., GitHub, or GitLab). This feature also allows you to link one or more third-party accounts to your Capawesome Cloud account. This is useful if you want to use multiple authentication methods or if you want to switch from one provider to another.

![Capawesome Cloud Identities](/docs/assets/images/posts/20250502_Cloud_Identities.png) 

Capawesome Cloud Identities

### Open Source Program[¶](#open-source-program "Permanent link")

We have launched the [Capawesome Cloud Open Source Program](/blog/capawesome-cloud-open-source-program/) to support open source projects and developers. This program provides free access to Capawesome Cloud for open source projects, allowing you to use our platform for Over-the-Air (OTA) updates. You can find more information about the program and how to apply in our [blog post](/blog/capawesome-cloud-open-source-program/).

### Pricing[¶](#pricing "Permanent link")

We have doubled the MAU limit on all plans for both new and existing customers:

* **Free**: 100 MAU (previously 50)
* **Starter**: 1,000 MAU (previously 500)
* **Professional**: 10,000 MAU (previously 5,000)
* **Team**: 100,000 MAU (previously 50,000)

This means that you can now use Capawesome Cloud for larger projects without having to upgrade to a higher plan. We believe that this change will make it easier for developers to get started with Capawesome Cloud and to scale their projects as needed. You can find more information about our pricing plans on our [pricing page](/#pricing).

### Two-factor authentication[¶](#two-factor-authentication "Permanent link")

You can now enhance the security of your Capawesome Cloud account by enabling two-factor authentication (2FA). This feature adds an extra layer of protection to your account, requiring a second form of verification in addition to your password. To enable 2FA, go to your [account settings](https://console.cloud.capawesome.io/settings/account) and follow the instructions.

## Plugins[¶](#plugins "Permanent link")

### Android Edge-to-Edge Support[¶](#android-edge-to-edge-support "Permanent link")

The [Capacitor Android Edge-to-Edge Support plugin](/docs/sdks/capacitor/android-edge-to-edge-support/) got several new features and improvements this month.

##### New `enable()` method[¶](#new-enable-method "Permanent link")

The `enable()` method allows you to re-enable the plugin after it has been disabled. This is useful if you want to temporarily disable the edge-to-edge support and then re-enable it later.

`[](#%5F%5Fcodelineno-2-1)import { EdgeToEdge } from '@capawesome/capacitor-android-edge-to-edge-support';
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)const enable = async () => {
[](#%5F%5Fcodelineno-2-4)  await EdgeToEdge.enable();
[](#%5F%5Fcodelineno-2-5)};
`

##### New `disable()` method[¶](#new-disable-method "Permanent link")

The `disable()` method allows you to disable the edge-to-edge support. This is useful if you want to temporarily disable the edge-to-edge support without removing the plugin from your project.

`[](#%5F%5Fcodelineno-3-1)import { EdgeToEdge } from '@capawesome/capacitor-android-edge-to-edge-support';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const disable = async () => {
[](#%5F%5Fcodelineno-3-4)  await EdgeToEdge.disable();
[](#%5F%5Fcodelineno-3-5)};
`

##### New `getInsets()` method[¶](#new-getinsets-method "Permanent link")

The `getInsets()` method allows you to retrieve the current insets that are applied by the plugin. This is useful if you need to pass these values to other plugins that require insets.

`[](#%5F%5Fcodelineno-4-1)import { EdgeToEdge } from '@capawesome/capacitor-android-edge-to-edge-support';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const getInsets = async () => {
[](#%5F%5Fcodelineno-4-4)  const { top, bottom, right, left } = await EdgeToEdge.getInsets();
[](#%5F%5Fcodelineno-4-5)  return { top, bottom, right, left };
[](#%5F%5Fcodelineno-4-6)};
`

### Bluetooth Low Energy[¶](#bluetooth-low-energy "Permanent link")

##### Peripheral mode[¶](#peripheral-mode "Permanent link")

The [Capacitor Bluetooth Low Energy plugin](/docs/sdks/capacitor/bluetooth-low-energy/) now supports peripheral mode on Android on iOS. This feature allows your app to act as a BLE peripheral, enabling other devices to connect and interact with it. This is useful for applications that need to advertise data or provide services to nearby devices.

`[](#%5F%5Fcodelineno-5-1)import { BluetoothLowEnergy } from '@capawesome-team/capacitor-bluetooth-low-energy';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const startAdvertising = async () => {
[](#%5F%5Fcodelineno-5-4)  await BluetoothLowEnergy.startAdvertising({
[](#%5F%5Fcodelineno-5-5)    name: 'CapBLE',
[](#%5F%5Fcodelineno-5-6)    services: [
[](#%5F%5Fcodelineno-5-7)      {
[](#%5F%5Fcodelineno-5-8)        id: '12345678-1234-1234-1234-1234567890AB',
[](#%5F%5Fcodelineno-5-9)        characteristics: [
[](#%5F%5Fcodelineno-5-10)          {
[](#%5F%5Fcodelineno-5-11)            id: '87654321-4321-4321-4321-BA0987654321',
[](#%5F%5Fcodelineno-5-12)            descriptors: [], // Descriptors are ignored for now
[](#%5F%5Fcodelineno-5-13)            permissions: {
[](#%5F%5Fcodelineno-5-14)              read: true,
[](#%5F%5Fcodelineno-5-15)              write: true,
[](#%5F%5Fcodelineno-5-16)            },
[](#%5F%5Fcodelineno-5-17)            properties: {
[](#%5F%5Fcodelineno-5-18)              indicate: true,
[](#%5F%5Fcodelineno-5-19)              notify: true,
[](#%5F%5Fcodelineno-5-20)              read: true,
[](#%5F%5Fcodelineno-5-21)              write: true,
[](#%5F%5Fcodelineno-5-22)            },
[](#%5F%5Fcodelineno-5-23)          },
[](#%5F%5Fcodelineno-5-24)        ],
[](#%5F%5Fcodelineno-5-25)      },
[](#%5F%5Fcodelineno-5-26)    ],
[](#%5F%5Fcodelineno-5-27)  });
[](#%5F%5Fcodelineno-5-28)};
`

The `startAdvertising` method allows you to specify the name of the peripheral and the services it provides. The services can include characteristics with various properties and permissions. You can also stop advertising by calling the `stopAdvertising` method:

`[](#%5F%5Fcodelineno-6-1)const stopAdvertising = async () => {
[](#%5F%5Fcodelineno-6-2)  await BluetoothLowEnergy.stopAdvertising();
[](#%5F%5Fcodelineno-6-3)};
`

### Contacts[¶](#contacts "Permanent link")

##### New `birthdate` property[¶](#new-birthdate-property "Permanent link")

The [Capacitor Contacts plugin](/docs/sdks/capacitor/contacts/) now supports the `birthdate` property for contacts. This property allows you to store and retrieve the birthdate of a contact, making it easier to manage contact information.

`[](#%5F%5Fcodelineno-7-1)import { Contacts } from '@capawesome-team/capacitor-contacts';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const createContact = async () => {
[](#%5F%5Fcodelineno-7-4)  return Contacts.createContact({
[](#%5F%5Fcodelineno-7-5)    contact: {
[](#%5F%5Fcodelineno-7-6)      birthday: {
[](#%5F%5Fcodelineno-7-7)        day: 1,
[](#%5F%5Fcodelineno-7-8)        month: 1,
[](#%5F%5Fcodelineno-7-9)        year: 1990
[](#%5F%5Fcodelineno-7-10)      },
[](#%5F%5Fcodelineno-7-11)      givenName: 'John',
[](#%5F%5Fcodelineno-7-12)      familyName: 'Doe'
[](#%5F%5Fcodelineno-7-13)    }
[](#%5F%5Fcodelineno-7-14)  });
[](#%5F%5Fcodelineno-7-15)};
`

Please note that the `year` property is optional and can be omitted if not needed.

### Firebase[¶](#firebase "Permanent link")

#### Analytics[¶](#analytics "Permanent link")

##### New initiate on-device conversion measurement methods[¶](#new-initiate-on-device-conversion-measurement-methods "Permanent link")

The [Capacitor Firebase Analytics plugin](/docs/sdks/capacitor/firebase/analytics/) now supports multiple new methods for initiating on-device conversion measurement. These methods allow you to initiate conversion measurement using email addresses and phone numbers, as well as their hashed versions. This is useful for tracking conversions and measuring the effectiveness of your marketing campaigns.

`[](#%5F%5Fcodelineno-8-1)import { FirebaseAnalytics } from '@capacitor-firebase/analytics';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const initiateOnDeviceConversionMeasurementWithEmailAddress = async () => {
[](#%5F%5Fcodelineno-8-4)  await FirebaseAnalytics.initiateOnDeviceConversionMeasurementWithEmailAddress({
[](#%5F%5Fcodelineno-8-5)    emailAddress: 'mail@example.com',
[](#%5F%5Fcodelineno-8-6)  });
[](#%5F%5Fcodelineno-8-7)};
[](#%5F%5Fcodelineno-8-8)
[](#%5F%5Fcodelineno-8-9)const initiateOnDeviceConversionMeasurementWithPhoneNumber = async () => {
[](#%5F%5Fcodelineno-8-10)  await FirebaseAnalytics.initiateOnDeviceConversionMeasurementWithPhoneNumber({
[](#%5F%5Fcodelineno-8-11)    phoneNumber: '+49123456789',
[](#%5F%5Fcodelineno-8-12)  });
[](#%5F%5Fcodelineno-8-13)};
[](#%5F%5Fcodelineno-8-14)
[](#%5F%5Fcodelineno-8-15)const initiateOnDeviceConversionMeasurementWithHashedEmailAddress = async () => {
[](#%5F%5Fcodelineno-8-16)  await FirebaseAnalytics.initiateOnDeviceConversionMeasurementWithHashedEmailAddress({
[](#%5F%5Fcodelineno-8-17)    emailAddressToHash: 'mail@example.com',
[](#%5F%5Fcodelineno-8-18)  });
[](#%5F%5Fcodelineno-8-19)};
[](#%5F%5Fcodelineno-8-20)
[](#%5F%5Fcodelineno-8-21)const initiateOnDeviceConversionMeasurementWithHashedPhoneNumber = async () => {
[](#%5F%5Fcodelineno-8-22)  await FirebaseAnalytics.initiateOnDeviceConversionMeasurementWithHashedPhoneNumber({
[](#%5F%5Fcodelineno-8-23)    phoneNumberToHash: '+49123456789',
[](#%5F%5Fcodelineno-8-24)  });
[](#%5F%5Fcodelineno-8-25)};
`

### App Check[¶](#app-check "Permanent link")

##### New `tokenChanged` event[¶](#new-tokenchanged-event "Permanent link")

The [Capacitor Firebase App Check plugin](/docs/sdks/capacitor/firebase/app-check/) now supports the `tokenChanged` event also on Android and iOS. This event is triggered when the App Check token changes, allowing you to handle token updates in your application.

`[](#%5F%5Fcodelineno-9-1)import { FirebaseAppCheck } from '@capacitor-firebase/app-check';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const addListener = async () => {
[](#%5F%5Fcodelineno-9-4)  await FirebaseAppCheck.addListener('tokenChanged', (event) => {
[](#%5F%5Fcodelineno-9-5)    console.log('Token changed:', event.token);
[](#%5F%5Fcodelineno-9-6)  });
[](#%5F%5Fcodelineno-9-7)};
`

### Authentication[¶](#authentication "Permanent link")

The [Capacitor Firebase Authentication plugin](/docs/sdks/capacitor/firebase/authentication/) got two new features this month.

##### Facebook Limited Login[¶](#facebook-limited-login "Permanent link")

The plugin now supports Facebook Limited Login. This feature allows you to authenticate users with Facebook while limiting the amount of data shared with your app. This is useful for improving user privacy and security.

`[](#%5F%5Fcodelineno-10-1)import { FirebaseAuthentication } from '@capacitor-firebase/authentication';
[](#%5F%5Fcodelineno-10-2)
[](#%5F%5Fcodelineno-10-3)const signInWithFacebook = async () => {
[](#%5F%5Fcodelineno-10-4)  const result = await FirebaseAuthentication.signInWithFacebook({
[](#%5F%5Fcodelineno-10-5)    useLimitedLogin: true,
[](#%5F%5Fcodelineno-10-6)  });
[](#%5F%5Fcodelineno-10-7)  return result.user;
[](#%5F%5Fcodelineno-10-8)};
`

If you don't want to use the limited login feature, you have to request the App Tracking Transparency permission first. This is required by Apple to use Facebook login without limited login:

`[](#%5F%5Fcodelineno-11-1)import { FirebaseAuthentication } from '@capacitor-firebase/authentication';
[](#%5F%5Fcodelineno-11-2)
[](#%5F%5Fcodelineno-11-3)
[](#%5F%5Fcodelineno-11-4)const signInWithFacebook = async () => {
[](#%5F%5Fcodelineno-11-5)  const { status } = await FirebaseAuthentication.requestAppTrackingTransparencyPermission();
[](#%5F%5Fcodelineno-11-6)  if (status !== 'granted') {
[](#%5F%5Fcodelineno-11-7)    throw new Error('App Tracking Transparency permission not granted');
[](#%5F%5Fcodelineno-11-8)  }
[](#%5F%5Fcodelineno-11-9)  const result = await FirebaseAuthentication.signInWithFacebook({
[](#%5F%5Fcodelineno-11-10)    useLimitedLogin: false,
[](#%5F%5Fcodelineno-11-11)  });
[](#%5F%5Fcodelineno-11-12)  return result.user;
[](#%5F%5Fcodelineno-11-13)};
`

##### Disable the Android Credential Manager[¶](#disable-the-android-credential-manager "Permanent link")

Since a few users have reported issues with the new Android Credential Manager (see [#848](https://github.com/capawesome-team/capacitor-firebase/issues/848)), we have added a new property to disable it:

`[](#%5F%5Fcodelineno-12-1)import { FirebaseAuthentication } from '@capacitor-firebase/authentication';
[](#%5F%5Fcodelineno-12-2)
[](#%5F%5Fcodelineno-12-3)const signInWithGoogle = async () => {
[](#%5F%5Fcodelineno-12-4)  const result = await FirebaseAuthentication.signInWithGoogle({
[](#%5F%5Fcodelineno-12-5)    useCredentialManager: false,
[](#%5F%5Fcodelineno-12-6)  });
[](#%5F%5Fcodelineno-12-7)  return result.user;
[](#%5F%5Fcodelineno-12-8)};
`

By default, the credential manager is enabled. This property is only available on Android.

### ML Kit[¶](#ml-kit "Permanent link")

#### Barcode Scanning[¶](#barcode-scanning "Permanent link")

##### Add torch support[¶](#add-torch-support "Permanent link")

The [Barcode Scanning](/docs/sdks/capacitor/mlkit/barcode-scanning/) plugin now has its own methods to control the flashlight again. These methods were first removed and migrated to a separate [Capacitor Torch plugin](/docs/sdks/capacitor/torch/). However, as this led to various problems, we have decided to bring the methods back into the barcode scanning plugin.

`[](#%5F%5Fcodelineno-13-1)import { BarcodeScanning } from '@capacitor-mlkit/barcode-scanning';
[](#%5F%5Fcodelineno-13-2)
[](#%5F%5Fcodelineno-13-3)const enableTorch = async () => {
[](#%5F%5Fcodelineno-13-4)  await Torch.enable();
[](#%5F%5Fcodelineno-13-5)};
[](#%5F%5Fcodelineno-13-6)
[](#%5F%5Fcodelineno-13-7)const disableTorch = async () => {
[](#%5F%5Fcodelineno-13-8)  await Torch.disable();
[](#%5F%5Fcodelineno-13-9)};
[](#%5F%5Fcodelineno-13-10)
[](#%5F%5Fcodelineno-13-11)const toggleTorch = async () => {
[](#%5F%5Fcodelineno-13-12)  await Torch.toggle();
[](#%5F%5Fcodelineno-13-13)};
[](#%5F%5Fcodelineno-13-14)
[](#%5F%5Fcodelineno-13-15)const isTorchEnabled = async () => {
[](#%5F%5Fcodelineno-13-16)  const { enabled } = await Torch.isEnabled();
[](#%5F%5Fcodelineno-13-17)  return enabled;
[](#%5F%5Fcodelineno-13-18)};
[](#%5F%5Fcodelineno-13-19)
[](#%5F%5Fcodelineno-13-20)const isTorchAvailable = async () => {
[](#%5F%5Fcodelineno-13-21)  const { available } = await Torch.isAvailable();
[](#%5F%5Fcodelineno-13-22)  return available;
[](#%5F%5Fcodelineno-13-23)};
`

The methods are available on Android and iOS.

##### New `3840x2160` resolution[¶](#new-3840x2160-resolution "Permanent link")

The [Barcode Scanning](/docs/sdks/capacitor/mlkit/barcode-scanning/) plugin now supports the `3840x2160` resolution for scanning barcodes. This resolution is available on Android and iOS devices with a camera that supports this resolution. The new resolution allows for higher quality scans and improved performance in low-light conditions.

`[](#%5F%5Fcodelineno-14-1)import { BarcodeScanning, Resolution } from '@capacitor-mlkit/barcode-scanning';
[](#%5F%5Fcodelineno-14-2)
[](#%5F%5Fcodelineno-14-3)const startScan = async () => {
[](#%5F%5Fcodelineno-14-4)  await BarcodeScanner.startScan({
[](#%5F%5Fcodelineno-14-5)    resolution: Resolution['3840x2160'],
[](#%5F%5Fcodelineno-14-6)  });
[](#%5F%5Fcodelineno-14-7)};
`

#### Subject Segmentation[¶](#subject-segmentation "Permanent link")

We have published a new [Subject Segmentation](/docs/sdks/capacitor/mlkit/subject-segmentation/) plugin. This plugin allows you to segment subjects in images, making it easier to create custom image processing applications. The plugin is available on Android.

`[](#%5F%5Fcodelineno-15-1)import { SubjectSegmentation } from '@capacitor-mlkit/subject-segmentation';
[](#%5F%5Fcodelineno-15-2)
[](#%5F%5Fcodelineno-15-3)const processImage = async () => {
[](#%5F%5Fcodelineno-15-4)  const { path } = await SubjectSegmentation.processImage({
[](#%5F%5Fcodelineno-15-5)    path: 'path/to/image.jpg',
[](#%5F%5Fcodelineno-15-6)    confidence: 0.7,
[](#%5F%5Fcodelineno-15-7)  });
[](#%5F%5Fcodelineno-15-8)  return path;
[](#%5F%5Fcodelineno-15-9)};
`

The plugin provides a simple API for processing images and returning the segmented image. You can adjust the confidence level to control the sensitivity of the segmentation.

### Printer[¶](#printer "Permanent link")

##### New `printBase64(...)` method[¶](#new-printbase64-method "Permanent link")

The [Capacitor Printer plugin](/docs/sdks/capacitor/printer/) now supports printing base64 encoded files. This feature allows you to print files that are not available on the device's file system, such as files that are generated in memory or downloaded from a remote server. The new `printBase64(...)` method accepts a base64 encoded string and prints it using the default printer.

`[](#%5F%5Fcodelineno-16-1)import { Printer } from '@capawesome-team/capacitor-printer';
[](#%5F%5Fcodelineno-16-2)
[](#%5F%5Fcodelineno-16-3)const printBase64 = async () => {
[](#%5F%5Fcodelineno-16-4)  await Printer.printBase64({
[](#%5F%5Fcodelineno-16-5)    name: 'My Document',
[](#%5F%5Fcodelineno-16-6)    data: 'JVBERi0...',
[](#%5F%5Fcodelineno-16-7)  });
[](#%5F%5Fcodelineno-16-8)}
`

The method is available on Android and iOS. Please note that large base64 strings may lead to app crashes or performance issues. We therefore recommend using this feature only for small files or images. For larger files, consider saving them to the device's file system and using the `printFile(...)` method.

##### New `printFile(...)` method[¶](#new-printfile-method "Permanent link")

The [Capacitor Printer plugin](/docs/sdks/capacitor/printer/) now also supports printing files (including images) from the device's file system. The new `printFile(...)` method accepts a file path and prints it using the default printer.

`[](#%5F%5Fcodelineno-17-1)import { Printer } from '@capawesome-team/capacitor-printer';
[](#%5F%5Fcodelineno-17-2)
[](#%5F%5Fcodelineno-17-3)const printFile = async () => {
[](#%5F%5Fcodelineno-17-4)  await Printer.printFile({
[](#%5F%5Fcodelineno-17-5)    mimeType: 'application/pdf',
[](#%5F%5Fcodelineno-17-6)    path: '/path/to/file.pdf',
[](#%5F%5Fcodelineno-17-7)  });
[](#%5F%5Fcodelineno-17-8)};
`

The method is available on Android and iOS.

June 8, 2026 

 Back to top 