---
title: "Capawesome September 2026 Update: Ionic Partnership & More"
description: The Capawesome September 2026 update brings the Ionic partnership, the macOS Golden Gate build stack, Wear OS builds, new store destinations and new plugins.
date:
  created: 2026-10-06
  updated: 2026-10-06
authors:
  - robingenz
categories:
  - Updates
---

# Capawesome September 2026 Update

The Capawesome September update is here, and it is a big one! Ionic named Capawesome its official partner for Appflow migrations, Capawesome Cloud moved to a build stack with Xcode 27 and learned to build Wear OS, Android TV and Automotive apps in the same run, submissions now reach Huawei AppGallery and Firebase App Distribution with release notes attached, and six new plugins joined the catalog. 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="https://capawesome.io/" target="_blank">
    <img alt="Ship a fix in one command with Capawesome Cloud Live Updates, no store review" src="https://capawesome.io/assets/banners/cloud-ship-a-fix-in-one-command.png" />
  </a>
</div>

## Blog

September was the busiest month on the blog so far. Here are the highlights:

- Six plugin announcements: [Watch](./announcing-the-capacitor-watch-plugin.md), [Background Geolocation](./announcing-the-capacitor-background-geolocation-plugin.md), [Document Scanner](./announcing-the-capacitor-document-scanner-plugin.md), [Calendar](./announcing-the-capacitor-calendar-plugin.md), [AdMob](./announcing-the-capacitor-admob-plugin.md) and [LLM](./announcing-the-capacitor-llm-plugin.md), each with the design decisions behind the plugin.
- [How to Use Firebase in a Capacitor App](./how-to-use-firebase-in-a-capacitor-app.md), the hub for our Firebase guides, joined by new guides on [Cloud Functions](./capacitor-firebase-cloud-functions-guide.md), [Remote Config](./capacitor-firebase-remote-config-guide.md) and [Performance Monitoring](./capacitor-firebase-performance-monitoring-guide.md).
- On-device AI from both platforms: [How to Use Apple Intelligence in a Capacitor App](./how-to-use-apple-intelligence-in-a-capacitor-app.md) and [How to Use Gemini Nano in a Capacitor App](./how-to-use-gemini-nano-in-a-capacitor-app.md).
- [Android Scoped Storage in Capacitor Apps, Explained](./android-scoped-storage-in-capacitor-apps.md), for everyone whose `Directory.ExternalStorage` writes stopped working on Android 11.
- [Ionic Framework MCP Server for Your AI Assistant](./ionic-framework-mcp-server.md), which puts the current Ionic Framework docs into your AI assistant.

## Cloud

### Ionic Partnership

