โ–ฒ 8 r/capawesome

This is by far Capawesome's most underrated feature

Did you know you can turn any successful build into a link and QR code, testers scan it and install straight to their phone.

No need of a Capawesome account, no TestFlight review wait, no "hey can you send me the APK" email thread.

It works for Android and iOS, Capacitor/Cordova apps and native Kotlin/Swift apps. Set an expiration, revoke it whenever.

And the best part: you can plug it straight into CI, drop a QR code into every pull request so reviewers can test the actual build, not just the diff

Read more: https://capawesome.io/blog/share-mobile-app-builds-with-testers/

reddit.com
u/DayanaJabif โ€” 14 days ago
โ–ฒ 7 r/capawesome

Firebase Analytics โ€” track what users actually do in your app ๐Ÿ“Š

Hey everyone! Part 4 of the Firebase series is up: Firebase Analytics in Capacitor, end to end.

The refreshing part after the Firestore guide: Analytics is completely free. Unlimited event volume, no usage-based billing at all, the only cap is 500 distinct event types per app. Cost simply isn't part of the adoption decision here.

What the guide covers:

  • Setup: Firebase Analytics Capacitor Plugin + the firebase package, native config files, and that's it โ€” collection starts automatically once the config is in place
  • Event and screen tracking: logEvent() with custom params, plus router-based auto screen tracking with working examples for Angular, React, and Vue
  • DebugView: standard reports batch for ~1 hour by design, so don't sit there thinking your integration is broken โ€” enable debug mode and see events in seconds
  • Consent management: call setConsent() before your first logEvent(). Consent only governs collection going forward, so late consent = events you didn't mean to collect
  • IDFA on iOS: disabling the advertising ID is an install-time decision (pod/package trait), not a runtime call. Get it wrong and you ship tracking code you can't easily turn off
  • The silent trap: event names are case-sensitive. sign_up and Sign_Up are two different events โ€” mixed casing quietly fragments your data with no error, no warning

๐Ÿ“– https://capawesome.io/blog/capacitor-firebase-analytics-guide/

Previous parts: Authentication ยท Firestore ยท Cloud Storage

What are you tracking in your apps? And if there's an Analytics scenario the guide doesn't cover, tell us โ€” the series keeps growing with your questions. ๐Ÿ”ฅ

u/DayanaJabif โ€” 17 days ago
โ–ฒ 13 r/capawesome+1 crossposts

Cloud Firestore in Capacitor: the complete guide (offline sync, real-time listeners, and best practices)

Hey everyone! Part 2 of the Firebase series is up: the complete guide to Cloud Firestore in Capacitor. ๐Ÿ”ฅ

What it covers:

  • Setup: database creation, security rules, Firestore plugin installation, native config
  • CRUD through a real example: a product catalog, covering addDocument vs setDocument (auto ID vs meaningful ID), filtered queries, and deletes
  • Real-time listeners: document and collection snapshots, with working cleanup examples for Angular (NgZone included), React, and Vue
  • Offline sync, the deep dive: enablePersistence() and its "must be called first" rule, fromCache/hasPendingWrites metadata for proper offline UX, pending server timestamps, and forcing offline mode for testing. Queued writes survive app restarts.
  • Best practices: getCountFromServer() instead of downloading docs to count them, FieldValue helpers instead of read-modify-write races, listener cleanup

The gotcha worth knowing: real-time listeners count as billed reads every time the listened data changes. A busy collection with many active listeners can burn your free tier faster than plain fetches. The guide's FAQ covers it, and the best practices are basically the defense manual.

๐Ÿ“– https://capawesome.io/blog/capacitor-firebase-cloud-firestore-guide/

Yesterday's Authentication guide pairs with this one (your security rules need request.auth, which native sign-in populates automatically):

Anything Firestore-related you'd want covered that isn't here? The series continues and your questions literally shape what we write next. ๐Ÿ™Œ๐Ÿฝ

u/DayanaJabif โ€” 20 days ago
โ–ฒ 18 r/ionic+2 crossposts

๐Ÿ”ฅ New guide: Firebase Authentication in Capacitor, end to end (setup โ†’ sign-in โ†’ production)

