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

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

* [  Cloud ](#cloud)
* [  Plugins ](#plugins)
* [  Live Update ](#live-update)
* [  ML Kit ](#ml-kit)
* [  Screenshot ](#screenshot)

# Capawesome January 2025 Update[¶](#capawesome-january-2025-update "Permanent link")

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

## CLI[¶](#cli "Permanent link")

### Custom Properties[¶](#custom-properties "Permanent link")

The Capawesome CLI now supports custom properties for the `apps:bundles:create` command:

`[](#%5F%5Fcodelineno-0-1)npx @capawesome/cli apps:bundles:create --custom-property version=1.1.0 --custom-property silentUpdate=true
`

Custom properties allow you to store additional information in a bundle and can be retrieved by the [Capacitor Live Update plugin](/docs/sdks/capacitor/live-update/). This allows you to customize the behavior of your app for specific bundles.

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

### Landing Page[¶](#landing-page "Permanent link")

We've just launched our brand new landing page for Capawesome Cloud. The new landing page is available at [capawesome.io](/) and provides an overview of all features and benefits of Capawesome Cloud, including customer testimonials and pricing information. The Capawesome Cloud Console, which was previously accessible at [console.cloud.capawesome.io](https://console.cloud.capawesome.io/), has been moved to [console.cloud.capawesome.io](https://console.cloud.capawesome.io/).

Do you like the new landing page? Let us know what you think!

### GitHub Action[¶](#github-action "Permanent link")

The [Cloud Live Update Action](https://github.com/capawesome-team/cloud-live-update-action) now uses the latest version of the Capawesome CLI. This update includes various improvements and bug fixes. The Cloud Live Update Action allows you to deploy a live update to the Capawesome Cloud directly from your GitHub Actions workflow:

`[](#%5F%5Fcodelineno-1-1)- uses: capawesome-team/cloud-live-update-action@v0.0.3
[](#%5F%5Fcodelineno-1-2)  with:
[](#%5F%5Fcodelineno-1-3)    # The Capawesome Cloud app ID.
[](#%5F%5Fcodelineno-1-4)    # Required.
[](#%5F%5Fcodelineno-1-5)    appId: ''
[](#%5F%5Fcodelineno-1-6)    # The channel to deploy the update to.
[](#%5F%5Fcodelineno-1-7)    channel: ''
[](#%5F%5Fcodelineno-1-8)    # The path to the bundle to upload. Must be a folder or zip archive.
[](#%5F%5Fcodelineno-1-9)    # Required.
[](#%5F%5Fcodelineno-1-10)    path: ''
[](#%5F%5Fcodelineno-1-11)    # The Capawesome Cloud API token.
[](#%5F%5Fcodelineno-1-12)    # Required.
[](#%5F%5Fcodelineno-1-13)    token: ''
`

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

All plugins now support Capacitor 7 and the Swift Package Manager (SPM). This means that you can now use the plugins with the latest version of Capacitor and add them to your Xcode project using SPM. Read on to learn more about the latest changes to our plugins.

Breaking Changes 

We have published some breaking changes to our plugins this month. Please make sure to carefully review the changes before updating your plugins. You can find more information about the breaking changes in the respective `BREAKING.md` files in the plugin repositories.

### App Shortcuts[¶](#app-shortcuts "Permanent link")

##### New `icon` option[¶](#new-icon-option "Permanent link")

The [Capacitor App Shortcuts plugin](/docs/sdks/capacitor/app-shortcuts/) now supports the `icon` option. This option allows you to specify an icon for the shortcut:

`[](#%5F%5Fcodelineno-2-1)import { Capacitor } from '@capacitor/core';
[](#%5F%5Fcodelineno-2-2)import { AppShortcuts } from '@capawesome/capacitor-app-shortcuts';
[](#%5F%5Fcodelineno-2-3)
[](#%5F%5Fcodelineno-2-4)const set = async () => {
[](#%5F%5Fcodelineno-2-5)  await AppShortcuts.set({
[](#%5F%5Fcodelineno-2-6)    shortcuts: [
[](#%5F%5Fcodelineno-2-7)      {
[](#%5F%5Fcodelineno-2-8)        id: 'feedback',
[](#%5F%5Fcodelineno-2-9)        title: 'Feedback',
[](#%5F%5Fcodelineno-2-10)        description: 'Send feedback to the app developers',
[](#%5F%5Fcodelineno-2-11)        icon: Capacitor.getPlatform() === 'ios' ? 6 : 17301547,
[](#%5F%5Fcodelineno-2-12)      }
[](#%5F%5Fcodelineno-2-13)    ],
[](#%5F%5Fcodelineno-2-14)  });
[](#%5F%5Fcodelineno-2-15)};
`

The `icon` option accepts a number. On Android, the icon is the constant value of the [R.drawable](https://developer.android.com/reference/android/R.drawable) enum. On iOS, the icon is the constant value of the [UIApplicationShortcutIcon.IconType](https://developer.apple.com/documentation/uikit/uiapplicationshortcuticon/icontype) enum.

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

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

##### New `getCountFromServer` method[¶](#new-getcountfromserver-method "Permanent link")

The [Cloud Firestore](/docs/sdks/capacitor/firebase/cloud-firestore/) plugin now supports a `getCountFromServer` method. This method allows you to get the number of documents in a collection from the server:

`[](#%5F%5Fcodelineno-3-1)import { FirebaseFirestore } from '@capacitor-firebase/firestore';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const getCountFromServer = async () => {
[](#%5F%5Fcodelineno-3-4)  const { count } = await FirebaseFirestore.getCountFromServer({
[](#%5F%5Fcodelineno-3-5)    reference: 'users',
[](#%5F%5Fcodelineno-3-6)  });
[](#%5F%5Fcodelineno-3-7)  return count;
[](#%5F%5Fcodelineno-3-8)};
`

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

##### Automatic rollbacks disabled by default[¶](#automatic-rollbacks-disabled-by-default "Permanent link")

The default value of the `readyTimeout` configuration option has been changed from `10000` to `0` to disable the timeout by default. This should make it easier to get started with the plugin. This feature has often caused confusion and issues for users who were not aware of the timeout. However, it is strongly **recommended** to configure this option so that the plugin can roll back to the default bundle in case of problems:

`[](#%5F%5Fcodelineno-4-1){
[](#%5F%5Fcodelineno-4-2)  "plugins": {
[](#%5F%5Fcodelineno-4-3)    "LiveUpdate": {
[](#%5F%5Fcodelineno-4-4)      "readyTimeout": 10000
[](#%5F%5Fcodelineno-4-5)    }
[](#%5F%5Fcodelineno-4-6)  }
[](#%5F%5Fcodelineno-4-7)}
`

##### New `ReadyResult` type[¶](#new-readyresult-type "Permanent link")

The `ready()` method now returns a `ReadyResult` object with the following properties:

`[](#%5F%5Fcodelineno-5-1)import { LiveUpdate } from '@capawesome/capacitor-live-update';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const ready = async () => {
[](#%5F%5Fcodelineno-5-4)  const result = await LiveUpdate.ready();
[](#%5F%5Fcodelineno-5-5)  console.log('Previous Bundle ID: ', result.previousBundleId);
[](#%5F%5Fcodelineno-5-6)  console.log('Current Bundle ID: ', result.currentBundleId);
[](#%5F%5Fcodelineno-5-7)  console.log('Rollback performed? ', result.rollback);
[](#%5F%5Fcodelineno-5-8)};
`

This change allows you to get more information about the current state of the app after the `ready()` method has been called. For example, you can display a message to the user if an update has failed.

##### Custom properties[¶](#custom-properties%5F1 "Permanent link")

The `fetchLatestBundle(...)` method now also returns the custom properties of the latest bundle:

`[](#%5F%5Fcodelineno-6-1)import { LiveUpdate } from '@capawesome/capacitor-live-update';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const fetchLatestBundle = async () => {
[](#%5F%5Fcodelineno-6-4)  const { customProperties } = await LiveUpdate.fetchLatestBundle();
[](#%5F%5Fcodelineno-6-5)  console.log('Custom Properties: ', customProperties);
[](#%5F%5Fcodelineno-6-6)};
`

This allows you to customize the behavior of your app based on the custom properties of the latest bundle. For example, you could use a custom property `silentUpdate` to decide whether the user should be asked before downloading the bundle or not.

##### New `downloadBundleProgress` listener[¶](#new-downloadbundleprogress-listener "Permanent link")

The `downloadBundle(...)` method now emits a `downloadBundleProgress` event with the download progress:

`[](#%5F%5Fcodelineno-7-1)import { LiveUpdate } from '@capawesome/capacitor-live-update';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const downloadBundle = async () => {
[](#%5F%5Fcodelineno-7-4)  // Listen for download progress
[](#%5F%5Fcodelineno-7-5)  await LiveUpdate.addListener('downloadBundleProgress', (event) => {
[](#%5F%5Fcodelineno-7-6)    console.log('Bundle ID: ', event.bundleId);
[](#%5F%5Fcodelineno-7-7)    console.log('Progress: ', event.progress);
[](#%5F%5Fcodelineno-7-8)    console.log('Downloaded bytes: ', event.downloadedBytes);
[](#%5F%5Fcodelineno-7-9)    console.log('Total bytes: ', event.totalBytes);
[](#%5F%5Fcodelineno-7-10)  });
[](#%5F%5Fcodelineno-7-11)  // Download the latest bundle
[](#%5F%5Fcodelineno-7-12)  await LiveUpdate.downloadBundle();
[](#%5F%5Fcodelineno-7-13)};
`

This change allows you to display a progress bar or other UI elements to the user while the bundle is being downloaded.

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

#### Barcode Scanning[¶](#barcode-scanning "Permanent link")

##### New `resolution` option[¶](#new-resolution-option "Permanent link")

The [Barcode Scanning](/docs/sdks/capacitor/mlkit/barcode-scanning/) plugin now supports a `resolution` option. This option allows you to specify the resolution of the barcode scanning process:

`[](#%5F%5Fcodelineno-8-1)import { BarcodeScanner, Resolution } from '@capacitor-mlkit/barcode-scanning';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const startScan = async () => {
[](#%5F%5Fcodelineno-8-4)  await BarcodeScanner.startScan({
[](#%5F%5Fcodelineno-8-5)    resolution: Resolution['1280x720'],
[](#%5F%5Fcodelineno-8-6)  });
[](#%5F%5Fcodelineno-8-7)};
`

The possible values for the `resolution` option are:

* `640x480`
* `1280x720`
* `1920x1080`

### Screenshot[¶](#screenshot "Permanent link")

We have published a new [Capacitor Screenshot plugin](/docs/sdks/capacitor/screenshot/). The Screenshot plugin allows you to take screenshots of the current screen and can be used for various purposes, such as error reporting or sharing content.

`[](#%5F%5Fcodelineno-9-1)import { Screenshot } from '@capawesome/capacitor-screenshot';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const take = async () => {
[](#%5F%5Fcodelineno-9-4)  const { uri } = await Screenshot.take();
[](#%5F%5Fcodelineno-9-5)  console.log('Screenshot saved at:', uri);
[](#%5F%5Fcodelineno-9-6)};
`

June 8, 2026 

 Back to top 