---
title: Capawesome March 2025 Update
description: The Capawesome March update is here! This update includes new features and improvements for Capawesome Cloud and our Plugins.
date:
  created: 2025-03-31
  updated: 2026-07-08
authors:
  - robingenz
categories:
  - Updates
---

# Capawesome March 2025 Update

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

<!-- more -->

<div class="capawesome-z29o10a">
  <a href="/" target="_blank">
    <img alt="Build and deploy your Capacitor app with Capawesome Cloud" src="https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1" />
  </a>
</div>

In case you missed it, check out the [February 2025 update](./2025-february-update.md) to catch up on what shipped last month.

## Cloud

### Console

#### Force Code Signing

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){:target="_blank"}.

<figure>
  <video controls="true" allowfullscreen="true" autoplay="true">
    <source src="/docs/assets/videos/posts/cloud-force-code-signing.mp4" type="video/mp4">
  </video>
</figure>

#### Git Integration

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](../../cloud/cli/index.md) to create a new bundle and link it to a specific commit:

```bash
npx @capawesome/cli apps:bundles:create --commit-message "feat: support in-app purchases" --commit-ref "main" --commit-sha "b0cb01e"
```

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

### GitHub Action

#### Git Integration

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

## Plugins

### App Shortcuts

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

### Audio Recorder

We have published a new [Capacitor Audio Recorder plugin](../../sdks/capacitor/audio-recorder.md). 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.

```ts
import { AudioRecorder } from '@capawesome-team/capacitor-audio-recorder';
import { NativeAudio } from '@capacitor-community/native-audio';

const startRecording = async () => {
  await AudioRecorder.startRecording();
};

const stopRecording = async () => {
  // Stop recording and get the audio blob or URI
  const { blob, uri } = await AudioRecorder.stopRecording();
  // Play the audio
  if (blob) {
    // Only available on Web
    const audio = new Audio();
    audio.src = URL.createObjectURL(blob);
    audio.play();
  } else if (uri) {
    // Only available on Android and iOS
    await NativeAudio.preload({
      assetId: 'recording',
      assetPath: uri,
      isUrl: true,
    });
    await NativeAudio.play({ assetId: 'recording' });
  }
};
```

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

### Bluetooth Low Energy

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

### Contacts

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

```ts
import { 
  Contacts,
  EmailAddressType,
  PhoneNumberType,
  PostalAddressType
} from '@capawesome-team/capacitor-contacts';

const createContact = async () => {
  return Contacts.createContact({
    contact: {
      givenName: 'John',
      familyName: 'Doe',
      emailAddresses: [
        {
          value: 'mail@example.com',
          type: EmailAddressType.Home,
          isPrimary: true
        }
      ],
      phoneNumbers: [
        {
          value: '1234567890',
          type: PhoneNumberType.Mobile,
          isPrimary: true
        }
      ],
      postalAddresses: [
        {
          street: '123 Main St',
          city: 'Springfield',
          state: 'IL',
          postalCode: '62701',
          country: 'USA',
          type: PostalAddressType.Home,
          isPrimary: true
        }
      ]
    }
  });
};
```

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

### Nfc

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

### PostHog

##### New `getFeatureFlagPayload(...)` method

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

```ts
import { Posthog } from "@capawesome-team/capacitor-posthog";

const getFeatureFlagPayload = async () => {
  const { value } = await Posthog.getFeatureFlagPayload({
    key: "beta_feature",
  });
  return value;
};
```

### Speech Recognition

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

##### Contextual Strings

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:

```ts
import { SpeechRecognition } from "@capawesome-team/capacitor-speech-recognition";

const startListening = async () => {
  await SpeechRecognition.startListening({
    contextualStrings: ["Capacitor"],
  });
};
```

##### Background Audio

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:

```ts
import { AudioSessionCategory, SpeechRecognition } from "@capawesome-team/capacitor-speech-recognition";

const startListening = async () => {
  await SpeechRecognition.startListening({
    // Set the audio session category to play and record 
    // for recording (input) and playback (output) of audio.
    audioSessionCategory: AudioSessionCategory.PlayAndRecord,
    // Do not deactivate the audio session when the plugin stops listening.
    // Otherwise, the background audio will be stopped as well.
    deactivateAudioSessionOnStop: false,
  });
};

const stopListening = async () => {
  await SpeechRecognition.stopListening({
    // Do not deactivate the audio session when the plugin stops listening.
    // Otherwise, the background audio will be stopped as well.
    deactivateAudioSession: false,
  });
};
```

##### Permission Types

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

```ts
import { SpeechRecognition } from "@capawesome-team/capacitor-speech-recognition";

const requestPermissions = async () => {
  const { audioRecording, speechRecognition } =
    await SpeechRecognition.requestPermissions({
      permissions: ["audioRecording", "speechRecognition"],
    });
};
```

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