Hey everyone! We just published a complete guide to integrating Firebase Authentication in a Capacitor app. It's a long one because it covers the whole journey, not just the happy path:

  • Full setup: Firebase project, plugin installation, native config files for both platforms
  • Sign-in implemented end to end: email/password and Google (the two that exercise every part of the setup), plus pointers for Apple, phone, passwordless email, and custom tokens
  • Framework wiring: working authStateChange examples for Angular (including the NgZone gotcha), React, and Vue
  • User management: ID tokens for your backend, email verification, password reset, anonymous sign-in with account linking
  • Best practices: Firebase Emulator for development, server-side token verification, the ATT prompt if you use Facebook Login, and why fetchSignInMethodsForEmail() no longer works on new projects (Email Enumeration Protection returns an empty array since Sept 2023)
  • Troubleshooting: the classics, including Google Sign-In working in dev but failing after release (Play Store re-signs your app โ€” you need the Play Console SHA-1 too)

๐Ÿ“– https://capawesome.io/blog/capacitor-firebase-authentication-guide/

There's also a working demo repo linked in the guide if you want to jump straight to code.

If you hit an auth issue that isn't covered, please tell us here, the troubleshooting section is exactly the kind of thing we want to keep growing with real cases.

u/DayanaJabif โ€” 21 days ago
โ–ฒ 14 r/ionic+2 crossposts

New guide: Privacy Screen โ€” hide your app's content in the app switcher, block captures, detect screenshots

Hey everyone! We just published a new guide about protecting sensitive content in your Capacitor app with the Privacy Screen plugin.

Quick test before you click: open your phone's app switcher. See your banking app? Your chats? Any private information? That snapshot the OS takes when you switch apps is exactly the problem this solves.

What the guide covers:

  • The app switcher fix: one enable() call swaps in a blank/branded screen the instant your app goes to background. Works on both platforms.
  • Screen capture blocking: on Android, enable() blocks screenshots and recordings outright. On iOS, Apple doesn't allow blocking the OS-level gesture, so there's an opt-in preventScreenshots option that uses an unofficial technique (test carefully before production).
  • Screenshot detection: the screenshotTaken event lets your app react when someone captures the screen, the pattern Snapchat built its reputation on. Works on iOS and Android 14+.

There's a runnable demo app: you can clone and try on iOS and Android to see the switcher blur in action.

๐Ÿ“– Guide: https://capawesome.io/blog/capacitor-privacy-screen-hide-app-content/
๐Ÿ’ป Demo: https://github.com/capawesome-team/capacitor-privacy-screen-demo

If your app shows balances, chats, health data, OTP codes, or anything users consider private, this one's worth 10 minutes.

Anyone already using Privacy Screen in production? Would love to hear what you're protecting and if you hit any platform quirks, tell us here, that feedback goes straight into improving the plugin and its docs.

u/DayanaJabif โ€” 23 days ago
โ–ฒ 13 r/capawesome+1 crossposts

Ever wondered how Live Updates work? Here's what happens under the hood.

You already know Live Updates let you ship fixes to your app in real time, no app store review. But do you actually know how it works? It's simpler than most people think, and understanding it will help you use it better.

The two layers

Every Capacitor app has two layers. The web layer: your HTML, CSS, and JS, loaded into the web view. The native layer: the compiled code (Java/Kotlin, Swift) plus your native plugins.

https://preview.redd.it/nyog74frtteh1.png?width=591&format=png&auto=webp&s=bebd9720235b326a06d6555fe6d75e103a2fc16d

Here's the key detail: your web files are never compiled into the app binary. They ship inside the app package (the classic www/ folder), but they stay plain files. And plain files can be replaced.

Where your app actually loads from

The web view doesn't load your app from the internet. It loads it from a local origin served out of the app bundle, on Android via WebViewAssetLoader (https://localhost/), on iOS via WKURLSchemeHandler (app://localhost/). By default, that content is the www/ folder that was bundled when the binary was built.

What a Live Update actually does

A live update simply changes which folder those requests are served from:

  1. The SDK downloads a new bundle from the server
  2. Writes it to a local directory inside the app's sandbox
  3. Registers it as the next bundle to use
  4. On the next launch (or immediately, if you prefer), the web view serves your app from the new bundle instead of the built-in www/

That's it. No binary patching, no code injection. Just swapping the folder the web view reads from.

The constraint that is also the feature

Because only the web layer changes, live updates are limited to binary-compatible changes: HTML, CSS, JS, and assets. Add a plugin or touch native code, and you need a store release. But that same constraint is why it's fully compliant with both stores: Apple explicitly permits downloading interpreted code that doesn't change the app's primary purpose, and Google Play exempts code running in a webview from its self-update restrictions.

