Firebase UI Auth

pub package

Firebase UI Auth widgets for Flutter, ported to Forui. Drop in sign-in, registration, profile, and related auth screens.

Requires Dart ^3.13.0, Flutter 3.47+, and an FTheme ancestor.

Migrating from firebase_ui_auth

See Migrating from upstream Firebase UI in the repository README (firebase_ui_* → forui_firebase_ui_*).

Platform support

Auth UI support follows FlutterFire Authentication (macOS beta; Windows development-only). Linux is not supported by FlutterFire.

Feature/platform Android iOS Web macOS Windows
Email ✓ ✓ ✓ ✓ ✓ (1)
Phone ✓ ✓ ✓ ╳ ╳
Email link ✓ ✓ ╳ ╳ ╳
Email verification ✓ ✓ ✓ (2) ✓ (2) ✓ (1)
Sign in with Apple ✓ ✓ ✓ ✓ ╳
Google Sign in ✓ ✓ ✓ ✓ ✓ (1)
Twitter Login ✓ ✓ ✓ ✓ ✓ (1)
Facebook Sign in ✓ ✓ ✓ ✓ ✓ (1)
  1. Windows via FlutterFire is development-only; production is not supported
  2. No deep-linking into app, so email verification link opens a web page

Installation

flutter pub add forui_firebase_ui_auth forui

Example

import 'package:flutter/material.dart';
import 'package:forui/forui.dart';
import 'package:firebase_auth/firebase_auth.dart' hide EmailAuthProvider;
import 'package:forui_firebase_ui_auth/forui_firebase_ui_auth.dart';

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    final providers = [EmailAuthProvider()];

    return MaterialApp(
      builder: (context, child) => FTheme(
        data: FTheme.neutral.light.touch,
        child: child!,
      ),
      initialRoute:
          FirebaseAuth.instance.currentUser == null ? '/sign-in' : '/profile',
      routes: {
        '/sign-in': (context) {
          return SignInScreen(
            providers: providers,
            actions: [
              AuthStateChangeAction<UserCreated>((context, state) {
                Navigator.pushReplacementNamed(context, '/profile');
              }),
              AuthStateChangeAction<SignedIn>((context, state) {
                Navigator.pushReplacementNamed(context, '/profile');
              }),
            ],
          );
        },
        '/profile': (context) {
          return ProfileScreen(
            providers: providers,
            actions: [
              SignedOutAction((context) {
                Navigator.pushReplacementNamed(context, '/sign-in');
              }),
            ],
          );
        },
      },
    );
  }
}

Profile screen icons

If you're using ProfileScreen, add:

fonts:
  - family: SocialIcons
    fonts:
      - asset: packages/forui_firebase_ui_auth/fonts/SocialIcons.ttf

OAuth

This package owns OAuthProvider, OAuth button widgets, and styles. Concrete providers come from forui_firebase_ui_oauth_* (they depend on forui_firebase_ui_oauth, which depends on this package — not the reverse). See OAuth package layout.

Docs