---
title: Capawesome November 2024 Update
description: The Capawesome November update is here! This update includes new features and improvements for Capawesome Cloud and our Plugins.
date: 
  created: 2024-11-30
  updated: 2024-11-30
authors:
  - robingenz
categories:
  - Updates
---

# Capawesome November 2024 Update

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

## Cloud

### Automatically delete old bundles

There are now two new options available for automatically deleting old bundles so that you don't have to worry about the storage limit:

1. **Set a bundle limit**: You can set a limit for the number of bundles that can be assigned to a channel. If this limit is reached, the oldest bundle will be deleted automatically. For example, this is how you can set a bundle limit of 5 using the [Capawesome CLI](../../cloud/cli/index.md) when creating a channel:

    ```bash
    npx @capawesome/cli apps:channels:create --bundle-limit 5
    ```

2. **Set an expiration date**: You can set an expiration date for a bundle. If this date is reached, the bundle will be deleted automatically. For example, this is how you can automatically delete a bundle after 30 days using the [Capawesome CLI](../../cloud/cli/index.md) when creating a bundle:

    ```bash
    npx @capawesome/cli apps:bundles:create --expires-in-days 30
    ```

Both options are also available via the [Capawesome Cloud Console](https://console.cloud.capawesome.io){:target="_blank"}.

### Delete multiple items at once

You can now finally delete multiple Bundles, Channels, Devices and Tokens at once via the [Capawesome Cloud Console](https://console.cloud.capawesome.io){:target="_blank"}. Simply select the items you want to delete and click the `Delete` button.

<figure>
  <video controls="true" allowfullscreen="true" autoplay="true">
    <source src="/docs/assets/videos/posts/cloud-delete-multiple-items.mp4" type="video/mp4">
  </video>
</figure>

## Plugins

### Android Foreground Service

The [Capacitor Android Foreground Service plugin](../../sdks/capacitor/android-foreground-service.md) now has three new methods that allow you to update the foreground service notification and create/delete notification channels:

```ts
import { ForegroundService, Importance } from '@capawesome-team/capacitor-android-foreground-service';

/**
 * Update the foreground service notification.
 */
const updateForegroundService = async () => {
  await ForegroundService.updateForegroundService({
    id: 1,
    title: 'Title',
    body: 'Body',
    smallIcon: 'ic_stat_icon_config_sample',
  });
};

/**
 * Create a notification channel.
 */
const createNotificationChannel = async () => {
  await ForegroundService.createNotificationChannel({
    id: 'default',
    name: 'Default',
    description: 'Default channel',
    importance: Importance.Default,
  });
};

/**
 * Delete a notification channel.
 */
const deleteNotificationChannel = async () => {
  await ForegroundService.deleteNotificationChannel({
    id: 'default',
  });
};
```

Thanks to [@xsorifc28](https://github.com/xsorifc28){:target="_blank"} and [@ebarooni](https://github.com/ebarooni){:target="_blank"} for the contributions!

### App Review

Say hi to our brand new [Capacitor App Review plugin](../../sdks/capacitor/app-review.md) for Android and iOS! This plugin not only allows you to request in-app reviews but also to open the app store page of your app and, if possible, open the dialog to leave a review. Here is an example of how you can use this plugin:

```ts
import { AppReview } from '@capawesome/capacitor-app-review';

const openAppStore = async () => {
  await AppReview.openAppStore({
    appId: '123456789'
  });
};

const requestReview = async () => {
  await AppReview.requestReview();
};
```

Thanks to [@mertyldrr](https://github.com/mertyldrr){:target="_blank"} for the contribution!

### App Update

The [Capacitor App Update plugin](../../sdks/capacitor/app-update.md) now has a new `appId` property that allows you to specify the app ID of your app:

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

const openAppStore = async () => {
  await AppUpdate.openAppStore({
    appId: '123456789'
  });
};
```

This solves the problem where the app was not always found in the App Store and speeds up the entire plugin call.

### File Picker

The [Capacitor File Picker plugin](../../sdks/capacitor/file-picker.md) now has a new `pickDirectory` method that allows you to pick a directory:

```ts
import { FilePicker } from '@capawesome/capacitor-file-picker';

const pickDirectory = async () => {
  const result = await FilePicker.pickDirectory();
  console.log('Picked directory path:', result.path);
};
```

In combination with the [Filesystem](https://capacitorjs.com/docs/apis/filesystem){:target="_blank"} plugin, you can now easily access multiple files in a directory at once without having to select each file individually.

Thanks to [@ebarooni](https://github.com/ebarooni){:target="_blank"} for the contribution!

### ML Kit Barcode Scanning

The [ML Kit Barcode Scanning](../../sdks/capacitor/mlkit/barcode-scanning.md) plugin got two new features this month.

##### Compatibility with Torch Plugin

The plugin is now compatible with the [Capacitor Torch plugin](../../sdks/capacitor/torch.md) which means that you no longer have to use the deprecated torch methods of the ML Kit Barcode Scanning plugin.

##### Barcode Value Types

The plugin now returns the value types of the scanned barcodes. The following value types are available:

- [`BarcodeCalendarEvent`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodecalendarevent)
- [`BarcodeContactInfo`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodecontactinfo)
- [`BarcodeDriverLicense`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodedriverlicense)
- [`BarcodeEmail`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodeemail)
- [`BarcodeGeoPoint`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodegeopoint)
- [`BarcodePhone`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodephone)
- [`BarcodeSms`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodesms)
- [`BarcodeUrlBookmark`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodeurlbookmark)
- [`BarcodeWifi`](../../sdks/capacitor/mlkit/barcode-scanning.md#barcodewifi)

Thanks to [@mertyldrr](https://github.com/mertyldrr){:target="_blank"} for the contribution!

### NFC

The [Capacitor NFC plugin](../../sdks/capacitor/nfc.md) now has a new `compatibilityMode` flag that can help reading some special NDEF tags:

```ts
import { Nfc } from '@capawesome-team/capacitor-nfc';

const startScanSession = async () => {
  await Nfc.startScanSession({ 
    compatibilityMode: true 
  });
};
```

Please be aware that this mode only supports reading NDEF tags and is only available on iOS.

### Torch

The [Capacitor Torch plugin](../../sdks/capacitor/torch.md) has also been updated to be compatible with the [ML Kit Barcode Scanning](../../sdks/capacitor/mlkit/barcode-scanning.md) plugin. 
This means that you can now use the Torch plugin to toggle the flashlight even when scanning barcodes.

### Wifi

The [Capacitor Wifi plugin](../../sdks/capacitor/wifi.md) now returns the security types and signal strength for scanned networks:

```ts
import { Wifi } from '@capawesome-team/capacitor-wifi';

const scan = async () => {
  await Wifi.addListener('networksScanned', (event) => {
    const firstNetwork = event.networks[0];
    console.log('First network security types:', firstNetwork.securityTypes);
    console.log('First network signal strength:', firstNetwork.rssi);
  });
  await Wifi.startScan();
};
```
