Skip to content

chore: upgrade Capacitor 7 to 8 (and Firebase 11 to 12)#54

Merged
wizzomafizzo merged 1 commit into
mainfrom
chore/capacitor-8-upgrade
Apr 7, 2026
Merged

chore: upgrade Capacitor 7 to 8 (and Firebase 11 to 12)#54
wizzomafizzo merged 1 commit into
mainfrom
chore/capacitor-8-upgrade

Conversation

@wizzomafizzo

Copy link
Copy Markdown
Member

Summary

Coordinated upgrade of Capacitor 7 → 8 following the official migration guide. Firebase 11 → 12 rides along because @capacitor-firebase/authentication@8.x requires firebase ^12.6.0.

Plugins

  • All @capacitor/* core + plugins → 8.x
  • @capacitor-firebase/authentication → 8.2.0 (firebase → 12.11.0)
  • @capacitor-mlkit/barcode-scanning → 8.0.1
  • @capawesome-team/capacitor-nfc → 8.1.0
  • @capawesome/capacitor-live-update → 8.2.1
  • @capacitor-community/keep-awake → 8.0.0
  • @capgo/capacitor-shake → 8.0.24
  • @revenuecat/purchases-capacitor → 12.3.1
  • capacitor-plugin-safe-area → 5.0.0
  • capacitor-zeroconf left at 4.0.0 (no v8 release; permissive peer dep)

Android

minSdk 23→24, compile/targetSdk 35→36, AGP 8.7.2→8.13.0, Gradle 8.11.1→8.14.3, google-services 4.4.2→4.4.4, all androidx versions bumped per the upgrade guide, density added to configChanges, name = value Gradle property syntax fix in app/build.gradle.

iOS

Project deployment target 14.0 → 15.0 (Capacitor 8 minimum). App target deployment kept at 15.5. Fixed pre-existing stale pnpm path in Podfile for CapacitorFirebaseAuthentication/Google left over from the npm migration.

Source code

Tightened !barcode guards to !barcode?.rawValue in useScanOperations.tsx and create.mappings.tsx@capacitor-mlkit/barcode-scanning v8 made Barcode.rawValue optional. New tests cover both branches.

Cleanup picked up along the way

  • Removed dead <uses-sdk minSdkVersion="10"> from AndroidManifest.xml (overridden by build.gradle since AGP 7).
  • Removed androidxCameraCoreVersion override that was causing camera library version skew with the v8 plugin defaults.
  • Added missing androidxCredentialsPlayServicesAuthVersion sibling override to align with androidxCredentialsVersion.
  • Narrowed eslint .claude ignore to .claude/worktrees/**.

Supersedes

Dependabot PRs #48, #49, #51, #52 — they will auto-resolve once this lands on main.

Release

Cannot ship as a Capawesome live update — the native bridge changed. Requires a store release with version bumps in package.json, android/app/build.gradle, and ios/App/App.xcodeproj/project.pbxproj.

Coordinated upgrade following the official Capacitor 8 migration guide.
Firebase rides along because @capacitor-firebase/authentication 8.x
requires firebase ^12.6.0 as a peer dependency.

- @capacitor/core, ios, android, cli → 8.3.0
- All @capacitor/* plugins → 8.x
- @capacitor-firebase/authentication → 8.2.0 (firebase 11 → 12.11.0)
- @capacitor-mlkit/barcode-scanning → 8.0.1
- @capawesome-team/capacitor-nfc → 8.1.0
- @capawesome/capacitor-live-update → 8.2.1
- @capacitor-community/keep-awake → 8.0.0
- @capgo/capacitor-shake → 8.0.24
- @revenuecat/purchases-capacitor → 12.3.1
- capacitor-plugin-safe-area → 5.0.0
- capacitor-zeroconf left at 4.0.0 (no v8 release; permissive peer dep)

Android: minSdk 23 → 24, compile/target 35 → 36, AGP 8.7.2 → 8.13.0,
Gradle 8.11.1 → 8.14.3, google-services 4.4.2 → 4.4.4, all androidx
versions bumped per the upgrade guide, density added to configChanges,
Gradle property name = value syntax fix in app/build.gradle.

iOS: project deployment target 14.0 → 15.0 (Capacitor 8 minimum). App
target deployment kept at 15.5. Fixed pre-existing stale pnpm path in
Podfile for CapacitorFirebaseAuthentication/Google.

Source: tightened !barcode guards to !barcode?.rawValue in
useScanOperations.tsx and create.mappings.tsx — barcode-scanner v8 made
Barcode.rawValue optional. New tests cover both branches.

Cleanup: removed dead <uses-sdk minSdkVersion="10"> from
AndroidManifest.xml (overridden by build.gradle since AGP 7), removed
androidxCameraCoreVersion override that was causing camera library
version skew with the v8 plugin defaults, added the missing
androidxCredentialsPlayServicesAuthVersion sibling override to align
with androidxCredentialsVersion, narrowed eslint .claude ignore to
.claude/worktrees/**.

Supersedes Dependabot PRs #48 #49 #51 #52, which will auto-resolve
once this lands on main.
@codecov

codecov Bot commented Apr 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@wizzomafizzo
wizzomafizzo merged commit f8476b2 into main Apr 7, 2026
2 checks passed
@wizzomafizzo
wizzomafizzo deleted the chore/capacitor-8-upgrade branch April 7, 2026 13:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant