Skip to content

Capawesome October 2025 Update

The Capawesome October update is here! This update includes new features and improvements for Capawesome Cloud and our Plugins. Let's take a look at the most important changes.

Cloud

Equivalent Version Codes for Live Updates

We have added support for Equivalent Version Codes in Capawesome Cloud, giving you more control over when live updates are delivered to your users. This new parameter works alongside minimum and maximum version code constraints to create precise compatibility rules.

The Equivalent parameter functions as a skip condition: if a user's native app already has the exact version code you've marked as equivalent, the live update won't be downloaded. This prevents redundant downloads when the user's app already matches the bundle version.

For example, when creating a bundle using the CLI:

npx @capawesome/cli apps:bundles:create --android-eq 11

If a user's Android app is at version code 11, they won't receive this bundle since they already have the equivalent version. This feature helps reduce unnecessary bandwidth usage and ensures users only download updates when needed.

Check out our documentation on versioned builds to learn more about restricting live updates to specific native versions.

Plugins

Age Signals

We have published a new Age Signals plugin that allows you to request user age signals from Google Play on Android. This plugin enables developers to access Google's Play Age Signals API to retrieve age-related information about users within their applications.

The plugin provides key capabilities including age verification status, age range data for supervised accounts, and parental approval tracking. Here's a simple example of how to use the plugin:

import { AgeSignals } from '@capawesome-team/capacitor-age-signals';

const checkAgeSignals = async () => {
  const result = await AgeSignals.checkAgeSignals();
  console.log('User Status:', result.userStatus);
  console.log('Age Lower:', result.ageLower);
  console.log('Age Upper:', result.ageUpper);
};

Check out the documentation to learn more about the plugin and its features.

App Update

The App Update plugin now supports an androidPackageName option for the openAppStore(...) method. This parameter allows you to specify which app to open in the Google Play Store, making it easy to direct users to a different application if needed.

import { AppUpdate } from '@capawesome-team/capacitor-app-update';

const openAppStore = async () => {
  await AppUpdate.openAppStore({
    androidPackageName: 'com.example.app'
  });
};

If you omit this parameter, the plugin defaults to opening the current app's Play Store listing.

Audio Player

The Audio Player plugin now supports web asset paths, providing a streamlined approach for playing bundled audio resources. The new src parameter represents the path to the web asset file to play and works across all platforms.

On Android, the plugin is limited to web assets only, while iOS and Web support both web assets and remote URLs. If you provide multiple audio sources, the plugin follows a clear priority: blob takes precedence over src, and uri takes priority over src.

Bluetooth Low Energy

New autoReconnect option

The Bluetooth Low Energy plugin now supports an autoReconnect option when establishing device connections. This feature enables automatic reconnection to peripherals when the connection is lost, improving reliability for background operations.

The option is available on both Android and iOS (17.0+) and defaults to false. Here's how to use it with the connect(...) method:

import { BluetoothLowEnergy } from '@capawesome-team/capacitor-bluetooth-low-energy';

await BluetoothLowEnergy.connect({
  deviceId: '00:00:00:00:00:00',
  autoReconnect: true
});
New isLocationEnabled() method

The Bluetooth Low Energy plugin now includes a new isLocationEnabled() method that checks whether location services are active on the device. This is particularly useful on Android, where location services are often required for BLE scanning operations to function properly.

import { BluetoothLowEnergy } from '@capawesome-team/capacitor-bluetooth-low-energy';

const result = await BluetoothLowEnergy.isLocationEnabled();
console.log(result.enabled);

This method is available on Android only.

Datetime Picker

The Datetime Picker plugin now supports a minuteInterval option for the present(...) method. This parameter controls the granularity of the minute selector, allowing you to set incremental steps for minute selection rather than requiring users to pick every single minute.

For example, setting it to 15 means users can only select times at 0, 15, 30, or 45 minutes past the hour:

import { DatetimePicker } from '@capawesome-team/capacitor-datetime-picker';

const present = async () => {
  const { value } = await DatetimePicker.present({
    mode: 'time',
    minuteInterval: 15,
    theme: 'dark',
    locale: 'en-US',
  });

  return value;
};

The value must be evenly divisible into 60 and defaults to 1 (every minute). This option is only available on iOS for time and datetime modes.

Geocoder

We have published a new Geocoder plugin that enables bidirectional location conversion on Android, iOS, and Web. The plugin translates addresses into geographic coordinates and converts coordinates back into human-readable addresses.

The plugin integrates with native APIs on mobile platforms for accuracy and reliability, and supports multiple geocoding providers (Google Maps and OpenStreetMap) on web. Here are simple examples of both geocoding and reverse geocoding:

import { Geocoder } from '@capawesome-team/capacitor-geocoder';

const geocode = async () => {
  const result = await Geocoder.geocode({
    address: '1600 Amphitheatre Parkway, Mountain View, CA',
  });
};

const geodecode = async () => {
  const result = await Geocoder.geodecode({
    latitude: 37.422,
    longitude: -122.084,
  });
};

Check out the documentation to learn more about the plugin and its features.

Media Session

We have published a new Media Session plugin that enables you to manage media playback controls across Android, iOS, and Web platforms. The plugin facilitates interaction with hardware media keys, lock screen controls, and notification-based media management.

Here's a basic example of how to use the plugin:

import { MediaSession, MediaSessionAction } from '@capawesome-team/capacitor-media-session';

const setupMediaSession = async () => {
  await MediaSession.setMetadata({
    title: 'Song Name',
    artist: 'Artist Name',
    album: 'Album Name',
  });

  await MediaSession.registerActionHandler({
    action: MediaSessionAction.Play
  });

  MediaSession.addListener('action', async (event) => {
    if (event.action === MediaSessionAction.Play) {
      // Handle play action
    }
  });
};

Check out the documentation to learn more about the plugin and its features.

Wifi

The Wifi plugin now allows connection to networks without internet access on Android. This fix ensures that you can connect to local Wi-Fi networks that don't have internet connectivity, which is particularly useful for IoT devices and local network applications.