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

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

* [  GitHub Action ](#github-action)
* [  Plugins ](#plugins)

# Capawesome March 2025 Update[¶](#capawesome-march-2025-update "Permanent link")

The Capawesome March 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")

### Console[¶](#console "Permanent link")

#### 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).

#### Git Integration[¶](#git-integration "Permanent link")

Capawesome Cloud offers a lightweight Git integration that allows you to link your bundles to Git commits. This way, you can easily track which version of your app is currently live and which changes have been made since the last update. To enable Git integration, simply edit the app in the Capawesome Cloud Console, enable the Git integration toggle and provide the URL of the Git repository. After that, you can use the [Capawesome CLI](/docs/cloud/cli/) to create a new bundle and link it to a specific commit:

`[](#%5F%5Fcodelineno-0-1)npx @capawesome/cli apps:bundles:create --commit-message "feat: support in-app purchases" --commit-ref "main" --commit-sha "b0cb01e"
`

Check out the [documentation](/docs/cloud/live-updates/integrations/) for more information.

### GitHub Action[¶](#github-action "Permanent link")

#### Git Integration[¶](#git-integration%5F1 "Permanent link")

The [GitHub Action](https://github.com/capawesome-team/cloud-live-update-action) also supports the new Git integration feature.

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

### App Shortcuts[¶](#app-shortcuts "Permanent link")

The [Capacitor App Shortcuts plugin](/docs/sdks/capacitor/app-shortcuts/) received various bug fixes and improvements.

### Audio Recorder[¶](#audio-recorder "Permanent link")

We have published a new [Capacitor Audio Recorder plugin](/docs/sdks/capacitor/audio-recorder/). This plugin allows you to record audio using the device's microphone. You can start, pause, resume, and stop the recording and get the audio blob or URI. The plugin is available on Android, iOS and Web.

`[](#%5F%5Fcodelineno-1-1)import { AudioRecorder } from '@capawesome-team/capacitor-audio-recorder';
[](#%5F%5Fcodelineno-1-2)import { NativeAudio } from '@capacitor-community/native-audio';
[](#%5F%5Fcodelineno-1-3)
[](#%5F%5Fcodelineno-1-4)const startRecording = async () => {
[](#%5F%5Fcodelineno-1-5)  await AudioRecorder.startRecording();
[](#%5F%5Fcodelineno-1-6)};
[](#%5F%5Fcodelineno-1-7)
[](#%5F%5Fcodelineno-1-8)const stopRecording = async () => {
[](#%5F%5Fcodelineno-1-9)  // Stop recording and get the audio blob or URI
[](#%5F%5Fcodelineno-1-10)  const { blob, uri } = await AudioRecorder.stopRecording();
[](#%5F%5Fcodelineno-1-11)  // Play the audio
[](#%5F%5Fcodelineno-1-12)  if (blob) {
[](#%5F%5Fcodelineno-1-13)    // Only available on Web
[](#%5F%5Fcodelineno-1-14)    const audio = new Audio();
[](#%5F%5Fcodelineno-1-15)    audio.src = URL.createObjectURL(blob);
[](#%5F%5Fcodelineno-1-16)    audio.play();
[](#%5F%5Fcodelineno-1-17)  } else if (uri) {
[](#%5F%5Fcodelineno-1-18)    // Only available on Android and iOS
[](#%5F%5Fcodelineno-1-19)    await NativeAudio.preload({
[](#%5F%5Fcodelineno-1-20)      assetId: 'recording',
[](#%5F%5Fcodelineno-1-21)      assetPath: uri,
[](#%5F%5Fcodelineno-1-22)      isUrl: true,
[](#%5F%5Fcodelineno-1-23)    });
[](#%5F%5Fcodelineno-1-24)    await NativeAudio.play({ assetId: 'recording' });
[](#%5F%5Fcodelineno-1-25)  }
[](#%5F%5Fcodelineno-1-26)};
`

Check out the [announcement](/blog/announcing-the-capacitor-audio-recorder-plugin/) for more information.

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

The [Capacitor Bluetooth Low Energy plugin](/docs/sdks/capacitor/bluetooth-low-energy/) received various bug fixes.

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

We have published a new [Capacitor Contacts plugin](/docs/sdks/capacitor/contacts/). This plugin allows you to create, read, pick, and delete contacts on the device. The plugin is available on Android, iOS and Web.

`[](#%5F%5Fcodelineno-2-1)import { 
[](#%5F%5Fcodelineno-2-2)  Contacts,
[](#%5F%5Fcodelineno-2-3)  EmailAddressType,
[](#%5F%5Fcodelineno-2-4)  PhoneNumberType,
[](#%5F%5Fcodelineno-2-5)  PostalAddressType
[](#%5F%5Fcodelineno-2-6)} from '@capawesome-team/capacitor-contacts';
[](#%5F%5Fcodelineno-2-7)
[](#%5F%5Fcodelineno-2-8)const createContact = async () => {
[](#%5F%5Fcodelineno-2-9)  return Contacts.createContact({
[](#%5F%5Fcodelineno-2-10)    contact: {
[](#%5F%5Fcodelineno-2-11)      givenName: 'John',
[](#%5F%5Fcodelineno-2-12)      familyName: 'Doe',
[](#%5F%5Fcodelineno-2-13)      emailAddresses: [
[](#%5F%5Fcodelineno-2-14)        {
[](#%5F%5Fcodelineno-2-15)          value: 'mail@example.com',
[](#%5F%5Fcodelineno-2-16)          type: EmailAddressType.Home,
[](#%5F%5Fcodelineno-2-17)          isPrimary: true
[](#%5F%5Fcodelineno-2-18)        }
[](#%5F%5Fcodelineno-2-19)      ],
[](#%5F%5Fcodelineno-2-20)      phoneNumbers: [
[](#%5F%5Fcodelineno-2-21)        {
[](#%5F%5Fcodelineno-2-22)          value: '1234567890',
[](#%5F%5Fcodelineno-2-23)          type: PhoneNumberType.Mobile,
[](#%5F%5Fcodelineno-2-24)          isPrimary: true
[](#%5F%5Fcodelineno-2-25)        }
[](#%5F%5Fcodelineno-2-26)      ],
[](#%5F%5Fcodelineno-2-27)      postalAddresses: [
[](#%5F%5Fcodelineno-2-28)        {
[](#%5F%5Fcodelineno-2-29)          street: '123 Main St',
[](#%5F%5Fcodelineno-2-30)          city: 'Springfield',
[](#%5F%5Fcodelineno-2-31)          state: 'IL',
[](#%5F%5Fcodelineno-2-32)          postalCode: '62701',
[](#%5F%5Fcodelineno-2-33)          country: 'USA',
[](#%5F%5Fcodelineno-2-34)          type: PostalAddressType.Home,
[](#%5F%5Fcodelineno-2-35)          isPrimary: true
[](#%5F%5Fcodelineno-2-36)        }
[](#%5F%5Fcodelineno-2-37)      ]
[](#%5F%5Fcodelineno-2-38)    }
[](#%5F%5Fcodelineno-2-39)  });
[](#%5F%5Fcodelineno-2-40)};
`

Check out the [announcement](/blog/announcing-the-capacitor-contacts-plugin/) for more information.

### Nfc[¶](#nfc "Permanent link")

The [Capacitor NFC plugin](/docs/sdks/capacitor/nfc/) received various bug fixes.

### PostHog[¶](#posthog "Permanent link")

##### New `getFeatureFlagPayload(...)` method[¶](#new-getfeatureflagpayload-method "Permanent link")

The [Capacitor PostHog plugin](/docs/sdks/capacitor/posthog/) now includes a new `getFeatureFlagPayload(...)` method. This method allows you to get the payload of a feature flag by its key:

`[](#%5F%5Fcodelineno-3-1)import { Posthog } from "@capawesome-team/capacitor-posthog";
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const getFeatureFlagPayload = async () => {
[](#%5F%5Fcodelineno-3-4)  const { value } = await Posthog.getFeatureFlagPayload({
[](#%5F%5Fcodelineno-3-5)    key: "beta_feature",
[](#%5F%5Fcodelineno-3-6)  });
[](#%5F%5Fcodelineno-3-7)  return value;
[](#%5F%5Fcodelineno-3-8)};
`

### Speech Recognition[¶](#speech-recognition "Permanent link")

The [Capacitor Speech Recognition plugin](/docs/sdks/capacitor/speech-recognition/) received various bug fixes and improvements.

##### Contextual Strings[¶](#contextual-strings "Permanent link")

You can now provide contextual strings to the `startListening(...)` method. Contextual strings are phrases that should be recognized, even if they are not in the system vocabulary. For this, a new option has been added to the `startListening(...)` method:

`[](#%5F%5Fcodelineno-4-1)import { SpeechRecognition } from "@capawesome-team/capacitor-speech-recognition";
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const startListening = async () => {
[](#%5F%5Fcodelineno-4-4)  await SpeechRecognition.startListening({
[](#%5F%5Fcodelineno-4-5)    contextualStrings: ["Capacitor"],
[](#%5F%5Fcodelineno-4-6)  });
[](#%5F%5Fcodelineno-4-7)};
`

##### Background Audio[¶](#background-audio "Permanent link")

You can now play background audio while using the Speech Recognition plugin. This allows you to play audio while the speech recognition is listening. For this, three new options have been added to the `startListening(...)` and `stopListening(...)` methods:

`[](#%5F%5Fcodelineno-5-1)import { AudioSessionCategory, SpeechRecognition } from "@capawesome-team/capacitor-speech-recognition";
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const startListening = async () => {
[](#%5F%5Fcodelineno-5-4)  await SpeechRecognition.startListening({
[](#%5F%5Fcodelineno-5-5)    // Set the audio session category to play and record 
[](#%5F%5Fcodelineno-5-6)    // for recording (input) and playback (output) of audio.
[](#%5F%5Fcodelineno-5-7)    audioSessionCategory: AudioSessionCategory.PlayAndRecord,
[](#%5F%5Fcodelineno-5-8)    // Do not deactivate the audio session when the plugin stops listening.
[](#%5F%5Fcodelineno-5-9)    // Otherwise, the background audio will be stopped as well.
[](#%5F%5Fcodelineno-5-10)    deactivateAudioSessionOnStop: false,
[](#%5F%5Fcodelineno-5-11)  });
[](#%5F%5Fcodelineno-5-12)};
[](#%5F%5Fcodelineno-5-13)
[](#%5F%5Fcodelineno-5-14)const stopListening = async () => {
[](#%5F%5Fcodelineno-5-15)  await SpeechRecognition.stopListening({
[](#%5F%5Fcodelineno-5-16)    // Do not deactivate the audio session when the plugin stops listening.
[](#%5F%5Fcodelineno-5-17)    // Otherwise, the background audio will be stopped as well.
[](#%5F%5Fcodelineno-5-18)    deactivateAudioSession: false,
[](#%5F%5Fcodelineno-5-19)  });
[](#%5F%5Fcodelineno-5-20)};
`

##### Permission Types[¶](#permission-types "Permanent link")

The [Capacitor Speech Recognition plugin](/docs/sdks/capacitor/speech-recognition/) now supports different permission types. You can now request the following permissions:

`[](#%5F%5Fcodelineno-6-1)import { SpeechRecognition } from "@capawesome-team/capacitor-speech-recognition";
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const requestPermissions = async () => {
[](#%5F%5Fcodelineno-6-4)  const { audioRecording, speechRecognition } =
[](#%5F%5Fcodelineno-6-5)    await SpeechRecognition.requestPermissions({
[](#%5F%5Fcodelineno-6-6)      permissions: ["audioRecording", "speechRecognition"],
[](#%5F%5Fcodelineno-6-7)    });
[](#%5F%5Fcodelineno-6-8)};
`

The `audioRecording` permission is available on Android and iOS, while the `speechRecognition` permission is only available on iOS.

June 8, 2026 

 Back to top 