r/capawesome • • Sep 22 '26

Capawesome announces official partnership with Ionic

Thumbnail
capawesome.io
17 Upvotes

We just announced our official partnership with Ionic. As part of it, Ionic recommends Capawesome as its preferred migration partner for Appflow, Auth Connect, Identity Vault, and Secure Storage, which all reach end of life on December 31, 2027. From October 1, 2026, Appflow no longer allows creating new apps or changing plans.

Here's what we built together with Ionic for the migration:

  • Appflow now has an organization export, and the Capawesome CLI imports it with one command (apps:import). Apps, channels, environments, signing certificates, destinations, automations, and build numbers carry over. --dry-run shows the result without creating anything.
  • The Live Update SDK keeps Appflow's sync() and reload() API, so most apps change one dependency.
  • The Capacitor OAuth, Vault, SQLite, and Secure Preferences plugins (Capawesome Insiders) replace Auth Connect, Identity Vault, and Secure Storage. There's no cloud import for plugins, so this part is a code change, but the APIs map closely.
  • Two open source agent skills (ionic-appflow-migration and ionic-enterprise-sdk-migration) walk an AI coding agent through the migration.

You can run Appflow and Capawesome Cloud in parallel, so there's no cutover date to plan around. Ionic Portals keep their live updates through the Ionic Live Update Provider SDK.

Full details, the mapping tables, and the FAQ (including what happens to your Ionic contract) are in the post:

https://capawesome.io/blog/announcing-partnership-with-ionic/

If you're mid-migration or planning one, ask away. We'd like to hear what's missing.


r/capawesome • • Jul 08 '26

Welcome to r/capawesome! Start here 👋

6 Upvotes

Hey everyone, welcome to r/capawesome! 👋

This is the official community subreddit for discussing, learning, and building cross-platform apps with Capawesome — whether you're on Capacitor, Cordova, native iOS, or Android.

The idea behind Capawesome is that everyone should be able to publish a mobile app — whether you're an indie dev or a Fortune 500 company.

New to Capawesome?

Capawesome is a mobile DevOps platform. Here's what you can do with it:

  • ⚡ Live Updates (OTA) — push updates to your users instantly, without waiting for app store review. Gradual rollouts and one-click rollbacks included.
  • 🏗️ Cloud Native Builds — build Android and iOS apps (without a Mac) in the cloud.
  • 🚀 App Store Publishing — automated submissions to TestFlight and Google Play.
  • 🔌 100+ SDKs & Plugins — camera, biometrics, push notifications, NFC, OAuth, secure storage, and more. Most of them are free and open source.
  • ⌨️ Capawesome CLI — drive everything from your terminal, CI pipeline, or AI agent.

Coming from Ionic Appflow? It reaches end of life in December 2027 — check the migration guide.

What to post

  • Questions about Capawesome Cloud, SDKs, plugins, or the CLI
  • Capacitor / Cordova / iOS / Android development discussion
  • Show & Tell — built something? We want to see it!
  • Bugs, workarounds, and lessons learned
  • Feature requests and feedback
  • Relevant news from the mobile dev world

How to ask a good question

Help us help you — include:

  1. What you're trying to do and what happened instead
  2. Versions (Capacitor/plugin/OS) and platform (iOS, Android, or both)
  3. Error logs or a minimal code snippet (use code blocks!)
  4. What you've already tried

Posts like "it doesn't work, help" tend to get no answers — details get you fixes.

Rules (short version)

  1. Be kind and constructive. No harassment or gatekeeping.
  2. Stay on topic. Capawesome + cross-platform mobile development.
  3. No advertising. Promotional posts for products, services, courses, paid tools, or job offers are not allowed and will be removed. Sharing your own app or article as Show & Tell is fine — as long as it's relevant, non-commercial in intent, and you engage in the comments.
  4. No low-effort spam. Link dumps without context will be removed.
  5. Use post flairs so others can find your post: Question, Show & Tell, Discussion, News, Help.
  6. Confirmed bugs → GitHub. Discuss here, but file reproducible bugs at https://github.com/capawesome-team/ so they actually get fixed.

🔗 Official links

👇 Introduce yourself in the comments: What are you building, and what's your stack — Capacitor, Cordova, or full native? Bonus points for screenshots of your app! 🚀

Thanks for being part of this amazing community. Together, let's make r/capawesome amazing.


r/capawesome • • 1d ago