On September 22, we [announced our official partnership with Ionic](./announcing-partnership-with-ionic.md). Ionic recommends Capawesome as its preferred migration partner for Appflow, Auth Connect, Identity Vault and Secure Storage, which reach end of life on December 31, 2027. Together with the Ionic team, we built the migration path: the [`apps:import`](../../cloud/cli/commands.md#appsimport) command moves an entire Appflow organization into Capawesome Cloud, including apps, channels, environments, signing certificates, destinations and automations, and the Live Update SDK keeps Appflow's `sync()` and `reload()` methods, so most apps change one dependency. The [Capacitor OAuth](../../sdks/capacitor/oauth.md), [Vault](../../sdks/capacitor/vault.md), [SQLite](../../sdks/capacitor/sqlite.md) and [Secure Preferences](../../sdks/capacitor/secure-preferences.md) plugins replace the Ionic Enterprise plugins. You can run both platforms in parallel and retire Appflow when you are ready; the [Ionic Appflow migration guide](../../cloud/migrations/ionic-appflow.md) has the steps.

### macOS Golden Gate Build Stack

The new [`macos-golden-gate` build stack](../../cloud/native-builds/build-stacks.md) ships macOS 27 and Xcode 27 and became the default for all iOS and Android builds on October 1. Xcode 27 requires UIScene: an app without it still builds, but it fails at launch, so update to Capacitor 8.5 and run `npx cap migrate` before you move; cordova-ios 8 already uses UIScene. If you depend on Node.js 20 or Xcode 26, set `macos-tahoe` as your app's default build stack to stay there. Android 37 is available on every stack, which Capacitor 9 will require, and `macos-sequoia` is deprecated. [Announcing the macOS Golden Gate Build Stack](./announcing-the-macos-golden-gate-build-stack.md) walks through the migration.

### Wear OS, Android TV and Automotive Builds

Native Builds now [build every Android application module](../../cloud/native-builds/form-factors.md) of your project and return an APK and AAB for each form factor: phone, Wear OS, Android TV and Automotive. The form factor is detected from each module's manifest, so there is nothing to configure. The build detail page in the Console lists every artifact with its form factor, and `apps:builds:download --aab --form-factor watch` picks one from the CLI. Google Play submissions upload all artifacts at once: the phone app goes to your destination's track and the other form factors to their own tracks. All modules need the same `applicationId`, the same signing certificate and a unique `versionCode` per form factor. If you want to add a watch app to your Capacitor project, [How to Build a Wear OS App for Your Capacitor App](./how-to-build-a-wear-os-app-for-your-capacitor-app.md) shows how.

### Huawei AppGallery and Firebase App Distribution

App Store Publishing gained two destination types. A [Huawei AppGallery destination](../../cloud/app-store-publishing/destinations/huawei-appgallery.md) uploads a build to AppGallery Connect, either as a draft or submitted for review, and a [Firebase App Distribution destination](../../cloud/app-store-publishing/destinations/firebase-app-distribution.md) distributes a build to your tester groups. Both work like the existing TestFlight and Google Play destinations: configure the credentials once, then deploy with every build from the CLI, the Console or an automation. [Publish a Capacitor App on Huawei AppGallery](./how-to-publish-a-capacitor-app-on-huawei-appgallery.md) covers the one-time AppGallery Connect setup.

### Release Notes and App Review Submissions

Submissions can now carry [release notes](../../cloud/app-store-publishing/release-notes.md): a default text plus optional translations keyed by locale, which Capawesome Cloud publishes with the build on TestFlight, the App Store, Google Play, Huawei AppGallery and Firebase App Distribution. From the CLI, pass `--release-notes` and repeat `--release-notes-locale` per language, or keep all texts in one JSON file. App Store Connect destinations also received [submission settings](../../cloud/app-store-publishing/submit-for-app-review.md): submit the build for App Review right after the TestFlight upload, choose whether Apple releases the approved version automatically or you do, and cancel a submission that is still waiting for review before the new one goes in.

### Multi-Channel Live Update Deployments

A Live Update bundle can now be deployed to several channels in one go. In the Console, select multiple channels when you create a web build; from the CLI, repeat the `--channel` flag:

```bash
npx @capawesome/cli apps:liveupdates:create --channel production --channel staging
```

The same works for [automations](../../cloud/automations/index.md) that create web builds, so one Git push can feed a staging channel and a production rollout channel at the same time. The [multi-channel rollouts](../../cloud/live-updates/rollouts.md#multi-channel-rollouts) section explains the staged-release pattern this enables.

### Automation Trigger Patterns

[Automations](../../cloud/automations/reference.md) accept up to 10 trigger patterns per automation, and a pattern that starts with `!` excludes the branches or tags it matches. A branch or tag triggers the automation when no exclude pattern matches it and at least one of the other patterns does. For example, `v*` together with `!v*-*` builds `v1.0.0` but skips `v1.0.0-rc.1`, so pre-release tags no longer need a separate automation or a commit message convention.

### AI Failure Summaries

When a build or deployment fails, [Capawesome Cloud Assist](../../cloud/assist/index.md) now explains why in plain language and links the documentation page for the detected problem, for example when the native platform the build needs is missing from the repository. Request a summary from the CLI with `--failure-summary` on `apps:builds:create` and `apps:deployments:create`, or open it from the failed job in the Console. Cloud Assist is experimental and included free in every plan.

## Plugins

### Six New Plugins

We released six new plugins in September:

- [Zeroconf](../../sdks/capacitor/zeroconf.md) discovers and advertises services on the local network with mDNS/DNS-SD on Android and iOS. The plugin is part of [Capawesome Insiders](../../insiders/index.md).
- [Google Play Services](../../sdks/capacitor/google-play-services.md) checks whether Google Play Services is available on an Android device and prompts the user to install or update it, which pairs well with the bundled barcode scanner for Huawei and AOSP devices.
- [PDF Annotator](../../sdks/capacitor/pdf-annotator.md) opens a PDF in a fullscreen native viewer with markup tools for drawing, highlighting and erasing, and resolves with an annotated copy.
- [Option Picker](../../sdks/capacitor/option-picker.md) lets the user pick an option from a list with a native picker, a wheel on iOS and a Material 3 dialog on Android.
- [TikTok App Events](../../sdks/capacitor/tiktok-app-events.md) tracks installs, purchases and custom events for TikTok ad campaigns on Android and iOS. The plugin is unofficial.
- [Singular](../../sdks/capacitor/singular.md) attributes app installs and tracks events, revenue and deep links with the Singular Mobile SDK on Android and iOS. The plugin is unofficial.

### Geofences and Background Geolocation

Both location plugins received a durable queue in version 0.2.0. The [Geofences](../../sdks/capacitor/geofences.md) plugin stores every transition on the device, whether or not your app is running, and the [Background Geolocation](../../sdks/capacitor/background-geolocation.md) plugin does the same for positions. The queue survives app restarts, force-quits and device reboots, so a transition or position that happened while the app was terminated is waiting for you on the next launch. Enable it with [`setConfig(...)`](../../sdks/capacitor/geofences.md#setconfig), then read and acknowledge it in pages:

```typescript
import { Geofences } from '@capawesome-team/capacitor-geofences';

const drainQueue = async () => {
  await Geofences.setConfig({ maxSize: 1000 });
  const { transitions } = await Geofences.getQueuedTransitions({ limit: 100 });
  if (transitions.length > 0) {
    await Geofences.deleteQueuedTransitions({
      upToId: transitions[transitions.length - 1].id,
    });
  }
  return transitions;
};
```

The Background Geolocation plugin offers the same methods for positions, [`getQueuedPositions(...)`](../../sdks/capacitor/background-geolocation.md#getqueuedpositions) and [`deleteQueuedPositions(...)`](../../sdks/capacitor/background-geolocation.md#deletequeuedpositions), and its `getCurrentPosition(...)` method now supports the `androidForceLocationManager` option. Geofences 0.3.0 removes the `androidExpirationDuration` option: geofences no longer expire on their own, so remove them with `removeGeofences(...)` when they are no longer needed. These changes are available on Android and iOS.

### Contacts

[`pickContacts(...)`](../../sdks/capacitor/contacts.md#pickcontacts) of the [Contacts](../../sdks/capacitor/contacts.md) plugin now supports the `multiple` option on Android and iOS, so the user can select several contacts in one go. On Android 17 and newer, the plugin uses the system contacts picker, which never requires the `READ_CONTACTS` permission:

```typescript
import { Contacts } from '@capawesome-team/capacitor-contacts';

const pickAttendees = async () => {
  const { contacts } = await Contacts.pickContacts({
    fields: ['name', 'emailAddresses'],
    multiple: true,
  });
  return contacts;
};
```

### File Picker

Version 8.1.0 of the [File Picker](../../sdks/capacitor/file-picker.md) plugin adds a `webPath` property to every picked file, so you can display a picked image in an `<img>` element without converting it. On iOS, the new [`convertRawToJpeg(...)`](../../sdks/capacitor/file-picker.md#convertrawtojpeg) method converts RAW photos to JPEG, and [`pickDirectory()`](../../sdks/capacitor/file-picker.md#pickdirectory) returns a security-scoped `bookmark` that the [File Manager](../../sdks/capacitor/file-manager.md) plugin uses to keep access to a picked folder across app launches.

### Audio Player

Version 8.5.0 of the [Audio Player](../../sdks/capacitor/audio-player.md) plugin adds seek buttons to the system's media controls. Pass `seekBackwardOffset` and `seekForwardOffset` in milliseconds to [`play(...)`](../../sdks/capacitor/audio-player.md#play), and the lock screen and notification show skip buttons for those offsets:

```typescript
import { AudioPlayer } from '@capawesome-team/capacitor-audio-player';

const playEpisode = async (url: string) => {
  await AudioPlayer.play({
    url,
    seekBackwardOffset: 15000,
    seekForwardOffset: 30000,
    metadata: {
      title: 'Episode 42',
      artist: 'Capawesome Podcast',
    },
  });
};
```

On Android, the new `smallIcon`, `seekBackwardIcon` and `seekForwardIcon` configuration options set the drawable resources of the media notification. This feature is available on Android and iOS.

### SQLite

The [SQLite](../../sdks/capacitor/sqlite.md) plugin received three updates. On iOS, the `BundledSQLite` Swift Package trait bundles a current SQLite version instead of the one provided by the system, which gives you the same SQLite features on every iOS version. On the web, the new `vfs` option of [`initialize(...)`](../../sdks/capacitor/sqlite.md#initialize) stores databases in the OPFS SyncAccessHandle pool. And in version 0.4.0, `getVersion()` on a database connection returns `{ version }` with the schema version instead of the SQLite library version string, which is a breaking change if you parsed that string.

### Purchases

Version 0.4.0 of the [Purchases](../../sdks/capacitor/purchases.md) plugin changes how one-time purchases are completed on Android: [`finishTransaction(...)`](../../sdks/capacitor/purchases.md#finishtransaction) acknowledges a purchase instead of consuming it, and consumables pass `isConsumable: true`, so a non-consumable product can no longer be bought twice by accident. Google Play billing errors now carry their response code and debug message, with the new `PRODUCT_ALREADY_OWNED` and `PRODUCT_UNAVAILABLE` error codes. Version 0.4.2 adds the `obfuscatedAccountId` and `obfuscatedProfileId` options on Android and `appAccountToken` on iOS to [`purchaseProduct(...)`](../../sdks/capacitor/purchases.md#purchaseproduct), which link a purchase to a user account on your backend.

### Vault and Secure Preferences

The [Vault](../../sdks/capacitor/vault.md) and [Secure Preferences](../../sdks/capacitor/secure-preferences.md) plugins now report storage problems instead of hiding them. A value that can no longer be decrypted rejects with `DECRYPTION_FAILED`, and a missing or invalidated encryption key, for example after the user removed the device lock, rejects with `KEY_INVALIDATED`. Before, `get(...)` resolved with `null` in these cases, which looked like a missing value. Both changes are breaking and ship in Vault 0.2.0 and Secure Preferences 0.4.0, with `BREAKING.md` files that list the new error codes to handle.

### Intune

The [Intune](../../sdks/capacitor/intune.md) plugin added file protection: [`protectFile(...)`](../../sdks/capacitor/intune.md#protectfile) encrypts a file under the enrolled account's policy, [`isFileEncrypted(...)`](../../sdks/capacitor/intune.md#isfileencrypted) checks a file, and [`decryptFile(...)`](../../sdks/capacitor/intune.md#decryptfile) restores it. Version 0.1.2 adds [`remediateCompliance(...)`](../../sdks/capacitor/intune.md#remediatecompliance) and the `PROTECTION_POLICY_REQUIRED` error code, so your app can send the user through compliance remediation when a policy blocks access.

## Try Capawesome Cloud

Everything in the Cloud section above is live today: the Golden Gate build stack, Wear OS and Android TV builds, the new destinations and release notes. [Capawesome Cloud](../../cloud/index.md) builds, signs, publishes and updates your Capacitor apps from one place, and the 14-day trial needs no credit card.

[Try Capawesome Cloud Free](https://console.cloud.capawesome.io){ .md-button .md-button--primary }

## Conclusion

September connected the dots: the Ionic partnership gives Appflow users an official migration path, Native Builds now cover every Android form factor on a build stack with Xcode 27, and submissions reach two more destinations with release notes attached. On the plugin side, six new plugins joined the catalog, and the location plugins gained queues that survive app termination. If you missed the last update, catch up with the [July 2026 update](./2026-july-update.md).

If you have any questions or need help, feel free to join the [Capawesome Discord server](https://discord.gg/VCXxSVjefW){:target="_blank"}. And don't forget to subscribe to the [Capawesome newsletter](https://capawesome.io/newsletter/){:target="_blank"} to stay updated on the latest news and updates.
