---
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 **Capawesome Platform** — one platform for Live Updates, Native Builds, App Store Publishing, and Insider SDKs.](https://capawesome.io) 

* [  Formbricks ](/docs/plugins/formbricks/)
* [  Geocoder ](/docs/plugins/geocoder/)
* [  Google Sign-In ](/docs/plugins/google-sign-in/)
* [  libSQL ](/docs/plugins/libsql/)
* [  Live Update ](/docs/plugins/live-update/)
* [  Managed Configurations ](/docs/plugins/managed-configurations/)
* [  Media Session ](/docs/plugins/media-session/)
* [  ML Kit ](/docs/plugins/mlkit/)
* [  NFC ](/docs/plugins/nfc/)
* [  OAuth ](/docs/plugins/oauth/)
* [  Pedometer ](/docs/plugins/pedometer/)
* [  Photo Editor ](/docs/plugins/photo-editor/)
* [  PostHog ](/docs/plugins/posthog/)
* [  Printer ](/docs/plugins/printer/)
* [  Purchases ](/docs/plugins/purchases/)
* [  RealtimeKit ](/docs/plugins/realtimekit/)
* [  Screen Orientation ](/docs/plugins/screen-orientation/)
* [  Screenshot ](/docs/plugins/screenshot/)
* [  Secure Preferences ](/docs/plugins/secure-preferences/)
* [  Speech Recognition ](/docs/plugins/speech-recognition/)
* [  Speech Synthesis ](/docs/plugins/speech-synthesis/)
* [  Share Target ](/docs/plugins/share-target/)
* [  Square Mobile Payments ](/docs/plugins/square-mobile-payments/)
* [  SQLite ](/docs/plugins/sqlite/)
* [  Superwall ](/docs/plugins/superwall/)
* [  Torch ](/docs/plugins/torch/)
* [  Wifi ](/docs/plugins/wifi/)
* [  Zip ](/docs/plugins/zip/)
* [  Cloud ](/docs/cloud/)
* [  Live Updates ](/docs/cloud/live-updates/)
* Advanced
* Integrations
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Configuration ](/docs/cloud/native-builds/configuration/)
* [  Environments ](/docs/cloud/native-builds/environments/)
* Guides
* [  Sample Projects ](/docs/cloud/native-builds/sample-projects/)
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  Automations ](/docs/cloud/automations/)
* [  Assist ](/docs/cloud/assist/)
* Account
* Organizations
* [  Organization and User Management ](/docs/cloud/organizations/memberships/)
* [  Single Sign-On (SSO) ](/docs/cloud/organizations/sso/)
* [  Teams ](/docs/cloud/organizations/teams/)
* [  Two-Factor Authentication ](/docs/cloud/organizations/two-factor-authentication/)
* [  Integrations ](/docs/cloud/integrations/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Pricing ](https://capawesome.io/pricing/)
* [  FAQ ](/docs/cloud/faq/)
* [  Support ](/docs/cloud/support/)
* [  Contributing ](/docs/contributing/)
* [  LLMs ](/docs/llms/)
* [  Insiders ](/docs/insiders/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/insiders/support/)
* [  FAQ ](/docs/insiders/faq/)
* [  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/plugins/). 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/advanced/git-integration/) 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 [App Shortcuts](/docs/plugins/app-shortcuts/) plugin received various bug fixes and improvements.

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

We have published a new [Audio Recorder](/docs/plugins/audio-recorder/) plugin. 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 [Bluetooth Low Energy](/docs/plugins/bluetooth-low-energy/) plugin received various bug fixes.

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

We have published a new [Contacts](/docs/plugins/contacts/) plugin. 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 [Nfc](/docs/plugins/nfc/) plugin received various bug fixes.

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

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

The [PostHog](/docs/plugins/posthog/) plugin 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 [Speech Recognition](/docs/plugins/speech-recognition/) plugin 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 [Speech Recognition](/docs/plugins/speech-recognition/) plugin 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.

May 7, 2026 

 Back to top 