Skip to main content

Clerk Changelog

@clerk/expo now supports a JSON-based theme for native iOS and Android components — colors, dark mode, border radius, and font family.

You can now customize the look and feel of @clerk/expo's native components (<AuthView />, <UserButton />, <UserProfileView />) on both iOS and Android by pointing the @clerk/expo config plugin at a JSON theme file.

app.json
{
  "expo": {
    "plugins": [["@clerk/expo", { "theme": "./clerk-theme.json" }]]
  }
}
clerk-theme.json
{
  "colors": {
    "primary": "#6C47FF",
    "background": "#FFFFFF",
    "foreground": "#0F172A",
    "border": "#E2E8F0"
  },
  "darkColors": {
    "primary": "#8B6FFF",
    "background": "#0B0B0F",
    "foreground": "#FFFFFF"
  },
  "design": {
    "borderRadius": 12,
    "fontFamily": "Inter"
  }
}

The schema supports:

  • colors — 15 semantic tokens (primary, background, input, danger, success, warning, foreground, mutedForeground, primaryForeground, inputForeground, neutral, border, ring, muted, shadow) as 6- or 8-digit hex strings.
  • darkColors — same shape as colors, applied automatically when the device is in dark mode. Set "userInterfaceStyle": "automatic" in your app.json to let the system switch modes, or pin to "light" / "dark" to always use one palette.
  • design.borderRadius — number, applied across components on both platforms.
  • design.fontFamily — string, iOS only. The font must be bundled with your iOS app.

The JSON is validated at prebuild — invalid hex colors or value types fail the build with a clear error. iOS embeds the parsed theme in Info.plist; Android copies it to android/app/src/main/assets/clerk_theme.json. Both are picked up by the native SDKs automatically.

See the theming reference for the full schema and examples.

Contributor
Chris Canin

Share this article

Infinite scrolling in Overview tables

Category
Dashboard
Published

Browse more Overview data with infinite scrolling across user cohorts, organization cohorts, and waitlist tables.

The Overview page now includes infinite scrolling across all supported table variants, so you can keep exploring data without stopping to change pages.

This applies to the Users and Organizations views, along with the Waitlist mode overview, making it easier to browse large datasets in one continuous flow.

Open the Clerk Dashboard and scroll through the Overview tables to see the new experience.

Contributor
Rafael Camargo

Share this article

Filter test users in Overview analytics

Category
Dashboard
Published

Filter out test users from the Clerk Dashboard Overview

The Overview page now includes a Filter test users setting for the Users view. User analytics previously showed combined regular and test user data. Now, when the toggle is enabled, test users are excluded from all Overview charts and metrics.

Test users are defined as having:

  • +clerk_test in the email identifier
  • +15555550100 as the phone

Open the Clerk Dashboard and use the Overview settings menu in the users view to try it.

Contributor
Chase Austin

Share this article

Annual-only plans for Clerk Billing

Category
Billing
Published

Create plans that require an annual subscription

Clerk Billing now has support for annual-only subscriptions. Previously, all plans renewed monthly with an option to subscribe on an annual basis. Now, you can configure plans to support annual-only billing.

To enable support for annual-only plans, visit your applications Updates page to opt-in to annual-only plans.

Important

Opting into annual-only plans will result in the fee property of plans potentially being null. Please ensure any logic your application has that interacts with the fee property is updated to account for null values.

To configure a plan for annual-only billing, enable only the "Annual base fee" option in the plan settings.

Screenshot of the Pricing details section of the plan creation screen, showing the annual base fee toggle in the on position
Contributor
Clerk

Share this article

Preview Custom Session Claims

Category
Dashboard
Published

See a preview of custom session claims before applying

When customizing session tokens, you can now preview the resulting claims before saving your changes.

Select a user to generate claims based on the current template. This lets you verify that custom claims, template expressions, and organization data produce exactly the claims you expect.

Previously, saving a template then inspecting a real session token was required to check the template is correct. Preview lets you ensure expected behavior before impacting real users.

Preview of custom session claims
Contributors
Graham Allan
Nate Watkin

Share this article

Restrict your end users from modifying their email address, phone number, or username after sign up.

You can now prevent end users from adding new or modifying existing email addresses, phone numbers, or usernames after they have signed up through the new Restrict changes toggle in the Clerk Dashboard. Navigate to the User & authentication page to enable.

Clerk Dashboard restrict changes in email address after sign up

Enabling this feature gives you the ability to have maximal control over the exact identifiers your end users can use to sign in to your application. If you'd like to control which identifiers are allowed at sign-up rather than locking them afterwards, see restrictions for allowlists, blocklists, and disposable email blocking.

With this setting enabled, your end users will still be able to view their identifiers in their User Profile, but will not be able to add, remove, or modify the respective identifier. For email addresses, this restriction extends to social connections: End users are prohibited from connecting an OAuth account that would otherwise add a new email address to their account.

Of course, you still have the ability to modify their end users' identifiers at any time on the Users page of the Clerk Dashboard or using our Backend API.

If you would like to have support for restricting end users from changing other attributes than email address, phone number, or username, please reach out to us to share this feedback.

Contributor
Daniel Moerner

Share this article