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

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

* [  ML Kit ](#ml-kit)
* [  libSQL ](#libsql)
* [  Live Update ](#live-update)
* [  PostHog ](#posthog)
* [  Speech Recognition ](#speech-recognition)
* [  SQLite ](#sqlite)

# Capawesome July 2025 Update[¶](#capawesome-july-2025-update "Permanent link")

The Capawesome July 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) ](/) 

## Blog[¶](#blog "Permanent link")

We have made several updates to our blog, including new articles and tutorials that cover various topics related to Capacitor and our plugins. Be sure to check out the latest posts for valuable insights and tips. Here are some highlights:

* [Encrypting SQLite databases in Capacitor](/blog/encrypting-capacitor-sqlite-database/)
* [Announcing the SQLite Plugin for Capacitor](/blog/announcing-the-capacitor-sqlite-plugin/)
* [Exploring the Capacitor Secure Preferences API](/blog/exploring-the-capacitor-secure-preferences-api/)

Besides these articles, we have also started a new series of showcases where we highlight some of the best apps built with Capacitor. These showcases will provide insights into how developers are using Capacitor to create amazing applications. Here are the first few showcases:

* [Showcase: MyBodyTutor - A Personalized Nutrition and Weight Loss Coaching App](/blog/showcase-mybodytutor/)
* [Showcase: CostPal - Price tracking app for Costco](/blog/showcase-costpal/)

Make sure to check them out!

## Cloud[¶](#cloud "Permanent link")

##### New `Billing` role[¶](#new-billing-role "Permanent link")

We have introduced a new `Billing` role in Capawesome Cloud. This role allows users to manage billing-related tasks without granting full administrative access. Users with the `Billing` role can view and manage billing information, including invoices and payment methods.

Check out the [documentation](/docs/cloud/organizations/memberships/) for more details on the `Billing` role and how to assign it to users.

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

### Barometer[¶](#barometer "Permanent link")

We have released a new [Capacitor Barometer plugin](/docs/sdks/capacitor/barometer/) for Android and iOS. This plugin allows you to access the device's barometer sensor, providing real-time atmospheric pressure data. You can use this data for various applications, such as weather forecasting or altitude measurement.

`[](#%5F%5Fcodelineno-0-1)import { Barometer } from '@capawesome-team/capacitor-barometer';
[](#%5F%5Fcodelineno-0-2)
[](#%5F%5Fcodelineno-0-3)const getMeasurement = async () => {
[](#%5F%5Fcodelineno-0-4)  const { measurement } = await Barometer.getMeasurement();
[](#%5F%5Fcodelineno-0-5)  console.log('Current atmospheric pressure:', measurement.pressure, 'hPa');
[](#%5F%5Fcodelineno-0-6)};
`

Check out the [documentation](/docs/sdks/capacitor/barometer/) for more details on how to get started with the Barometer plugin.

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

##### New `onConnectionStateChange` method in headless task[¶](#new-onconnectionstatechange-method-in-headless-task "Permanent link")

The [Capacitor Bluetooth Low Energy plugin](/docs/sdks/capacitor/bluetooth-low-energy/) has been updated with a new `onConnectionStateChange` method in the `BluetoothLowEnergyHeadlessTask` class. This method allows you to run your own native code when the connection state of a Bluetooth device changes. This is useful for handling connection events in the background, such as when a device disconnects or reconnects.

`[](#%5F%5Fcodelineno-1-1)import android.bluetooth.BluetoothGatt;
[](#%5F%5Fcodelineno-1-2)import androidx.annotation.NonNull;
[](#%5F%5Fcodelineno-1-3)
[](#%5F%5Fcodelineno-1-4)public class BluetoothLowEnergyHeadlessTask {
[](#%5F%5Fcodelineno-1-5)  public void onConnectionStateChange(@NonNull BluetoothGatt gatt, int status, int newState) {
[](#%5F%5Fcodelineno-1-6)    // Your code here
[](#%5F%5Fcodelineno-1-7)  }
[](#%5F%5Fcodelineno-1-8)}
`

Check out the [documentation](/docs/sdks/capacitor/bluetooth-low-energy/#headless-task) for more details on how to use the `onConnectionStateChange` method in your headless task.

### File Compressor[¶](#file-compressor "Permanent link")

##### `width` and `height` options[¶](#width-and-height-options "Permanent link")

The [Capacitor File Compressor plugin](/docs/sdks/capacitor/file-compressor/) has been updated to support the `width` and `height` options when compressing images. This allows you to resize images while compressing them, which can help reduce file size without losing too much quality.

`[](#%5F%5Fcodelineno-2-1)import { FileCompressor } from '@capawesome-team/capacitor-file-compressor';
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)const compressImage = async () => {
[](#%5F%5Fcodelineno-2-4)  const { path } = await FileCompressor.compressImage({
[](#%5F%5Fcodelineno-2-5)    mimeType: 'image/jpeg',
[](#%5F%5Fcodelineno-2-6)    path: 'content://com.android.providers.downloads.documents/document/msf%3A1000000485',
[](#%5F%5Fcodelineno-2-7)    quality: 0.7,
[](#%5F%5Fcodelineno-2-8)    height: 1000,
[](#%5F%5Fcodelineno-2-9)    width: 1000,
[](#%5F%5Fcodelineno-2-10)  });
[](#%5F%5Fcodelineno-2-11)  return path;
[](#%5F%5Fcodelineno-2-12)};
`

Check out the [documentation](/docs/sdks/capacitor/file-compressor/#compressimage) for more details on how to use the `width` and `height` options when compressing images.

### Firebase[¶](#firebase "Permanent link")

#### Authentication[¶](#authentication "Permanent link")

##### `authDomain` configuration option[¶](#authdomain-configuration-option "Permanent link")

The [Capacitor Firebase Authentication plugin](/docs/sdks/capacitor/firebase/authentication/) has been updated to include a new `authDomain` configuration option. This option allows you to specify the authentication domain for your Firebase project, which is required for certain authentication methods.

`[](#%5F%5Fcodelineno-3-1){
[](#%5F%5Fcodelineno-3-2)  "plugins": {
[](#%5F%5Fcodelineno-3-3)    "FirebaseAuthentication": {
[](#%5F%5Fcodelineno-3-4)      "authDomain": "your-app.firebaseapp.com"
[](#%5F%5Fcodelineno-3-5)    }
[](#%5F%5Fcodelineno-3-6)  }
[](#%5F%5Fcodelineno-3-7)}
`

Check out the [documentation](/docs/sdks/capacitor/firebase/authentication/#configuration) for more details on how to configure the `authDomain` option.

#### Cloud Firestore[¶](#cloud-firestore "Permanent link")

##### `SetOptions` interface[¶](#setoptions-interface "Permanent link")

The [Capacitor Firebase Cloud Firestore plugin](/docs/sdks/capacitor/firebase/cloud-firestore/) has been updated to include a new `SetOptions` interface. This interface allows you to specify options when setting documents in Firestore, such as merging data.

`[](#%5F%5Fcodelineno-4-1)import { FirebaseFirestore } from '@capacitor-firebase/firestore';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const writeBatch = async () => {
[](#%5F%5Fcodelineno-4-4)  await FirebaseFirestore.writeBatch({
[](#%5F%5Fcodelineno-4-5)    operations: [
[](#%5F%5Fcodelineno-4-6)      {
[](#%5F%5Fcodelineno-4-7)        type: 'set',
[](#%5F%5Fcodelineno-4-8)        reference: 'users/Aorq09lkt1ynbR7xhTUx',
[](#%5F%5Fcodelineno-4-9)        data: { 
[](#%5F%5Fcodelineno-4-10)          first: 'Alan', 
[](#%5F%5Fcodelineno-4-11)          last: 'Turing', 
[](#%5F%5Fcodelineno-4-12)          born: 1912 
[](#%5F%5Fcodelineno-4-13)        },
[](#%5F%5Fcodelineno-4-14)        options: { merge: true },
[](#%5F%5Fcodelineno-4-15)      },
[](#%5F%5Fcodelineno-4-16)      {
[](#%5F%5Fcodelineno-4-17)        type: 'delete',
[](#%5F%5Fcodelineno-4-18)        reference: 'users/Aorq09lkt1ynbR7xhTUx',
[](#%5F%5Fcodelineno-4-19)      },
[](#%5F%5Fcodelineno-4-20)    ],
[](#%5F%5Fcodelineno-4-21)  });
[](#%5F%5Fcodelineno-4-22)};
`

For more details on how to use the `SetOptions` interface, check out the [documentation](/docs/sdks/capacitor/firebase/cloud-firestore/#setoptions).

### ML Kit[¶](#ml-kit "Permanent link")

#### Document Scanner[¶](#document-scanner "Permanent link")

We have released a new [Document Scanner](/docs/sdks/capacitor/mlkit/document-scanner/) plugin for Android based on the [ML Kit Document Scanner](https://developers.google.com/ml-kit/vision/doc-scanner) API. This plugin allows you to scan documents using the device's camera or import them from the gallery. It supports various result formats, including JPEG and PDF.

`[](#%5F%5Fcodelineno-5-1)import { DocumentScanner } from '@capacitor-mlkit/document-scanner';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const scanDocument = async () => {
[](#%5F%5Fcodelineno-5-4)  const result = await DocumentScanner.scanDocument({
[](#%5F%5Fcodelineno-5-5)    galleryImportAllowed: true,
[](#%5F%5Fcodelineno-5-6)    pageLimit: 5,
[](#%5F%5Fcodelineno-5-7)    resultFormats: 'JPEG_PDF',
[](#%5F%5Fcodelineno-5-8)    scannerMode: 'FULL',
[](#%5F%5Fcodelineno-5-9)  });
[](#%5F%5Fcodelineno-5-10)
[](#%5F%5Fcodelineno-5-11)  console.log('Result:', result);
[](#%5F%5Fcodelineno-5-12)};
`

Check out the [documentation](/docs/sdks/capacitor/mlkit/document-scanner/) for more details on how to use the Document Scanner plugin.

### libSQL[¶](#libsql "Permanent link")

We have released a new [Capacitor libSQL plugin](/docs/sdks/capacitor/libsql/) for Android and iOS. This plugin provides a powerful and efficient way to manage SQLite databases using the [libSQL](https://docs.turso.tech/libsql) engine, which is a fork of SQLite from the team behind [Turso](https://turso.tech/).

`[](#%5F%5Fcodelineno-6-1)import { Libsql } from '@capawesome-team/capacitor-libsql';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const insertUser = async (user: { id: number; name: string }) => {
[](#%5F%5Fcodelineno-6-4)  // Open the database
[](#%5F%5Fcodelineno-6-5)  const { connectionId } = await Libsql.connect({
[](#%5F%5Fcodelineno-6-6)    database: 'my-database',
[](#%5F%5Fcodelineno-6-7)  });
[](#%5F%5Fcodelineno-6-8)  // Insert a new row
[](#%5F%5Fcodelineno-6-9)  await Libsql.execute({
[](#%5F%5Fcodelineno-6-10)    connectionId,
[](#%5F%5Fcodelineno-6-11)    statement: 'INSERT INTO users (id, name) VALUES (?, ?)',
[](#%5F%5Fcodelineno-6-12)    values: [user.id, user.name],
[](#%5F%5Fcodelineno-6-13)  });
[](#%5F%5Fcodelineno-6-14)  // Close the database
[](#%5F%5Fcodelineno-6-15)  await Libsql.close({ connectionId });
[](#%5F%5Fcodelineno-6-16)};
`

Check out the [documentation](/docs/sdks/capacitor/libsql/) for more details on how to get started with the libSQL plugin.

### Live Update[¶](#live-update "Permanent link")

The [Capacitor Live Update plugin](/docs/sdks/capacitor/live-update/) has received a small bug fix to ensure that missing bundle files are handled correctly. This fix improves the reliability of the live update process, ensuring that your app can seamlessly update without issues.

Make sure to update your Live Update plugin to the latest version to benefit from this fix.

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

##### New configuration options[¶](#new-configuration-options "Permanent link")

The [Capacitor PostHog plugin](/docs/sdks/capacitor/posthog/) has been updated with new configuration options. You can now set the `apiKey` and `host` when initializing the plugin, allowing you to track advanced analytics events like app installations and more.

`[](#%5F%5Fcodelineno-7-1){
[](#%5F%5Fcodelineno-7-2)  "plugins": {
[](#%5F%5Fcodelineno-7-3)    "Posthog": {
[](#%5F%5Fcodelineno-7-4)      "apiKey": 'phc_g8wMenebiIQ1pYd5v9Vy7oakn6MczVKIsNG5ZHCspdy',
[](#%5F%5Fcodelineno-7-5)      "host": 'https://eu.i.posthog.com'
[](#%5F%5Fcodelineno-7-6)    }
[](#%5F%5Fcodelineno-7-7)  }
[](#%5F%5Fcodelineno-7-8)}
`

This also means that you don't need to call the `setup(...)` method anymore, as the plugin will automatically initialize with the provided configuration.

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

##### Punctuation support[¶](#punctuation-support "Permanent link")

The [Capacitor Speech Recognition plugin](/docs/sdks/capacitor/speech-recognition/) has been updated to support punctuation in transcriptions. Just set the `enableFormatting` option to `true` when starting the speech recognition session, and the plugin will automatically format the transcriptions with punctuation.

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

Check out the [documentation](/docs/sdks/capacitor/speech-recognition/) for more details.

### SQLite[¶](#sqlite "Permanent link")

We have published a new [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/) for Capacitor. This plugin provides a powerful and efficient way to manage SQLite databases on Android, iOS and web. It supports various features such as encryption, migrations, and more.

Here's a quick example of how to use the SQLite plugin to open a database and insert a new row:

`[](#%5F%5Fcodelineno-9-1)import { SQLite } from '@capawesome-team/capacitor-sqlite';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const insertUser = async (user: { id: number; name: string }) => {
[](#%5F%5Fcodelineno-9-4)  // Open the database
[](#%5F%5Fcodelineno-9-5)  const { databaseId } = await SQLite.open({ 
[](#%5F%5Fcodelineno-9-6)    path: 'db.sqlite3',
[](#%5F%5Fcodelineno-9-7)    upgradeStatements: [
[](#%5F%5Fcodelineno-9-8)      {
[](#%5F%5Fcodelineno-9-9)        version: 1,
[](#%5F%5Fcodelineno-9-10)        statements: [
[](#%5F%5Fcodelineno-9-11)          'CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE)',
[](#%5F%5Fcodelineno-9-12)        ]
[](#%5F%5Fcodelineno-9-13)      }
[](#%5F%5Fcodelineno-9-14)    ],
[](#%5F%5Fcodelineno-9-15)  });
[](#%5F%5Fcodelineno-9-16)  // Insert a new row
[](#%5F%5Fcodelineno-9-17)  await Sqlite.execute({
[](#%5F%5Fcodelineno-9-18)    databaseId,
[](#%5F%5Fcodelineno-9-19)    statement: 'INSERT INTO users (name, email) VALUES (?, ?)',
[](#%5F%5Fcodelineno-9-20)    values: ['John Doe', 'john.doe@example.com']
[](#%5F%5Fcodelineno-9-21)  });
[](#%5F%5Fcodelineno-9-22)  // Close the database
[](#%5F%5Fcodelineno-9-23)  await SQLite.close({ databaseId });
[](#%5F%5Fcodelineno-9-24)};
`

Check out the [announcement post](/blog/announcing-the-capacitor-sqlite-plugin/) for more details on how to get started with the SQLite plugin.

June 8, 2026 

 Back to top 