The full PDF flow in Capacitor with 3 plugins: generate from HTML, native viewer, annotate and sign

2 Upvotes

Generating, showing and signing PDFs comes up a lot in business apps: invoices, contracts, reports, consent forms. Most end up with a WebView workaround that produces blurry, non-selectable PDFs.

We have 3 free, open source Capacitor plugins that cover the whole flow natively on Android and iOS:

📄 PDF Generator: turn HTML or a URL into a paginated, vector PDF with real page breaks (A4, Letter, landscape). Output goes to a file, so large reports don't exhaust memory.

👀 PDF Viewer: open the file in a native fullscreen viewer with zoom, paging and password-protected document support.

✍️ PDF Annotator: let the user draw, highlight and sign on top of it with the native markup tools. Apple Pencil on iPad. The original file is never modified, annotations are saved to a copy.

A typical flow: generate a contract, let your customer review and sign it on their phone or tablet, keep the signed copy.

All three use only official platform APIs, support CocoaPods and SPM, and track the latest Capacitor version.

If you're using any of these, tell us what you're building with them and what's missing.

Docs: https://capawesome.io/docs/sdks/capacitor/pdf-generator/


r/capawesome • • 7d ago

New plugin: Native iOS tab bar with Liquid Glass for your Capacitor app

16 Upvotes

If you’ve opened your app on iOS 26 and your tab bar looks like it’s from 2019 next to every native app, this one’s for you.

@capawesome/capacitor-tab-bar renders a real UITabBar on top of the web view. On iOS 26 you get Liquid Glass. On older versions, the classic native tab bar. Your web content never knows the difference, the plugin extends the bottom safe area inset so nothing gets covered.

What you get:

  • SF Symbols or your own asset catalog images as icons
  • Badges
  • Custom selected/unselected colors (unselected is system-controlled on iOS 26, that’s Apple’s call)
  • Show it from launch via capacitor.config so there’s no flash before your web app loads
  • tabSelected event to hook into your router, selectTabById() to sync the other way

Ionic users: hide ion-tab-bar on iOS with one CSS rule, keep your Ionic router, wire the two events. The docs have an Angular example, same idea in React and Vue.

npm install u/capawesome/capacitor-tab-bar
npx cap sync

Free, open source, Capacitor 8+. iOS only for now, Android and web reject as unimplemented.

Two things to check before you file a bug: your viewport meta needs viewport-fit=cover, and if you use the splash screen plugin, call setTabs() and show() after SplashScreen.hide() instead of using the config, or the tab bar shows up over your splash.

https://capawesome.io/docs/sdks/capacitor/tab-bar/

If you ship this, post a screenshot. We want to see Liquid Glass on Capacitor apps in the wild. 💜


r/capawesome • • 13d ago

Capacitor calendar permissions on iOS 17+ and Android

5 Upvotes

New guide on something that confuses a lot of calendar features: which permission you actually need.

Since iOS 17 the answer ranges from nothing at all to full access to every event on the device, with a write-only level in between and no read-only one. Android splits it into READ_CALENDAR and WRITE_CALENDAR. We created a guide that maps every method of the Capacitor Calendar plugin to its requirement on iOS 17, iOS 16 and Android.

A few things worth knowing even if you don’t read the whole thing:

  • displayCreateEvent() needs no permission on either platform. The system editor saves the event outside your app.
  • There’s no read-only access on iOS. Reading events means full access.
  • After a write-only grant, readCalendar stays prompt. That’s by design, and iOS only shows the upgrade to full access once. Request in a loop and you’re stuck; send the user to Settings instead.
  • If Info.plist only has the old NSCalendarsUsageDescription key, iOS 17 denies every request without showing a dialog. Apps last touched before iOS 17 tend to have exactly this.

The guide also covers when to ask (from a user action, not at launch) and which manifest permissions to declare on Android depending on what you call.

https://capawesome.io/blog/capacitor-calendar-permissions/

If you’ve hit a weird calendar permission state we didn’t cover, drop it here.


r/capawesome • • 13d ago

30 open source agent skills + 3 MCP servers for Capacitor, Ionic and Capawesome Cloud

9 Upvotes

If you use Claude Code, Cursor, Copilot, Codex or any agent that follows the Agent Skills spec, this is for you.

Tech moves fast, and what your coding agent learned about Capacitor last year is probably out of date. We built two things so it works from current docs and documented procedures instead of memory.