What the platform adds on top

The mechanism is simple. Running it in production is where it gets interesting: bundles delivered via global CDN, channels so the right devices get the right version, staged rollouts, one-click rollbacks when something goes wrong, and code signing so only you can publish updates to your app (the SDK verifies the signature before applying a bundle).

Full deep dive here: capawesome.io/blog/how-live-updates-for-capacitor-work/

Questions welcome: happy to go deeper on any part.

reddit.com
u/DayanaJabif โ€” 29 days ago
โ–ฒ 18 r/capawesome+1 crossposts

All of Google's ML Kit is now available in Capacitor: 21 open source plugins, one JavaScript API

Hey everyone!

We just finished shipping an extensive suite of ML Kit plugins for Capacitor: 21 plugins that wrap Google's ML Kit SDKs behind a single JavaScript API. Everything is open source and free.

The full list includes text recognition (OCR), barcode scanning, document scanner, translation, language identification, face detection, face mesh, object detection, pose detection, selfie/subject segmentation, digital ink recognition, entity extraction, smart reply, image labeling, and six GenAI plugins powered by Gemini Nano (prompt, summarization, proofreading, rewriting, image description, speech recognition).

The part we think is most interesting: everything runs on-device. No per-call API costs, works offline (after the initial model download), and user data never leaves the phone.

Some honest caveats:

- The GenAI plugins are Android-only for now, since Gemini Nano requires AICore-supported devices (recent Pixel, Samsung flagships, etc.)

- Most other plugins support Android and iOS, some also work on the Web. Each plugin's docs page lists supported platforms.

Docs: capawesome.io/docs/sdks/capacitor/mlkit

Happy to answer any technical questions, and if you build something with them, I'd honestly love to see it. Feedback and issues welcome on GitHub. ๐Ÿ’œ

u/DayanaJabif โ€” 1 month ago
โ–ฒ 12 r/capawesome+1 crossposts

Share Mobile App Builds with Testers via Link & QR Code

Build sharing just shipped in Capawesome Cloud, and the CI/CD part of this is the bit I'm most excited about.

Hook it into your GitHub Action and every pull request can auto generate a QR code for an installable build. Testing a PR stops meaning "read the diff" and starts meaning "use the app." Scan the code, install it on your phone, done. No TestFlight review wait, no "hey can you send me the APK" thread, no manual steps, everything happens automatically as part of your pipeline.

Also works outside of CI if you just want to quickly share a build with a client or teammate: one click in the Console gives you a link + QR code, they scan it and install, no Capawesome account needed on their end.

Full writeup with the GitHub Action setup: https://capawesome.io/blog/share-mobile-app-builds-with-testers/

How much time would this save your team's dev workflow? Curious if anyone's already doing something similar with a custom script.

u/DayanaJabif โ€” 1 month ago
โ–ฒ 8 r/tauri

Capacitor can now target Tauri for desktop

Capawesome just shipped an official Tauri platform for Capacitor apps.

Basically if you've got a Capacitor app for mobile, you can now add Tauri as a desktop target and get macOS/Windows/Linux builds through the system webview instead of pulling in Electron. Installers end up around 3-10MB, and it generates deny-by-default capability files automatically based on what plugins you're using.

Real limitation though: no arbitrary native plugins, since Tauri has no Node runtime. Only built-in stuff, a curated plugin set, and anything with a web fallback actually run. Also no OTA updates for the web bundle, it gets compiled into the binary, so updates mean shipping a new signed build.

If you need more than that, like OTA updates or the full native plugin ecosystem, there's also a sibling Electron platform. Bigger installers, but way fewer limitations.

So the Tauri one specifically is more for teams with an existing Capacitor codebase who want a lean desktop option and don't mind the tradeoffs.

Curious if anyone here would actually find this useful.

Repo: https://github.com/capawesome-team/capacitor-tauri

u/DayanaJabif โ€” 1 month ago
โ–ฒ 13 r/ionic+2 crossposts

Sync your Capacitor app version everywhere with a single command

If you're releasing Capacitor apps regularly, you've probably updated the version in package.json and then realized you still had to update Android and iOS.

We built Capver to make that a one-command task.

capver patch
capver minor
capver major

It automatically keeps your app version in sync across your web project, Android, and iOS.

It's open source if anyone wants to try it:
https://github.com/capawesome-team/capver

