---
description: Capawesome releases the Capacitor Electron Platform, a free and open-source way to build desktop apps for macOS, Windows, and Linux with Live Update support.
title: Capacitor Electron Platform: Build Desktop Apps - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/announcing-the-capacitor-electron-platform.png
---

<!doctype html> 

[Skip to content ](#capacitor-electron-platform-build-desktop-apps) 

[🖥️ Introducing the **Capacitor Electron Platform** — build desktop apps for macOS, Windows, and Linux. Free & open source. ](/blog/announcing-the-capacitor-electron-platform/) 

* [ 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/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ 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/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ 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, Yarn, or bun ](/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

* [ Related Posts ](#related-posts)
* [ Final Thoughts ](#final-thoughts)

# Capacitor Electron Platform: Build Desktop Apps[¶](#capacitor-electron-platform-build-desktop-apps "Permanent link")

We're excited to announce the [Capacitor Electron Platform](/docs/sdks/capacitor/electron/), a new open-source platform that lets you build, run, and package desktop apps for macOS, Windows, and Linux with [Capacitor](https://capacitorjs.com/) and [Electron](https://www.electronjs.org/). It's free, MIT-licensed, and built from the ground up as a modern replacement for the no longer actively maintained [Capacitor Community Electron Platform](https://github.com/capacitor-community/electron). Contributions are welcome!

[ ![Build and deploy your Capacitor app with Capawesome Cloud](https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png?t=1) ](https://capawesome.io/) 

**Key takeaways:**

* The Capacitor Electron Platform (`@capawesome/capacitor-electron`) brings your Capacitor app to macOS, Windows, and Linux.
* It's free, open source (MIT), and community contributions are welcome.
* It replaces the unmaintained Capacitor Community Electron Platform and ships with a migration guide.
* It requires Capacitor 6 or later and Electron 28 or later, and always supports the latest versions of both.
* It's the first Capacitor desktop platform with built-in support for Live Updates, open to all Live Update providers.
* It launches alongside a second new desktop platform, the Capacitor Tauri Platform, for lean apps with tiny binaries.

## Why a New Electron Platform?[¶](#why-a-new-electron-platform "Permanent link")

Capacitor has always been great at taking one web codebase to Android and iOS. For the desktop, the community has long relied on the Capacitor Community Electron Platform, but that project is no longer actively maintained. Teams shipping desktop apps with it are stuck on outdated Electron versions and have to maintain a large amount of generated platform code inside their own repositories.

We believe the desktop deserves the same first-class experience as mobile. So we built a new platform from scratch with three goals: keep the familiar Capacitor workflow, stay secure by default, and remain easy to keep up to date.

## What Is the Capacitor Electron Platform?[¶](#what-is-the-capacitor-electron-platform "Permanent link")

The Capacitor Electron Platform is an npm package (`@capawesome/capacitor-electron`) that adds Electron as a target to your Capacitor project, right next to Android and iOS. You keep using the commands you already know: `cap add`, `cap sync`, and `cap run`. Highlights include:

* **Cross-platform**: Build for macOS, Windows, and Linux from a single codebase.
* **Plugin support**: Plugins with an Electron implementation work out of the box, and plugins with a web implementation work automatically via fallback.
* **Security-first defaults**: Sandboxed renderer, context isolation, a strict Content Security Policy, and validated IPC are enabled by default and cannot be weakened.
* **Deep links**: Register a custom URL scheme in the config and receive links via the `appUrlOpen` event of the official [@capacitor/app](https://capacitorjs.com/docs/apis/app) plugin.
* **Live reload**: Full hot module replacement during development, driven by the `server.url` option you already use for mobile.
* **Packaging**: Package your app with electron-builder, including automatic dependency vendoring.
* **Minimal scaffold**: You own only a handful of small files. The platform logic ships inside the npm package, so updating is as simple as `npm update`.

The platform requires Capacitor 6 or later and Electron 28 or later, with no upper bound, so you can adopt new Electron majors as soon as they are released.

## How Do You Get Started?[¶](#how-do-you-get-started "Permanent link")

Adding the desktop as a target takes two commands. Install the package and add the platform to your Capacitor project:

`[](#%5F%5Fcodelineno-0-1)npm install @capawesome/capacitor-electron
[](#%5F%5Fcodelineno-0-2)npx cap add @capawesome/capacitor-electron
`

This scaffolds a minimal `electron/` folder containing a tiny entry point and a typed configuration file. From there, the workflow is the same as on mobile:

`[](#%5F%5Fcodelineno-1-1)npx cap sync @capawesome/capacitor-electron
[](#%5F%5Fcodelineno-1-2)npx cap run @capawesome/capacitor-electron
`

Note that you always pass the full package name to the Capacitor CLI. Window options, deep links, and lifecycle hooks are configured in a type-safe config file:

`[](#%5F%5Fcodelineno-2-1)import { defineConfig } from '@capawesome/capacitor-electron/config';
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)export default defineConfig({
[](#%5F%5Fcodelineno-2-4)  window: { width: 1200, height: 800, minWidth: 800, minHeight: 600 },
[](#%5F%5Fcodelineno-2-5)  deepLinks: { scheme: 'myapp' },
[](#%5F%5Fcodelineno-2-6)});
`

You can find the full documentation, including the plugin author guide and the migration guide, in the [Capacitor Electron Platform documentation](/docs/sdks/capacitor/electron/).

[Star Us on GitHub](https://github.com/capawesome-team/capacitor-electron)

## Live Reload During Development[¶](#live-reload-during-development "Permanent link")

During development, you work against your regular web dev server with full hot module replacement. Point the `server.url` option in your Capacitor configuration at the dev server and run the app:

`[](#%5F%5Fcodelineno-3-1)// capacitor.config.ts
[](#%5F%5Fcodelineno-3-2)const config: CapacitorConfig = {
[](#%5F%5Fcodelineno-3-3)  // ...
[](#%5F%5Fcodelineno-3-4)  server: {
[](#%5F%5Fcodelineno-3-5)    url: 'http://localhost:5173',
[](#%5F%5Fcodelineno-3-6)  },
[](#%5F%5Fcodelineno-3-7)};
`

The window loads the dev server while the plugin bridge works exactly as in production. A documented, dev-only Content Security Policy relaxation is applied for HMR runtimes, and the window automatically reconnects when the dev server restarts. Remove `server.url` to serve the built web assets from the app bundle again.

## Security by Default[¶](#security-by-default "Permanent link")

Electron security is easy to get wrong. The [official Electron security guidelines](https://www.electronjs.org/docs/latest/tutorial/security) list a long checklist of settings that every app developer is expected to configure correctly. The Capacitor Electron Platform takes that responsibility off your plate: a sandboxed renderer, context isolation, a strict Content Security Policy, and validated IPC are enabled by default and deliberately not configurable. There is no setting to accidentally weaken, and even windows created through the platform's `windowFactory` hook must keep the mandatory security options intact.

## Packaging for macOS, Windows, and Linux[¶](#packaging-for-macos-windows-and-linux "Permanent link")

When you're ready to ship, the scaffolded project packages with [electron-builder](https://www.electron.build):

`[](#%5F%5Fcodelineno-4-1)cd electron && npm run pack
`

The `pack` script compiles your entry point, vendors dependencies, and then runs electron-builder. The vendor step is what makes packaging reliable: it copies the platform runtime, every plugin's Electron implementation, and their full dependency closure into the package, so module resolution works identically in development and in the packaged app, without a second `npm install` and without version drift.

Code signing, notarization, installer targets (dmg, msi, nsis, AppImage, deb), and icons are standard electron-builder configuration in a file you own. Electron Forge is supported as an alternative. For updating the app binary itself, you can wire up [electron-updater](https://www.electron.build/auto-update) as the desktop equivalent of an app store update, while your web assets can be updated over the air, which brings us to the next section.

## Live Updates on the Desktop[¶](#live-updates-on-the-desktop "Permanent link")

This is the part we're most excited about: the Capacitor Electron Platform is the first Capacitor desktop platform designed for [Live Updates](/docs/cloud/live-updates/). The platform ships a bundle serving API that every plugin can access. A Live Update plugin downloads and verifies a new web bundle, activates it with a single call, and the platform takes care of serving it and reloading all windows.

Reliability is built in: if a newly activated bundle fails to boot within a configurable timeout, the platform automatically rolls back to the previous bundle. That protects your desktop users from broken updates in the same way you'd expect on mobile.

Just as important: this API is intentionally provider-agnostic. It's not tied to Capawesome Cloud. Any Live Update provider can integrate the platform in their Live Update plugin and offer over-the-air updates for Capacitor desktop apps.

## How Can Plugin Authors Add Electron Support?[¶](#how-can-plugin-authors-add-electron-support "Permanent link")

Any Capacitor plugin can add an Electron implementation, and no build-time dependency on the platform is required. The plugin declares where its implementation lives in its `package.json`:

`[](#%5F%5Fcodelineno-5-1){
[](#%5F%5Fcodelineno-5-2)  "capacitor": {
[](#%5F%5Fcodelineno-5-3)    "electron": { "src": "electron" }
[](#%5F%5Fcodelineno-5-4)  }
[](#%5F%5Fcodelineno-5-5)}
`

The implementation itself is an ES module that exports plugin classes. Each class declares its Capacitor registration name and its public API via static metadata:

`[](#%5F%5Fcodelineno-6-1)export class Echo {
[](#%5F%5Fcodelineno-6-2)  constructor({ config, services, notifyListeners }) {}
[](#%5F%5Fcodelineno-6-3)
[](#%5F%5Fcodelineno-6-4)  async echo(options) {
[](#%5F%5Fcodelineno-6-5)    return { value: options.value };
[](#%5F%5Fcodelineno-6-6)  }
[](#%5F%5Fcodelineno-6-7)}
[](#%5F%5Fcodelineno-6-8)
[](#%5F%5Fcodelineno-6-9)Echo.__capacitorElectronPlugin = {
[](#%5F%5Fcodelineno-6-10)  name: 'Echo',
[](#%5F%5Fcodelineno-6-11)  methods: ['echo'],
[](#%5F%5Fcodelineno-6-12)};
`

The declared `methods` array is the plugin's entire bridged surface: anything not listed stays internal to the main process, and a declared method that is missing on the class fails loudly at boot. Each class is instantiated once in Electron's main process with full Node.js and Electron API access, and the existing `registerPlugin(...)` wiring in the plugin's web code just works, with the web implementation as the automatic fallback. The constructor context also provides the platform services, including the bundle serving API that Live Update providers build on.

The first plugin with a native Electron implementation is the [Capacitor SQLite plugin](/docs/sdks/capacitor/sqlite/), which uses the built-in `node:sqlite` module. The full plugin author guide is available in the [GitHub repository](https://github.com/capawesome-team/capacitor-electron#plugin-development).

## What Are the Limitations?[¶](#what-are-the-limitations "Permanent link")

We want you to adopt the platform with a clear picture of the trade-offs. These are inherent to Electron and to the platform's design, not bugs:

* **Binary size and memory**: Every app ships its own Chromium and Node.js. Expect roughly 80 to 150 MB installed and a matching memory footprint.
* **Plugins need an Electron or web implementation**: iOS and Android native code doesn't translate to the desktop.
* **Native Node.js addons aren't rebuilt automatically**: The platform detects and reports them during packaging, but you rebuild them against Electron's ABI yourself, for example with `@electron/rebuild`.
* **No OTA update product included**: The platform provides the bundle serving API only. Download, channels, and verification are the job of a Live Update plugin.
* **Always pass the full package name to the Capacitor CLI**: A bare `npx cap sync electron` resolves to the unrelated `electron` npm package and silently does nothing.
* **Desktop is not mobile**: APIs like permission prompts, status bars, or app store review flows have no desktop equivalent, so plugins whose web implementation assumes a mobile browser may behave differently on desktop Chromium.

## Prefer Tauri Over Electron?[¶](#prefer-tauri-over-electron "Permanent link")

If binary size is your top priority, we have news for you as well: alongside the Electron platform, we're releasing the [Capacitor Tauri Platform](/docs/sdks/capacitor/tauri/), our second new open-source desktop platform. Instead of bundling Chromium, it uses the system webview and a security-first Rust core with deny-by-default permissions, which brings the installer down to roughly 3 to 10 MB.

The two platforms complement each other. Choose Electron for plugin-heavy apps, since any plugin with an Electron or web implementation works, and for apps that rely on Live Updates. Choose Tauri for lean, security-sensitive apps that get by with web plugin implementations and its curated set of core plugins; because Tauri compiles the web assets into the binary, web-bundle over-the-air updates are not available there. You can find all the details in the [Capacitor Tauri Platform announcement](/blog/announcing-the-capacitor-tauri-platform/).

## Migrating from the Capacitor Community Electron Platform[¶](#migrating-from-the-capacitor-community-electron-platform "Permanent link")

If you're currently using the Capacitor Community Electron Platform, the [migration guide](https://github.com/capawesome-team/capacitor-electron#migration) in the repository walks you through the switch. The biggest difference: instead of owning and maintaining a generated Electron project, you own only a few small files while the platform logic lives in the versioned npm package. Plugins written for the old platform need an implementation for the new plugin contract, and plugins with a web implementation continue to work without any changes.

## FAQ[¶](#faq "Permanent link")

### Is the Capacitor Electron Platform free?[¶](#is-the-capacitor-electron-platform-free "Permanent link")

Yes. The Capacitor Electron Platform is free and open source under the MIT license. Contributions are welcome in the [GitHub repository](https://github.com/capawesome-team/capacitor-electron).

### Which operating systems are supported?[¶](#which-operating-systems-are-supported "Permanent link")

The Capacitor Electron Platform supports macOS, Windows, and Linux.

### Which Capacitor and Electron versions are required?[¶](#which-capacitor-and-electron-versions-are-required "Permanent link")

The platform requires Capacitor 6 or later and Electron 28 or later. It always supports the latest versions of both.

### Do my existing Capacitor plugins work?[¶](#do-my-existing-capacitor-plugins-work "Permanent link")

Plugins that ship an Electron implementation work out of the box, and plugins with a web implementation work automatically via fallback. Plugins that only ship Android and iOS implementations need a dedicated Electron implementation.

### Does the platform support Live Updates?[¶](#does-the-platform-support-live-updates "Permanent link")

Yes. The platform ships a provider-agnostic bundle serving API with automatic rollback on failed boots, which any Live Update provider can integrate in their Live Update plugin.

### What does `Capacitor.getPlatform()` return on Electron?[¶](#what-does-capacitorgetplatform-return-on-electron "Permanent link")

It returns `'electron'`, and `Capacitor.isNativePlatform()` returns `true`.

### Should I choose Electron or Tauri for my Capacitor app?[¶](#should-i-choose-electron-or-tauri-for-my-capacitor-app "Permanent link")

Choose the Capacitor Electron Platform for plugin-heavy apps and for Live Updates. Choose the [Capacitor Tauri Platform](/docs/sdks/capacitor/tauri/) for tiny binaries of roughly 3 to 10 MB, if your app works with web plugin implementations and doesn't need over-the-air web bundle updates.

## Related Posts[¶](#related-posts "Permanent link")

* [Capacitor Tauri Platform: Lean Desktop Apps](/blog/announcing-the-capacitor-tauri-platform/)
* [Capacitor SQLite Plugin: Encrypted Databases](/blog/announcing-the-capacitor-sqlite-plugin/)

## Final Thoughts[¶](#final-thoughts "Permanent link")

The Capacitor Electron Platform brings your Capacitor app to macOS, Windows, and Linux with the workflow you already know, secure defaults, and built-in support for Live Updates. It's free, open source, and ready for your contributions in the [GitHub repository](https://github.com/capawesome-team/capacitor-electron).

If you have any questions, join us on the [Capawesome Discord server](https://discord.gg/VCXxSVjefW). To stay updated on the latest news, subscribe to the [Capawesome newsletter](https://capawesome.io/newsletter).

[Subscribe to the Capawesome Newsletter](https://capawesome.io/newsletter)

July 13, 2026 

Back to top

```json
{
      "@context": "https://schema.org",
      "@type": "BlogPosting",
      "headline": "Capacitor Electron Platform: Build Desktop Apps",
      "description": "Capawesome releases the Capacitor Electron Platform, a free and open-source way to build desktop apps for macOS, Windows, and Linux with Live Update support.",
      "image": "https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png",
      "datePublished": "2026-07-13T00:00:00+00:00",
      "dateModified": "2026-07-13T00:00:00+00:00",
      "author": [
        {
          "@type": "Person",
          "name": "Robin Genz",
          "url": "https://github.com/robingenz"
        }
      ],
      "publisher": {
        "@type": "Organization",
        "name": "Capawesome",
        "url": "https://capawesome.io",
        "logo": {
          "@type": "ImageObject",
          "url": "https://capawesome.io/assets/images/logo.svg"
        }
      },
      "articleSection": "Announcements",
      "keywords": ["Announcements", "Capacitor"],
      "isPartOf": {
        "@type": "Blog",
        "@id": "https://capawesome.io/blog/#blog"
      },
      "mainEntityOfPage": "https://capawesome.io/blog/announcing-the-capacitor-electron-platform/",
      "url": "https://capawesome.io/blog/announcing-the-capacitor-electron-platform/"
    }
{
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://capawesome.io/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://capawesome.io/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Capacitor Electron Platform: Build Desktop Apps",
          "item": "https://capawesome.io/blog/announcing-the-capacitor-electron-platform/"
        }
      ]
    }
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Why a New Electron Platform?", "acceptedAnswer": {"@type": "Answer", "text": "Capacitor has always been great at taking one web codebase to Android and iOS. For the desktop, the community has long relied on the Capacitor Community Electron Platform, but that project is no longer actively maintained. Teams shipping desktop apps with it are stuck on outdated Electron versions and have to maintain a large amount of generated platform code inside their own repositories. We believe the desktop deserves the same first-class experience as mobile. So we built a new platform from scratch with three goals: keep the familiar Capacitor workflow, stay secure by default, and remain easy to keep up to date."}}, {"@type": "Question", "name": "What Is the Capacitor Electron Platform?", "acceptedAnswer": {"@type": "Answer", "text": "The Capacitor Electron Platform is an npm package ( @capawesome/capacitor-electron) that adds Electron as a target to your Capacitor project, right next to Android and iOS. You keep using the commands you already know: cap add, cap sync, and cap run. Highlights include: Cross-platform: Build for macOS, Windows, and Linux from a single codebase. Plugin support: Plugins with an Electron implementation work out of the box, and plugins with a web implementation work automatically via fallback. Security-first defaults: Sandboxed renderer, context isolation, a strict Content Security Policy, and validated IPC are enabled by default and cannot be weakened. Deep links: Register a custom URL scheme in the config and receive links via the appUrlOpen event of the official @capacitor/app plugin. Live reload: Full hot module replacement during development, driven by the server.url option you already use for mobile. Packaging: Package your app with electron-builder, including automatic dependency vendoring. Minimal scaffold: You own only a handful of small files. The platform logic ships inside the npm package, so updating is as simple as npm update. The platform requires Capacitor 6 or later and Electron 28 or later, with no upper bound, so you can adopt new Electron majors as soon as they are released."}}, {"@type": "Question", "name": "How Do You Get Started?", "acceptedAnswer": {"@type": "Answer", "text": "Adding the desktop as a target takes two commands. Install the package and add the platform to your Capacitor project: npm install @capawesome/capacitor-electron npx cap add @capawesome/capacitor-electron This scaffolds a minimal electron/ folder containing a tiny entry point and a typed configuration file. From there, the workflow is the same as on mobile: npx cap sync @capawesome/capacitor-electron npx cap run @capawesome/capacitor-electron Note that you always pass the full package name to the Capacitor CLI. Window options, deep links, and lifecycle hooks are configured in a type-safe config file: import { defineConfig } from '@capawesome/capacitor-electron/config'; export default defineConfig ({ window: { width: 1200, height: 800, minWidth: 800, minHeight: 600 }, deepLinks: { scheme: 'myapp' }, }); You can find the full documentation, including the plugin author guide and the migration guide, in the Capacitor Electron Platform documentation. Star Us on GitHub"}}, {"@type": "Question", "name": "How Can Plugin Authors Add Electron Support?", "acceptedAnswer": {"@type": "Answer", "text": "Any Capacitor plugin can add an Electron implementation, and no build-time dependency on the platform is required. The plugin declares where its implementation lives in its package.json: { \"capacitor\": { \"electron\": { \"src\": \"electron\" } } } The implementation itself is an ES module that exports plugin classes. Each class declares its Capacitor registration name and its public API via static metadata: export class Echo { constructor ({ config, services, notifyListeners }) {} async echo ( options) { return { value: options.value }; } } Echo. __capacitorElectronPlugin = { name: 'Echo', methods: [ 'echo' ], }; The declared methods array is the plugin's entire bridged surface: anything not listed stays internal to the main process, and a declared method that is missing on the class fails loudly at boot. Each class is instantiated once in Electron's main process with full Node.js and Electron API access, and the existing registerPlugin(...) wiring in the plugin's web code just works, with the web implementation as the automatic fallback. The constructor context also provides the platform services, including the bundle serving API that Live Update providers build on. The first plugin with a native Electron implementation is the Capacitor SQLite plugin, which uses the built-in node:sqlite module. The full plugin author guide is available in the GitHub repository."}}, {"@type": "Question", "name": "What Are the Limitations?", "acceptedAnswer": {"@type": "Answer", "text": "We want you to adopt the platform with a clear picture of the trade-offs. These are inherent to Electron and to the platform's design, not bugs: Binary size and memory: Every app ships its own Chromium and Node.js. Expect roughly 80 to 150 MB installed and a matching memory footprint. Plugins need an Electron or web implementation: iOS and Android native code doesn't translate to the desktop. Native Node.js addons aren't rebuilt automatically: The platform detects and reports them during packaging, but you rebuild them against Electron's ABI yourself, for example with @electron/rebuild. No OTA update product included: The platform provides the bundle serving API only. Download, channels, and verification are the job of a Live Update plugin. Always pass the full package name to the Capacitor CLI: A bare npx cap sync electron resolves to the unrelated electron npm package and silently does nothing. Desktop is not mobile: APIs like permission prompts, status bars, or app store review flows have no desktop equivalent, so plugins whose web implementation assumes a mobile browser may behave differently on desktop Chromium."}}, {"@type": "Question", "name": "Prefer Tauri Over Electron?", "acceptedAnswer": {"@type": "Answer", "text": "If binary size is your top priority, we have news for you as well: alongside the Electron platform, we're releasing the Capacitor Tauri Platform, our second new open-source desktop platform. Instead of bundling Chromium, it uses the system webview and a security-first Rust core with deny-by-default permissions, which brings the installer down to roughly 3 to 10 MB. The two platforms complement each other. Choose Electron for plugin-heavy apps, since any plugin with an Electron or web implementation works, and for apps that rely on Live Updates. Choose Tauri for lean, security-sensitive apps that get by with web plugin implementations and its curated set of core plugins; because Tauri compiles the web assets into the binary, web-bundle over-the-air updates are not available there. You can find all the details in the Capacitor Tauri Platform announcement."}}, {"@type": "Question", "name": "Is the Capacitor Electron Platform free?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. The Capacitor Electron Platform is free and open source under the MIT license. Contributions are welcome in the GitHub repository."}}, {"@type": "Question", "name": "Which operating systems are supported?", "acceptedAnswer": {"@type": "Answer", "text": "The Capacitor Electron Platform supports macOS, Windows, and Linux."}}, {"@type": "Question", "name": "Which Capacitor and Electron versions are required?", "acceptedAnswer": {"@type": "Answer", "text": "The platform requires Capacitor 6 or later and Electron 28 or later. It always supports the latest versions of both."}}, {"@type": "Question", "name": "Do my existing Capacitor plugins work?", "acceptedAnswer": {"@type": "Answer", "text": "Plugins that ship an Electron implementation work out of the box, and plugins with a web implementation work automatically via fallback. Plugins that only ship Android and iOS implementations need a dedicated Electron implementation."}}, {"@type": "Question", "name": "Does the platform support Live Updates?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. The platform ships a provider-agnostic bundle serving API with automatic rollback on failed boots, which any Live Update provider can integrate in their Live Update plugin."}}, {"@type": "Question", "name": "What does Capacitor.getPlatform() return on Electron?", "acceptedAnswer": {"@type": "Answer", "text": "It returns 'electron', and Capacitor.isNativePlatform() returns true."}}, {"@type": "Question", "name": "Should I choose Electron or Tauri for my Capacitor app?", "acceptedAnswer": {"@type": "Answer", "text": "Choose the Capacitor Electron Platform for plugin-heavy apps and for Live Updates. Choose the Capacitor Tauri Platform for tiny binaries of roughly 3 to 10 MB, if your app works with web plugin implementations and doesn't need over-the-air web bundle updates."}}], "url": "https://capawesome.io/blog/announcing-the-capacitor-electron-platform/"}
```
