Skip to main content

Flutter SDK Public Beta

Category
SDK
Published

We're excited to announce the beta release of our official Flutter SDK, bringing Clerk's powerful authentication and user management capabilities to Flutter applications.

This release includes both frontend (clerk_flutter) and backend (clerk_backend_api, clerk_auth) packages, enabling developers to build secure, cross-platform applications with ease.

Key Features

  • Complete Authentication Flow: Sign up, sign in, and manage user profiles directly from your Flutter code
  • Organization Support: Full implementation of Clerk's organization features for managing multi-tenant applications
  • Cross-Platform Compatibility: Works seamlessly across iOS, Android, and web platforms
  • Type-Safe API: Built with Dart's strong typing system for better development experience
  • Secure Backend Integration: Separate backend package for secure server-side operations

Getting Started

Add the package to your pubspec.yaml:

dependencies:
  clerk_flutter: ^0.0.8-beta

Flutter Implementation

Here's an example for how to initialize Clerk in your Flutter app:

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key, required this.publishableKey});

  final String publishableKey;

  @override
  Widget build(BuildContext context) {
    return ClerkAuth(
      config: ClerkAuthConfig(publishableKey: publishableKey),
      child: MaterialApp(
        theme: ThemeData.light(),
        debugShowCheckedModeBanner: false,
        home: Scaffold(
          body: SafeArea(
            child: ClerkErrorListener(
              child: ClerkAuthBuilder(
                signedInBuilder: (context, authState) {
                  return const ClerkUserButton();
                },
                signedOutBuilder: (context, authState) {
                  return const ClerkAuthentication();
                },
              ),
            ),
          ),
        ),
      ),
    );
  }
}

Server-side Usage

The clerk_auth package also allows interaction with Clerk via dart on the server side, if necessary:

import 'dart:io';

import 'package:clerk_auth/clerk_auth.dart';

Future<void> main() async {
  final auth = Auth(
    config: const AuthConfig(
      publishableKey: '<YOUR-PUBLISHABLE-KEY>',
    ),
    persistor: await DefaultPersistor.create(
      storageDirectory: Directory.current,
    ),
  );

  await auth.initialize();

  await auth.attemptSignIn(
    strategy: Strategy.password,
    identifier: '<USER-EMAIL>',
    password: '<PASSWORD>',
  );

  print('Signed in as ${auth.user}');

  await auth.signOut();

  auth.terminate();
}

Requirements

  • Flutter >= 3.10.0
  • Dart >= 3.0.0

Beta Status

This SDK is currently in beta. While we're confident in its functionality, we recommend:

  • Hard pinning to the patch version in your pubspec.yaml
  • Exercising caution before deploying to production
  • Testing thoroughly in your development environment

Feedback

We welcome your feedback during this beta period. Please share your thoughts, report issues, or suggest improvements on our GitHub repository.

Acknowledgments

Special thanks to DevAngels for their exceptional work in developing this SDK. Their expertise in Flutter development has been instrumental in bringing Clerk's authentication capabilities to the Flutter ecosystem.