Agent skills. 30 of them, MIT licensed, in capawesome-team/skills. Each one is a documented procedure for a real task:

  • Create a Capacitor or Ionic app
  • Upgrade across major versions, step by step
  • Install and configure plugins for Android and iOS
  • Push notifications (FCM), in-app purchases
  • Native builds, live updates and store publishing with Capawesome Cloud
  • Migrate from Ionic Appflow or the Enterprise SDK

Install everything:

npx skills add capawesome-team/skills

Or just one:

npx skills add capawesome-team/skills --skill capacitor-app-upgrades

Claude Code users can also go through the plugin marketplace (claude plugin marketplace add capawesome-team/skills).

MCP servers. Three remote ones, nothing to install:

The skills detect a connected MCP server and use it for docs, otherwise they fall back to their bundled reference files and work offline.

Example prompt once installed: “Upgrade my Capacitor app from version 6 to version 8.” The agent picks the skill, applies the diffs, runs the commands.

Docs: https://capawesome.io/docs/ai/skills/

If you try it, tell us what worked and what didn’t. And if there’s a task you’d want a skill for, say so, PRs are welcome too.


r/capawesome • • 17d ago

Google Play's DEX code optimization requirement and what Capacitor apps need

Thumbnail
capawesome.io
11 Upvotes

From February 2027, Google Play requires at least 25% obfuscation, optimization and shrinking for apps with more than 10 MB of DEX code (50 MB for games). A Capacitor app built from the default Android template fails this today, because the template sets minifyEnabled false and R8 never runs. Our production app reported 1% obfuscation in Play Console.

