Skip to content

feat(firebase): tvOS support for Core, Auth, Firestore, Storage, Messaging#3

Open
MAUstaoglu wants to merge 1 commit into
mainfrom
feat/firebase-tvos-plugins
Open

feat(firebase): tvOS support for Core, Auth, Firestore, Storage, Messaging#3
MAUstaoglu wants to merge 1 commit into
mainfrom
feat/firebase-tvos-plugins

Conversation

@MAUstaoglu

Copy link
Copy Markdown
Member

Summary

Adds federated *_tvos implementations bringing Firebase to Apple TV via the
flutter-tvos toolchain, built on the Firebase Apple SDK (which has supported
tvOS since 8.9.0). This closes the gap where the FlutterFire packages declare
ios/macos but not tvos, even though the underlying native SDK runs on tvOS.

Package tvOS support
firebase_core_tvos Full
cloud_firestore_tvos Full
firebase_storage_tvos Full
firebase_auth_tvos Anonymous, email/password, email-link, Sign in with Apple, custom-token. MFA, phone, browser-OAuth providers and reCAPTCHA are absent from the Firebase tvOS SDK and return unsupported-platform.
firebase_messaging_tvos FCM token, topic subscription, permission request. Rich-notification payload (onMessage) and tapped-notification/interaction APIs are unavailable on tvOS.

Each package re-exports the upstream Dart API and ships the native tvOS
pluginClass; the four leaf packages depend on firebase_core_tvos.

Runtime verification

Verified against a live Firebase project on both the tvOS simulator (JIT) and
a physical Apple TV (tvOS 26.5, AOT/profile):

  • firebase_coreinitializeApp succeeds
  • firebase_auth — anonymous sign-in returns a real user
  • cloud_firestore — document write + read-back round-trip
  • firebase_storage — executes; returns a normal Storage error when no bucket is provisioned
  • firebase_messaging — executes; returns apns-token-not-set (APNs needs a push-enabled profile)

Platform.operatingSystem == "tvos" and Platform.isIOS == true confirmed under AOT.

Two issues that only surfaced at runtime were fixed:

  • firebase_auth_tvos aborted at plugin registration because the generated Pigeon
    setup asserts every multi-factor selector exists; the tvOS-disabled methods are
    now kept as unsupported-platform stubs rather than removed.
  • firebase_auth_tvos + firebase_messaging_tvos in the same app failed to compile
    (-[FIRAuth canHandleNotification:], unavailable on tvOS); now guarded.

Notes

Each package includes a PORTING_REPORT.md documenting exactly which native APIs
were adapted or disabled and why. These are 0.0.1 initial releases; the intended
publish order is firebase_core_tvos first, then the four leaf packages.

@MAUstaoglu MAUstaoglu requested a review from DenisovAV July 1, 2026 12:45
@MAUstaoglu MAUstaoglu force-pushed the feat/firebase-tvos-plugins branch from 8d99c59 to efe227b Compare July 1, 2026 12:47
…torage, Messaging

Federated `*_tvos` packages bringing Firebase to Apple TV via the flutter-tvos
toolchain, built on the Firebase Apple SDK (tvOS supported since 8.9.0):

- firebase_core_tvos      — full support
- cloud_firestore_tvos    — full support
- firebase_storage_tvos   — full support
- firebase_auth_tvos      — anonymous, email/password, email-link, Sign in with
                            Apple, custom-token. MFA / phone / browser-OAuth /
                            reCAPTCHA return `unsupported-platform` (absent from
                            the Firebase tvOS SDK).
- firebase_messaging_tvos — token / topic / permission. Rich-notification payload
                            and interaction APIs are unavailable on tvOS.

Each package re-exports the upstream Dart API and supplies the native tvOS
pluginClass; the four leaf packages depend on firebase_core_tvos. Runtime-verified
on the tvOS simulator and a physical Apple TV in AOT mode: core/auth/firestore
perform live round-trips, storage/messaging execute and surface the expected
backend/APNs errors. See each package's PORTING_REPORT.md for the native changes
and tvOS support matrix.
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