# Clerk Changelog — Page 21

# Redesigned Dashboard Overview
URL: https://clerk.com/changelog/2025-05-28-redesigned-dashboard-overview.md
Date: 2025-05-28
Category: Dashboard
Description: We're launching a fresh new look for the dashboard overview, making it easier to monitor what matters.

We've completely redesigned the Clerk Dashboard's overview page to focus on User Growth. Previously, we only tracked basic data points, but now we provide comprehensive retention and churn metrics that give you deeper insights into your user base.

In the new charts we now show detailed insights like...

- **New Users** - New Users
- **Reactivated Users** - Inactive users who became active again
- **Retained Users** - Existing users who remained active this period
- **Retained churned** - Retained users who became inactive this period
- **Reactivated churned** - Reactivated users that churned this period
- **New users churned** - New users who churned this period

Beyond the enhanced growth charts, we've introduced flexible time-based filtering options. You can now analyze your data across different time periods (Daily, Weekly, Monthly) and customize date ranges to gain deeper insights into your application's performance and user behavior patterns.

Stay tuned for more planned improvements.

---

# Global support for Clerk Billing
URL: https://clerk.com/changelog/2025-05-13-billing-global-support.md
Date: 2025-05-13
Category: Company
Description: We're excited to announce that Clerk Billing now supports international Stripe accounts.

When we launched Billing, the **Connect to Stripe** flow was locked to US-only businesses. Today, we've removed that constraint and Billing is now available in any country that's supported by Stripe ([see global availability](https://stripe.com/global)).

Select your `Business Location` in the **Connect to Stripe** flow. If you find that the Business Location drop-down is still locked, you may need to disconnect the associated Stripe account and set up a fresh connection.

Start building your global business with Clerk Billing today.

---

# Session Token JWT v2
URL: https://clerk.com/changelog/2025-04-14-session-token-jwt-v2.md
Date: 2025-04-14
Category: Product
Description: Announcing the release of Session Token JWT v2, featuring a more compact and structured claim format.

Key changes in v2 include a revamped structure for organization-related claims, now nested under the `o` claim for improved clarity and reduced token size. Additionally, a new `v` claim explicitly identifies the token version.

As of today, April 14, 2025, version 1 of the session token format is deprecated. You can update to version 2 via the [**Updates** page](https://dashboard.clerk.com/last-active?path=updates) in your Clerk Dashboard.

For a detailed breakdown of all claims available in v2 and how they differ from v1, please refer to our [Session Tokens documentation](/docs/backend-requests/resources/session-tokens).

We strongly recommend using one of our SDKs that support API version [`2025-04-10`](/docs/versioning/available-versions#2025-04-10) to handle decoding reliably.

---

# Supabase Third-Party Auth Integration
URL: https://clerk.com/changelog/2025-03-31-supabase-integration.md
Date: 2025-03-31
Category: Integrations
Description: Integrate Clerk with Supabase as a third-party authentication provider.

Clerk is now supported as a [Supabase third-party authentication provider](https://supabase.com/docs/guides/auth/third-party/clerk). This first-class integration allows Supabase to accept Clerk-signed session tokens, removing the need to create a custom JWT template and generate a specific token when interacting with Supabase's APIs.

Now, all you need to do is pass Clerk's session token to Supabase's client:

```ts
import { createClient } from '@supabase/supabase-js'
import { auth } from '@clerk/nextjs/server'

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
  {
    async accessToken() {
      return (await auth()).getToken()
    },
  },
)
```

## Enable the integration

To get started with Clerk and Supabase:

1. Visit the [Clerk dashboard](https://dashboard.clerk.com/setup/supabase) and go through the setup flow
2. Copy your Clerk instance domain into Supabase's [Third-party auth settings](https://supabase.com/dashboard/project/_/auth/third-party)

For more information, visit the [Supabase Integration documentation page](/docs/integrations/databases/supabase). We can't wait to see what you build with Clerk and Supabase!

---

# Reverification
URL: https://clerk.com/changelog/2025-03-31-reverification.md
Date: 2025-03-31
Category: Product
Description: Protect sensitive actions by prompting users to reverify their identity.

Reverification is officially out of beta and is a great way to protect sensitive actions by requiring users to provide a step-up verification.

As part of this release, we've also updated the `<UserProfile />` component to require reverification for actions like password changes and email updates, you can find the complete list on our [documentation](https://clerk.com/docs/guides/reverification#sensitive-actions-that-require-reverification).

## How it works

Our SDK includes straightforward hooks to manage reverification smoothly. Here's how to secure a Next.js server action:

```ts {{ filename: 'app/actions.ts' }}
'use server'

import { auth, reverificationError } from '@clerk/nextjs/server'

export const myAction = async () => {
  const { has } = await auth.protect()

  // Confirm the user's credentials have been recently verified
  const shouldUserRevalidate = !has({ reverification: 'strict' })

  // Prompt reverification if recent verification is missing
  if (shouldUserRevalidate) {
    return reverificationError('strict')
  }

  // Proceed if reverification is successful
  return { success: true }
}
```

```tsx {{ filename: 'app/page.tsx' }}
'use client'

import { useReverification } from '@clerk/nextjs'
import { isReverificationCancelledError } from '@clerk/nextjs/errors'
import { myAction } from '../actions'

export default function Page() {
  const performAction = useReverification(myAction)

  const handleClick = async () => {
    try {
      const myData = await performAction()
      //     ^ this is typed as { success: boolean }
    } catch (error) {
      if (isReverificationCancelledError(error)) {
        // Handle the case where the user cancels reverification
      }

      // Handle any errors that occur during the action
    }
  }

  return <button onClick={handleClick}>Perform action</button>
}
```

### Compatibility

- Support for Reverification is enabled for all new Clerk applications
- For existing applications that want to enable Reverification, you will need to activate the Reverification APIs within the [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=upgrades)
- Native and mobile app support within our SDKs is still actively underway and will be available soon

For all of the details around Reverification, explore our [documentation](/docs/guides/reverification).

---

# Flutter SDK Public Beta
URL: https://clerk.com/changelog/2025-03-26-flutter-sdk-beta.md
Date: 2025-03-26
Category: SDK
Description: 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`](https://pub.dev/packages/clerk_flutter)) and backend ([`clerk_backend_api`](https://pub.dev/packages/clerk_backend_api), [`clerk_auth`](https://pub.dev/packages/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`:

```yaml
dependencies:
  clerk_flutter: ^0.0.8-beta
```

### Flutter Implementation

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

```dart
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:

```dart
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](https://github.com/clerk/clerk-sdk-flutter/issues).

## Acknowledgments

Special thanks to [DevAngels](https://www.devangels.london/) 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.