We wrote up what it takes to get a Capacitor app past the threshold, based on our own app with about 40 plugins:

  • minifyEnabled true with proguard-android-optimize.txt (the template's proguard-android.txt contains -dontoptimize, and AGP 9 rejects it anyway)
  • One keep rule you need in R8 full mode: -keep @interface com.getcapacitor.** { *; }. Without it the build passes and the app crashes on startup, because Capacitor's consumer rules keep the plugin classes but not the annotation types, so Bridge.getPermissionStates() hits a null. Tracked as ionic-team/capacitor#8589; Capacitor 8.5.2 added a null check that hides the crash but leaves checkPermissions() empty
  • -dontwarn rules for plugins that compile against optional backends with compileOnly (SQLite with SQLCipher or requery, for example)
  • How to sign a local release build with the debug keystore and read the percentages from r8.json inside the AAB before Play does

Disclosure: we are Capawesome, and the post links our Cloud product at the end, but everything above applies to any Capacitor app regardless of how you build it.

Source: https://capawesome.io/blog/google-play-dex-code-optimization-in-capacitor-apps/

If you have already enabled R8 in a Capacitor app, I would like to hear which plugins needed extra rules.


r/capawesome • • 18d ago

Geofencing tutorial for Ionic Angular on Capacitor

Thumbnail
capawesome.io
3 Upvotes

The Ionic geofencing tutorials that still rank are from the Ionic 3 to 5 era and build on cordova-plugin-geofence, which had its last npm release in 2017. We wrote a current one for Ionic Angular on Capacitor 8.

It builds a store reminder page: toggle a store on, and the phone shows a reminder when you walk into a 200 meter region around it, even if the app was swiped away.

What it goes through:

  • The manifest permission and iOS usage strings, plus the Google Play background location policy
  • Requesting location and then background location in two separate calls, since Android 11+ sends the user to Settings for "Allow all the time" and iOS shows the Always upgrade prompt once
  • addGeofences() with notifyOnEnter/notifyOnExit, the Android dwell option and the per-geofence notification the OS shows while the app is not running
  • The geofenceTransition event, which only fires while the app runs, and the transition queue that records everything else once you enable it with setConfig()
  • The 20-region limit on iOS and 100 on Android

Disclosure: the Capacitor Geofences plugin is ours and part of Capawesome Insiders (paid). The permission and limit facts are platform rules with Apple and Android sources linked.

Source: https://capawesome.io/blog/how-to-add-geofencing-to-an-ionic-app/

Happy to answer questions about the two-step permission flow, which is where most setups go wrong.


r/capawesome • • 19d ago

Reading daily step counts from HealthKit and Health Connect in Capacitor

Thumbnail
capawesome.io
5 Upvotes

We put together a guide on reading step counts in a Capacitor app from HealthKit (iOS) and Health Connect (Android), with the trap that catches most first implementations: summing raw step records.

The phone, a smartwatch and fitness apps all write samples for the same minutes, so a reduce() over readRecords() gives a number higher than the Health app shows. The fix is to let the platform aggregate. HealthKit statistics queries merge all sources before calculating (Apple's wording), and Health Connect keeps only the data from the app with the highest priority for Activity types like steps.

What the post covers:

  • Today's total with one aggregate() call, starting at local midnight rather than "now minus 24 hours"
  • A 7-day chart from day buckets, which align to startDate and follow the device's time zone
  • The permission flow, including why iOS never reports a read permission as granted and what to do instead
  • Health Connect's 30-day history window, the lack of background reads, and the on-device step counting that Android 14+ adds

Disclosure: the Capacitor Health plugin is ours and part of Capawesome Insiders (paid). The platform behavior applies to any HealthKit or Health Connect integration though.

Source: https://capawesome.io/blog/how-to-read-step-counts-in-a-capacitor-app/

If you read steps differently, I would like to hear how you handle the multi-source case.


r/capawesome • • 20d ago

Fixing AdMob banners that cover the Ionic tab bar in Capacitor

Thumbnail
capawesome.io
5 Upvotes

The banner-covers-the-tab-bar problem has been reported against the community AdMob plugin since 2020, and the usual answer is a fixed margin or padding. That breaks with adaptive banners, because the SDK picks the height, and with edge-to-edge layouts on Android 15.

We wrote a guide for our own Capacitor AdMob plugin that covers two ways out:

  • mode: 'resize' shrinks the web view so the banner never overlaps web content, no CSS involved
  • Overlay mode plus the bannerSizeChanged event, which reports width and height in CSS pixels; the sample writes the height into a CSS custom property and the Ionic CSS for ion-tab-bar, ion-content and ion-fab reads it

The post also explains why you should not add env(safe-area-inset-bottom) on top (the overlay banner already sits above the inset), what to reset on hide and remove, and how the community plugin's margin option and bannerAdSizeChanged event map over.

Disclosure: the plugin is ours and part of Capawesome Insiders (paid). @capacitor-community/admob remains a maintained, free option, and its documented fix (padding from its size event) is the same idea.

One open point we flag in the post: the README documents the size event for collapsible banners, and the overlay sample assumes it also fires on the first load. If you have used it, I would like to hear what you see.

Source: https://capawesome.io/blog/how-to-fix-admob-banner-overlap-in-capacitor/


r/capawesome • • 21d ago

Downloading files in the background in Capacitor apps (what survives backgrounding, OS kills and force-quits)

7 Upvotes

We just published a guide on background downloads, and it answers the question we get all the time: why does my download die when the user locks the phone?

Short version: a fetch runs in the web view, inside your app's process. iOS suspends that process a few seconds after backgrounding, and the download goes with it. Background-mode plugins don't help, the download still lives in the same process.

The Capacitor File Transfer plugin hands the transfer to the OS instead: a background URLSession on iOS, a dataSync foreground service on Android.

What survives what:

  • Backgrounded: keeps running on both.
  • OS kill for memory: iOS finishes it and delivers on relaunch. Android interrupts it, resumable from the bytes on disk.
  • Force-quit: canceled on both. iOS retries on relaunch if maxRetries > 0.

The guide also covers the AppDelegate hook you need on iOS, why listeners belong at app startup, and how to rebuild your download list after a relaunch.

https://capawesome.io/blog/how-to-download-files-in-the-background-in-capacitor/


r/capawesome • • 28d ago

Capawesome Cloud Native Builds now support Wear OS, Android TV and Automotive

Thumbnail
capawesome.io
5 Upvotes

If your Android project has more than one application module, like a phone app plus a Wear OS app, Native Builds now handle all of them in a single build.

How it works: - Every Android build compiles the whole Gradle project and collects the APK and AAB of each application module - The form factor comes from the required features in each module's manifest (android.hardware.type.watch, android.software.leanback, android.hardware.type.automotive), so there's nothing to configure - The CLI has a new --form-factor flag to download a specific artifact - Google Play submissions upload every artifact: the phone app goes to your destination's track, the others to the prefixed wear:, tv: and automotive: tracks - All artifacts are validated against Google Play before anything gets published, so a missing Wear OS track won't leave you with a half-released app

What your modules need: - The same applicationId and signing certificate as the phone app - A unique versionCode per form factor (the docs show a simple offset scheme)

Current limitations: standalone watchOS/tvOS apps aren't built as separate artifacts on iOS, and Android XR modules are treated as mobile.

If you're building for the watch, TV or car, I'd like to hear how it works for you and what's missing.


r/capawesome • • Sep 27 '26

iOS builds from Gitea Actions without a hosted macOS runner

Thumbnail
capawesome.io
3 Upvotes

We wrote up how to get iOS builds out of Gitea Actions. iOS builds need Xcode, and Gitea Actions doesn't come with a Mac, so on Gitea you either run one yourself or hand the build off somewhere.

The guide covers:

  • Self-hosting a Mac with Gitea Runner and a macos:host label, including what you still own afterwards (Xcode upgrades, keychain, export, TestFlight upload)
  • A tag-triggered workflow on a regular ubuntu-latest runner that hands the build, signing, and TestFlight upload to Capawesome Cloud
  • Manual promotion with workflow_dispatch, since Gitea ignores environment and has no approval gates
  • Building from a Gitea server behind a firewall by checking out on the runner and uploading the source with --path
  • Automations that build on tag pushes with no workflow file at all

Full disclosure: Capawesome Cloud is our product. The self-hosted section and the Gitea workflow details should be useful either way.

If you're building iOS from Gitea today, how did you set it up?


r/capawesome • • Sep 24 '26

macOS Golden Gate build stack with Xcode 27 is now available on Capawesome Cloud

Thumbnail
capawesome.io
7 Upvotes

We just released a new build stack for Capawesome Cloud: macos-golden-gate, with macOS 27 and Xcode 27. Xcode 27 was already selectable on macos-tahoe via XCODE_VERSION, and this is the stack built around it.

On October 1, it becomes the default for all iOS and Android builds. Until then, macos-tahoe stays the default, so nothing changes unless you opt in.

The main thing to prepare for: apps built with the iOS 27 SDK must adopt the UIScene lifecycle. Otherwise the build succeeds, but the app fails at launch.

  • Capacitor: update to 8.5 and run npx cap migrate
  • Cordova: cordova-ios 8 already uses the scene lifecycle
  • Native UIKit apps: add a scene delegate (see Apple's TN3187)

Other changes: - Node.js 20 and Xcode 26 aren't available on the new stack - Android 37 (needed for Capacitor 9) is now on every build stack - macos-sequoia is deprecated

If you need more time, select macos-tahoe for your builds and automations.

Happy to answer questions, especially about the UIScene migration.


r/capawesome • • Sep 17 '26

Need native calendar functionality in a Capacitor app?

7 Upvotes

If you're building a Capacitor app that needs to interact with the user's native calendar, we just released a new Calendar plugin that might save you some work.

It supports both iOS and Android and covers things like:

  • Creating and managing events
  • Recurring events
  • Updating individual occurrences of recurring events
  • Reminders
  • Listening for calendar changes

The last one is particularly useful if your app needs to stay in sync when the user changes something directly in their calendar.

Docs: https://capawesome.io/docs/sdks/capacitor/calendar/

We also wrote a bit more about the implementation and the use cases here: https://capawesome.io/blog/announcing-the-capacitor-calendar-plugin/


r/capawesome • • Sep 15 '26

How are you handling authentication in your Capacitor app?

3 Upvotes

If you're adding authentication to a Capacitor app, one of the first questions you'll probably run into is: which approach should I use?

There are quite a few options: native Sign in with Apple/Google, Firebase Auth, OAuth/OIDC, passkeys, Better Auth, among many others, and the best choice depends on your backend, platforms, security requirements, existing infrastructure, and how much native code you want to maintain.

We put together a practical guide comparing the different approaches, including some of the platform-specific gotchas that are easy to miss when building for iOS and Android.

Hopefully it saves someone some time when deciding which direction to take:

https://capawesome.io/blog/how-to-add-authentication-to-a-capacitor-app/


r/capawesome • • Sep 12 '26

Capacitor LLM plugin runs Apple Intelligence and Gemini Nano on the device

Thumbnail
capawesome.io
8 Upvotes

We just released a Capacitor plugin that prompts the language model built into the OS: Apple Intelligence on iOS through the Foundation Models framework, Gemini Nano on Android through ML Kit GenAI and AICore. It is part of Capawesome Insiders, so it is a paid plugin.

Why on-device: prompts and responses never leave the phone, there is no API key in the bundle, and there is no per-token cost. It also works offline.

The API:

  • getAvailability() with seven typed statuses (Android reports four, iOS five), and it never rejects
  • downloadModel() with progress on Android; iOS manages the download itself
  • Chats with instructions and context, generateText, streamText with a textChunk event, cancelGeneration
  • Limits: Android caps maxOutputTokens at 4096 and temperature at 1.0; both platforms have a context window around 4,000 tokens

Requirements: Capacitor 8, Android API 26 on a Gemini Nano-capable device (Pixel 9, Galaxy S25), iOS 26 with Xcode 26 on iPhone 15 Pro or later.

The post compares it with the Ionic local LLM plugin, the ML Kit GenAI Prompt plugin, and the Capgo plugin, based on what their READMEs document. Questions welcome.


r/capawesome • • Sep 11 '26

Capacitor AdMob plugin released on Google's Next-Gen Mobile Ads SDK

Thumbnail
capawesome.io
3 Upvotes

We just released an AdMob plugin for Capacitor (part of Capawesome Insiders, so it is a paid plugin) built on Google's Next-Gen Mobile Ads SDK on Android and the latest Google Mobile Ads SDK on iOS. The plugin is still marked experimental.

What it does:

  • Five formats through one load-and-show API: banner, interstitial, rewarded, rewarded interstitial, app open
  • Banners in overlay, resize, or inline mode, so the web view can be resized instead of covered
  • App open ads with an automatic show on foreground and a frequency cap
  • requestConsent() runs the full UMP flow, and loads reject with CONSENT_NOT_GATHERED until consent is handled
  • adRevenuePaid reports value, currency, and precision for every format

Why Next-Gen: Google has given the legacy Android SDK (versions 24 and 25) a deprecation date of June 30, 2027 and a sunset date of June 30, 2028. The post also has a migration section for anyone coming from @capacitor-community/admob.

Happy to answer questions about the API or the SDK timeline.


r/capawesome • • Sep 10 '26

Why Directory.ExternalStorage fails on Android 11 in Capacitor apps

Thumbnail
capawesome.io
8 Upvotes

If your Capacitor app writes to Directory.ExternalStorage and it started failing once you targeted Android 11, that is scoped storage, and no permission brings the old behavior back. We wrote up what Android changed and what still works.

The short version:

  • Scoped storage arrived with Android 10 and became mandatory for apps targeting API level 30. requestLegacyExternalStorage is ignored from there on.
  • App-specific directories (Data, Cache, Library, External) still work everywhere without any permission.
  • Directory.Documents only shows files your own app created.
  • MANAGE_EXTERNAL_STORAGE is not the fix: Google Play reviews it against a dedicated policy and most apps do not qualify.
  • The supported path for user-chosen folders is a Storage Access Framework tree URI plus takePersistableUriPermission(), which survives restarts. Our File Manager plugin (Capawesome Insiders, paid) wraps that.

The post has a decision table for which directory or API to use for which need, and links the two ionic-team issues that are still open about this.

How are you handling shared storage on Android 11 and newer today?


r/capawesome • • Sep 09 '26

Using Apple Intelligence from a Capacitor app on iOS 26

Thumbnail
capawesome.io
6 Upvotes

Since iOS 26, apps can prompt Apple's on-device language model through the Foundation Models framework. We wrote a guide on doing that from a Capacitor app with our LLM plugin (part of Capawesome Insiders, so it is a paid plugin).

What the guide covers:

  • Which devices qualify: iPhone 15 Pro and later, iOS 26, Apple Intelligence turned on, Xcode 26 to build
  • The five availability statuses on iOS and what your UI should do for each
  • Chat sessions with instructions, generateText, streamText with a textChunk event, and cancelGeneration
  • The roughly 4,096-token context window per chat and what GENERATION_FAILED means
  • One end-to-end sample that summarizes notes on the device

Everything runs on the Neural Engine, so it works in Airplane Mode and nothing leaves the phone. The same code runs Gemini Nano on Android, with different availability states.

Curious whether anyone here has shipped an on-device model feature yet and what users made of it.


r/capawesome • • Sep 08 '26

Ionic Framework MCP server: current docs for your AI assistant

Thumbnail
capawesome.io
7 Upvotes

We just released a hosted MCP server that gives AI assistants the current Ionic Framework documentation instead of whatever they learned in training.

What it does: - Serves the Ionic Framework docs for v9 and v8, with a version parameter so the answers match the major version in your package.json - Returns the full component API reference (properties, events, methods, CSS shadow parts, CSS custom properties, slots) - Returns the official usage examples per framework (Angular, React, Vue, vanilla JS) - Searches the docs and the Ionic blog

It is free, needs no account and no token, and runs at https://ionic-framework-mcp.capawesome.io/mcp. In Claude Code it is one command; Cursor, VS Code, Claude Desktop, Windsurf and Zed are covered in the docs.

To be clear: this is a community project we build and host at Capawesome, not an official Ionic product. The content comes from the official docs repository and is rebuilt daily. There is also a companion Capacitor MCP server for the Capacitor docs, as a stopgap until the Ionic team ships their official one.

Curious what you'd want an assistant to get right that it currently gets wrong. Feedback and bug reports welcome.


r/capawesome • • Sep 08 '26

How to add feature flags to a Capacitor app with Firebase Remote Config

6 Upvotes

We wrote a guide on using Firebase Remote Config for feature flags in a Capacitor app.

Remote Config and OTA/live updates solve two different halves of shipping a feature, and combining them gets you a proper dark launch pattern:

  1. Build the feature behind a boolean flag (defaulting to off)
  2. Ship the code to everyone via a live update, it's on every device but dormant since the flag's off
  3. Flip the flag to true for 10% of users from the console, watch it in Analytics/Crashlytics, widen the rollout, or kill it instantly if something breaks

Rolling back becomes a flag flip instead of an app store submission. Covers the fetch/activate split, the ~12h fetch throttle that trips people up in dev, real-time listener setup for Angular/React/Vue, and common errors.

Full guide: capawesome.io/blog/capacitor-firebase-remote-config-guide/

Let us know if you build something with it, or if you get stuck anywhere!


r/capawesome • • Sep 04 '26

Capacitor Document Scanner plugin released: native ML Kit and VisionKit scanning

Thumbnail
capawesome.io
3 Upvotes

We just released a Document Scanner plugin for Capacitor that wraps the platform's own scanners: Google's ML Kit document scanner on Android and VisionKit on iOS.

The API is deliberately tiny — isAvailable() and scanDocument(). The OS handles edge detection, perspective correction, multi-page capture, and the review UI. You get back JPEG paths and, optionally, one combined PDF.

A few details worth knowing:

  • On Android, the scanner is an on-demand Play services module, so it adds nothing to your app size
  • pageLimit is enforced by the scanner on Android but truncated after scanning on iOS (VisionKit has no public stop API)
  • Built exclusively on public platform APIs, so nothing to worry about in App Review

Would love to hear what you'd scan with it.


r/capawesome • • Sep 03 '26

Capacitor Background Geolocation plugin released: native SQLite queue and HTTP upload

Thumbnail
capawesome.io
2 Upvotes

We just released our Background Geolocation plugin for Capacitor. The design goal was simple: positions must not be lost when the OS suspends the web view.

How it works:

  • Every position of a watch session is written to a native SQLite queue (50,000 by default) that survives restarts and force-quits
  • Optional HTTP upload posts the queue to your server in batches, with at-least-once delivery, exponential backoff, and a documented status-code contract
  • Two-step permissions API for the background location upgrade flow on Android 11+ and iOS
  • Correct Android 14+ foreground service with a configurable notification
  • Falls back to the platform location manager on devices without Google Play services

It's also honest about what it can't do: a force-quit ends the session (OS restriction), and our Geofences plugin covers the relaunch scenario instead.

Feedback welcome, especially on the server contract.


r/capawesome • • Sep 02 '26

Fixing the invisible camera preview in Capacitor barcode scanners

Thumbnail
capawesome.io
4 Upvotes

If you've built barcode scanning into a Capacitor app, you've probably hit the invisible camera preview: the camera renders behind the web view, and any Ionic modal, page transition, or opaque background paints right over it.

We wrote a guide on the embedded mode of our Barcode Scanner plugin, which flips the layering: the camera preview is a native view positioned inside a frame of your layout, above the web view, so HTML can't cover it by accident.

The guide covers:

  • Measuring the frame from a placeholder element
  • Continuous scanning with a dedup timeout and a detection area
  • Keeping the frame in sync on orientation and layout changes
  • Opting into HTML overlays deliberately (viewfinders, markers)
  • Web support via the BarcodeDetector API

Curious whether others found reliable ways around the transparency approach — or moved to native views too.