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

[ Skip to content](#capawesome-february-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

* [  Plugins ](#plugins)
* [  Live Update ](#live-update)
* [  ML Kit ](#ml-kit)
* [  Speech Synthesis ](#speech-synthesis)

# Capawesome February 2025 Update[¶](#capawesome-february-2025-update "Permanent link")

The Capawesome February 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) ](/) 

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

### Advanced Filtering[¶](#advanced-filtering "Permanent link")

We have added advanced filtering to the [Capawesome Cloud Console](https://console.cloud.capawesome.io/). This feature allows you to filter your bundles by various criteria, such as ID, channel, artifact type, and artifact status, making it easier to manage your live updates.

### Force Code Signing[¶](#force-code-signing "Permanent link")

You can now enforce code signing for all bundles in your app. This feature ensures that all bundles are signed with a private key before they are uploaded to the Capawesome Cloud, making sure that no unsigned bundles are distributed to your users. You can enable this feature in the settings of your app through the [Capawesome Cloud Console](https://console.cloud.capawesome.io/apps).

### Self-Hosting[¶](#self-hosting "Permanent link")

Check out the new [Self-Hosting](/docs/cloud/live-updates/self-hosting/) guide to learn how to self-host your Live Updates. This feature allows you to host the bundles on your server instead of Capawesome Cloud. This can be useful if you have specific security requirements, or if you want to avoid being affected by data transfer or storage limitations.

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

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

We have published a new [Capacitor Android Edge-to-Edge Support plugin](/docs/sdks/capacitor/android-edge-to-edge-support/) to support [edge-to-edge](https://developer.android.com/develop/ui/views/layout/edge-to-edge) display on Android. This has been a real problem for many users who have updated to Capacitor 7, as Android 15 enforces the edge-to-edge display. This causes the web view to be displayed behind the status bar and navigation bar, which can lead to layout issues. The plugin restores the previous behavior and ensures that the web view is displayed correctly.

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

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

The [Capacitor Firebase App Check plugin](/docs/sdks/capacitor/firebase/app-check/) now supports all available providers. For this, a new `provider` option has been added to the `initialize(...)` method.

`[](#%5F%5Fcodelineno-0-1)import { FirebaseAppCheck } from '@capacitor-firebase/app-check';
[](#%5F%5Fcodelineno-0-2)import { ReCaptchaV3Provider } from '@capacitor-firebase/app-check';
[](#%5F%5Fcodelineno-0-3)
[](#%5F%5Fcodelineno-0-4)const initialize = async () => {
[](#%5F%5Fcodelineno-0-5)  await FirebaseAppCheck.initialize({
[](#%5F%5Fcodelineno-0-6)    provider: new ReCaptchaV3Provider('myKey');
[](#%5F%5Fcodelineno-0-7)  });
[](#%5F%5Fcodelineno-0-8)};
`

#### Crashlytics[¶](#crashlytics "Permanent link")

##### Custom Keys And Values[¶](#custom-keys-and-values "Permanent link")

The [Capacitor Firebase Crashlytics plugin](/docs/sdks/capacitor/firebase/crashlytics/) now supports custom keys and values for the `recordException(...)` method. This allows you to attach additional information to an exception, such as user-specific data or metadata, making it easier to debug and analyze non-fatal exceptions.

`[](#%5F%5Fcodelineno-1-1)import { FirebaseCrashlytics } from '@capacitor-firebase/crashlytics';
[](#%5F%5Fcodelineno-1-2)
[](#%5F%5Fcodelineno-1-3)const recordException = async () => {
[](#%5F%5Fcodelineno-1-4)  await FirebaseCrashlytics.recordException({
[](#%5F%5Fcodelineno-1-5)    message: 'My error message',
[](#%5F%5Fcodelineno-1-6)    customKeysAndValues: [
[](#%5F%5Fcodelineno-1-7)      {
[](#%5F%5Fcodelineno-1-8)        key: 'customKey1',
[](#%5F%5Fcodelineno-1-9)        value: 'customValue1',
[](#%5F%5Fcodelineno-1-10)        type: 'string',
[](#%5F%5Fcodelineno-1-11)      },
[](#%5F%5Fcodelineno-1-12)      {
[](#%5F%5Fcodelineno-1-13)        key: 'customKey2',
[](#%5F%5Fcodelineno-1-14)        value: 123,
[](#%5F%5Fcodelineno-1-15)        type: 'int',
[](#%5F%5Fcodelineno-1-16)      }
[](#%5F%5Fcodelineno-1-17)    ],
[](#%5F%5Fcodelineno-1-18)  });
[](#%5F%5Fcodelineno-1-19)};
`

### Live Update[¶](#live-update "Permanent link")

##### Code Signing for Self-Hosted Bundles[¶](#code-signing-for-self-hosted-bundles "Permanent link")

The [Capacitor Live Update plugin](/docs/sdks/capacitor/live-update/) now supports code signing for self-hosted bundles. Code signing was previously only available for bundles hosted on Capawesome Cloud. With this update, you can now also host your bundles on your server and ensure that only signed bundles are installed on your users' devices.

`[](#%5F%5Fcodelineno-2-1)import { LiveUpdate } from '@capawesome-team/capacitor-live-update';
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)const downloadLatestBundle = async () => {
[](#%5F%5Fcodelineno-2-4)  // Fetch the latest bundle from Capawesome Cloud
[](#%5F%5Fcodelineno-2-5)  const { bundleId, downloadUrl, signature } = await LiveUpdate.fetchLatestBundle();
[](#%5F%5Fcodelineno-2-6)  // Download the bundle from your server
[](#%5F%5Fcodelineno-2-7)  await LiveUpdate.downloadBundle({
[](#%5F%5Fcodelineno-2-8)    bundleId,
[](#%5F%5Fcodelineno-2-9)    signature,
[](#%5F%5Fcodelineno-2-10)    url: downloadUrl,
[](#%5F%5Fcodelineno-2-11)  });
[](#%5F%5Fcodelineno-2-12)};
`

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

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

##### Auto Focus[¶](#auto-focus "Permanent link")

The [ML Kit Barcode Scanning](/docs/sdks/capacitor/mlkit/barcode-scanning/) plugin now also supports auto-focus on iOS. This feature enables the camera to focus automatically on the barcode, making it easier to scan barcodes from various distances. You don't need to take any action to activate this feature; it is enabled automatically when you initiate the barcode scanning process.

##### Web Support[¶](#web-support "Permanent link")

The [ML Kit Barcode Scanning](/docs/sdks/capacitor/mlkit/barcode-scanning/) plugin now also supports the web platform. You can use the plugin in your web app to scan barcodes directly from the browser thanks to the [Barcode Detection API](https://developer.mozilla.org/en-US/docs/Web/API/Barcode%5FDetection%5FAPI).

`` [](#%5F%5Fcodelineno-3-1)import { BarcodeScanner } from '@capacitor-mlkit/barcode-scanning';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const startScan = async () => {
[](#%5F%5Fcodelineno-3-4)  // Add the `barcodeScanned` listener
[](#%5F%5Fcodelineno-3-5)  const listener = await BarcodeScanner.addListener(
[](#%5F%5Fcodelineno-3-6)    'barcodeScanned',
[](#%5F%5Fcodelineno-3-7)    async result => {
[](#%5F%5Fcodelineno-3-8)      console.log(result.barcode);
[](#%5F%5Fcodelineno-3-9)    },
[](#%5F%5Fcodelineno-3-10)  );
[](#%5F%5Fcodelineno-3-11)
[](#%5F%5Fcodelineno-3-12)  // Start the barcode scanner
[](#%5F%5Fcodelineno-3-13)  await BarcodeScanner.startScan({
[](#%5F%5Fcodelineno-3-14)    videoElement: document.getElementById('video'),
[](#%5F%5Fcodelineno-3-15)  });
[](#%5F%5Fcodelineno-3-16)};
 ``

### Speech Synthesis[¶](#speech-synthesis "Permanent link")

##### New `synthesizeToFile(...)` method[¶](#new-synthesizetofile-method "Permanent link")

The [Capacitor Speech Synthesis plugin](/docs/sdks/capacitor/speech-synthesis/) now supports the `synthesizeToFile(...)` method. This method allows you to synthesize text to an audio file and save it to the device. The audio file can be played back or shared with other apps.

`[](#%5F%5Fcodelineno-4-1)import { SpeechSynthesis } from '@capawesome-team/capacitor-speech-synthesis';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const synthesizeToFile = async () => {
[](#%5F%5Fcodelineno-4-4)  // Add an utterance to the utterance queue to be synthesized to a file
[](#%5F%5Fcodelineno-4-5)  const { path, utteranceId } = await SpeechSynthesis.synthesizeToFile({
[](#%5F%5Fcodelineno-4-6)    language: 'en-US',
[](#%5F%5Fcodelineno-4-7)    pitch: 1.0,
[](#%5F%5Fcodelineno-4-8)    queueStrategy: QueueStrategy.Add,
[](#%5F%5Fcodelineno-4-9)    rate: 1.0,
[](#%5F%5Fcodelineno-4-10)    text: 'Hello, World!',
[](#%5F%5Fcodelineno-4-11)    voiceId: 'com.apple.ttsbundle.Samantha-compact',
[](#%5F%5Fcodelineno-4-12)    volume: 1.0,
[](#%5F%5Fcodelineno-4-13)  });
[](#%5F%5Fcodelineno-4-14)  // Wait for the utterance to finish
[](#%5F%5Fcodelineno-4-15)  await new Promise(resolve => {
[](#%5F%5Fcodelineno-4-16)    void SpeechSynthesis.addListener('end', event => {
[](#%5F%5Fcodelineno-4-17)      if (event.utteranceId === utteranceId) {
[](#%5F%5Fcodelineno-4-18)        resolve();
[](#%5F%5Fcodelineno-4-19)      }
[](#%5F%5Fcodelineno-4-20)    });
[](#%5F%5Fcodelineno-4-21)  });
[](#%5F%5Fcodelineno-4-22)  // Return the path to the synthesized audio file
[](#%5F%5Fcodelineno-4-23)  return path;
[](#%5F%5Fcodelineno-4-24)};
`

June 8, 2026 

 Back to top 