Skip to content

Capawesome November 2025 Update

The Capawesome November 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

Native Builds

We are excited to announce the launch of Native Builds for Capawesome Cloud, a production-ready cloud platform for compiling iOS and Android applications. This service eliminates the need for developers to maintain local CI/CD infrastructure or complex build configurations.

Native Builds provides pre-optimized environments with current Node.js, Java, and Xcode versions running on macOS 15 with M4 instances. You can connect your GitHub, GitLab, Bitbucket, or Azure DevOps repositories and trigger builds manually or automatically. The platform executes builds 3-5x faster compared to traditional CI/CD platforms like GitHub Actions.

The service connects directly to TestFlight, the App Store, and Google Play Store, allowing one-click submissions following successful builds. You can also use the CLI to trigger builds from any operating system—Windows, Linux, or macOS—without requiring Xcode or Android Studio installation locally.

Check out our announcement post to learn more about Native Builds and how to get started.

Plugins

Age Signals

The Age Signals plugin has been updated to version 0.1.1 and now includes support for iOS using the official DeclaredAgeRange API. This allows developers to access age-related signals on iOS devices, enabling age-appropriate content delivery and compliance with age-related regulations.

Audio Player

The Audio Player plugin has received several bug fixes and improvements. Notably, we have added a new stop event that is emitted when audio playback stops. Additionally, we fixed an issue on Android where audio would continue playing even after the app was destroyed, and improved audio focus handling on Android to ensure proper playback behavior.

Datetime Picker

The Datetime Picker plugin now includes a new cancel() method that dismisses an active datetime picker dialog. This is useful when you need to programmatically close the picker without waiting for user interaction, such as when implementing timeout logic or conditional cancellation based on app state changes.

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

App.addListener('appStateChange', ({ isActive }) => {
  if (!isActive) {
    DatetimePicker.cancel();
  }
});

If there is no active picker, this method does nothing. This method is available on Android and iOS.

Firebase

Authentication

The Firebase Authentication plugin now includes a new getIdTokenResult(...) method that retrieves a deserialized JSON Web Token (JWT) containing user identification data. This provides detailed token information beyond just the token string, including authentication time, expiration time, sign-in provider, and custom claims.

import { FirebaseAuthentication } from '@capawesome-team/capacitor-firebase-authentication';

const getTokenDetails = async () => {
  const currentUser = await FirebaseAuthentication.getCurrentUser();
  if (!currentUser) {
    return;
  }

  const result = await FirebaseAuthentication.getIdTokenResult({
    forceRefresh: true
  });

  console.log('Token claims:', result.claims);
  console.log('Expires:', new Date(result.expirationTime));
};

This is particularly useful when you need to inspect token claims or verify authentication details programmatically.

Media Session

The Media Session plugin has received a bug fix that ensures the media session is properly stopped when the app is closed on Android. This prevents media controls from remaining active after the app has been destroyed.

ML Kit

Barcode Scanning

The ML Kit Barcode Scanning plugin now supports an autoZoom option for the scan(...) method on Android. When enabled, this feature automatically adjusts the camera's zoom to optimize barcode detection, enhancing the scanning experience by dynamically focusing on barcodes at various distances.

import { BarcodeScanner, BarcodeFormat } from '@capawesome-team/capacitor-mlkit-barcode-scanning';

const scan = async () => {
  const { barcodes } = await BarcodeScanner.scan({
    formats: [BarcodeFormat.QrCode],
    autoZoom: true,
  });
  return barcodes;
};

This option is available on Android.

Posthog

The Posthog plugin now supports session replay functionality, allowing you to record and playback user interactions within your Capacitor app. This feature captures visual snapshots of user sessions, enabling you to understand user behavior and troubleshoot issues.

You can enable session replay by setting enableSessionReplay: true in your configuration:

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  plugins: {
    Posthog: {
      apiKey: 'your_key',
      enableSessionReplay: true,
      sessionReplayConfig: {
        screenshotMode: false,
        maskAllTextInputs: true,
        captureNetworkTelemetry: true
      }
    }
  }
};

The plugin provides granular control over what data is captured, including options to mask text inputs and images, enable network telemetry, and control the snapshot interval. Check out the documentation to learn more about session replay configuration options.

Purchases

The Purchases plugin now supports Android, bringing in-app purchase functionality to both Android and iOS platforms. This plugin provides a simple API for managing purchases, subscriptions, and product information across mobile platforms.

Screen Orientation

The Screen Orientation plugin has been updated to make the LockOptions parameter optional for the lock(...) method. If no options are provided, the method now locks the screen orientation to the current orientation by default.

import { ScreenOrientation } from '@capawesome-team/capacitor-screen-orientation';

const lock = async () => {
  await ScreenOrientation.lock();
};

This makes it easier to quickly lock the screen to its current orientation without needing to specify the orientation type explicitly.