Feedback and feature ideas are always welcome. ๐Ÿ™Œ๐Ÿฝ

u/DayanaJabif โ€” 1 month ago
โ–ฒ 8 r/capawesome+1 crossposts

Convert Your Lovable App into an iOS & Android Apps - using Capacitor

How cool is it that you can use Capacitor to turn your Lovable app into native iOS and Android apps, and use Capawesome Cloud to handle all the stores hassle in the cloud: builds, certificates, deploys, etc.

No Mac, no Xcode, no Android Studio.

youtu.be
u/DayanaJabif โ€” 1 month ago

Upload Symbols Failed - when migrated project to SPM

I updated a project to SPM and now when Validating the app through xcode I get all these warnings.

Using Xcode 26.1.1
Already checked the Debug Information Format for app target and set it to DWARF with dSYM Fileย (Debug + Release)

The archive stillย validatesย and uploads to App Store Connect.

Has anyone managed to get through this?

u/DayanaJabif โ€” 2 months ago
โ–ฒ 2 r/devops

Best way to automate mobile app releases to TestFlight and Play Store in 2026?

Spent some time mapping out the mobile release automation landscape and wanted to share what I found. Three main approaches that actually work, each with different trade-offs.

  1. Cloud CI platforms with built-in store integrations

There are different options with diff prices. Setup usually takes 2-3 days to get signing configs right and pipelines debugged. Maintenance is pretty low once it's running but you're locked into their pricing model. OTA updates are not included so you'd need a separate service for that.

Good fit if you're on native iOS/Android or Flutter and don't need OTA.

  1. Self-hosted Fastlane on your own runners

Basically free if you already have CI infrastructure, but you need a dedicated Mac for iOS builds. Someone on the team also needs to maintain the Ruby gems and lane files. I'd budget 5-8 hours for initial setup then 2 hours monthly just keeping dependencies from breaking. OTA updates are not included out of the box.

Makes sense if you already have the Mac hardware and the DevOps bandwidth. Otherwise the hidden cost adds up fast.

  1. Dedicated mobile DevOps platforms that bundle everything

Newer category. These bundle cloud builds, store submission and OTA updates into one product. Pricing starts around $19/month for solo devs, no per-minute metering. Setup is usually under a day since they handle the signing and configs complexity. Maintenance is minimal, no runners to babysit, no gem updates. OTA updates are included so you can push a hotfix live in minutes without waiting on store review, with gradual rollouts and automatic rollbacks.

For most teams starting fresh in 2026 I'd lean toward option 3 unless you have a strong reason to own the infrastructure. The time saved on setup and maintenance alone usually justifies the cost difference.

What's your current stack? Happy to go deeper on any of these since I have personal experience working on projects with each of the 3 options.

reddit.com
u/DayanaJabif โ€” 2 months ago
โ–ฒ 29 r/PWA+1 crossposts

I spent years helping devs ship web apps as native apps. Here's everything in one guide.

I work as a Developer Advocate helping people ship web apps as native mobile apps, and I kept answering the same questions over and over. So I wrote a guide that summarizes everything I recommend, based on 13+ years working in mobile development.

From what I've seen, every time someone in a web dev community asks "how do I publish my React/Vue/Angular app to the App Store?", the answers are either "just make a PWA" (which doesn't actually get you on the stores) or links to tutorials that assume you already know what a provisioning profile is and have Xcode configured on a Mac.

This one starts from zero. It's structured as an index, not a wall of text. Each step links to specific posts, videos, tools, and automation resources so you can go as deep as you need, at your own pace.

Some things I cover that I rarely see explained well:

- Why PWAs won't get you into the App Store or Google Play (and what to use instead)

- How to generate iOS certificates directly from your browser, without a Mac or Keychain Access

- The Google Play closed testing requirement that blindsides most first-time publishers: personal accounts created after November 2023 need 12 testers actively opted in for at least 14 consecutive days before you can go public.

- Why you should install the Live Update plugin in your very first release, even if you have nothing to update yet. Adding it later means another full native build and another review cycle, which is the last thing you want when you're trying to push a critical fix.

- How to build for iOS without owning a Mac

Honest feedback welcome: is there a step that's unclear, or something you think is missing?

https://capawesome.io/blog/11-steps-to-get-your-web-app-on-the-app-store/

u/DayanaJabif โ€” 2 months ago
โ–ฒ 0 r/AppDevelopers

Why do so many mobile developers still not know about OTA updates?

Am I the only one surprised by how many mobile developers still don't know OTA updates exist?

I regularly see people still complaining about App Store review times when they need to push a fix or make a UI change... I wonder if they know there're OTA update solutions that have been around for years.

Obviously you can't ship native code changes this way, but for a lot of UI and business logic updates, you don't necessarily need to wait for store approval.

Why do you think OTA updates still aren't more widely known or adopted? Is it policy concerns, lack of awareness, or something else?

How many of you are familiar with this concept?

For anyone unfamiliar with OTA updates, here's a good overview.

u/DayanaJabif โ€” 3 months ago
โ–ฒ 22 r/ionic+3 crossposts

AMA - What would you like to know/understand about building mobile apps with Capacitor?

Been using Capacitor and Ionic since the early days, built and shipped multiple production apps with it. Ionic Developer Expert. Currently working as a Developer Advocate at Capawesome.
Ask me anything about building, shipping, plugins, app store releases, OTA updates, native integrations, etc.

u/DayanaJabif โ€” 1 month ago
โ–ฒ 3 r/AppDevelopers

AI agents and Capacitor: how to actually make them work together (not just for web layers)

I've been experimenting with AI agents in Capacitor projects and ran into this wall: the agent is great for the web layer but produces confidently wrong output the moment you touch anything native, wrong Gradle config, outdated iOS entitlement steps, invented CLI flags.

After some trial and error, the setup that actually works for me requires two things:

1. Domain-specific knowledge, not just a general model
General-purpose agents don't have reliable up-to-date context for Capacitor's native side. The pattern that helped me was using agent skills, structured procedural files (following the agentskills.io spec) that you load into your agent runtime. They're model-agnostic, so they work with Claude Code, Cursor, Windsurf, Copilot, etc. The idea is the agent follows a verified, step-by-step procedure instead of guessing.

2. A way to actually execute native tasks
Knowing the steps isn't enough, the agent also needs to be able to run iOS builds, handle signing, and push updates. Without execution capability, it's just suggestions.

Some concrete things this unlocks:

  • Correct plugin installation on both platforms (entitlements, manifests, Info.plist) without manual review
  • iOS builds from Windows/Linux โ€” useful if your team doesn't have everyone on Mac
  • Debugging iOS build failures by iterating on local working tree without committing to git
  • Pushing web-layer hotfixes directly to devices without App Store review cycles (OTA updates)
  • CocoaPods โ†’ Swift Package Manager migration as a guided conversation instead of a half-day manual process

The part I found most interesting: the agent never touches credentials directly. Signing certs stay encrypted and the agent references them by name. That makes it viable to give an agent build/deploy tasks without opening up your machine or CI with broad permissions.

Has anyone else found patterns for making agents more reliable on the native side? Curious what's working for other Capacitor devs.

reddit.com
u/DayanaJabif โ€” 3 months ago
โ–ฒ 20 r/ionic+1 crossposts

Handling OAuth in Mobile Apps the Correct Way

If youโ€™re building a Capacitor app and need enterprise authentication or SSO, this tutorial is for you.

Learn how to integrate OAuth 2.0 / OpenID Connect using the OAuth plugin.

Using auth0 for the demo, but the flow is very similar for other providers.

I also published a demo app so you can explore the integration code directly: https://github.com/capawesome-team/capacitor-oauth-demo

Let me know your feedback and if you have any questions ๐Ÿ™Œ๐Ÿฝ

youtube.com
u/DayanaJabif โ€” 3 months ago
โ–ฒ 15 r/ionic+2 crossposts

Hey everyone ๐Ÿ‘‹

As you may know, I work as a DevRel at Capawesome, and a big part of my job is building demo apps to help developers understand how to use Capacitor plugins to create great mobile experiences.

Since Capacitor is framework-agnostic, every time I start a new demo app I run into the same question:
Should I build it with a framework (Angular/React/Vue/etc.) or keep it vanilla JS?

In my experience, using a framework makes the project easier to structure and follow. At the same time, I worry that choosing a specific framework might discourage people who donโ€™t use it from even checking out the demoโ€”even though the plugin integration itself is framework-agnostic.

So Iโ€™d really love your input:

  • What do you prefer for demo apps?
  • Do you actually use demo apps when evaluating tools?
  • What makes a demo app truly useful for you?

Thanks a lot, I really appreciate any feedback ๐Ÿ™Œ

reddit.com
u/DayanaJabif โ€” 4 months ago