Skip to main content

Clerk Changelog

iOS and Android SDKs v1

Category
SDK
Published

The Clerk iOS and Android SDKs are now v1, with a clearer, more consistent auth surface across both platforms.

Clerk's iOS and Android SDKs are now at v1, focused on a better developer experience and a simplified API across both platforms. The biggest change is a unified entry point: all auth methods now live under .auth in each SDK, so everything related to authentication is in one place — with simpler, easier-to-use APIs throughout.

If you're upgrading from v0, follow the migration guides: iOS v1 migration guide and Android v1 migration guide.

What's new in iOS

Some highlights:

  • Unified auth entry point: All auth flows live under clerk.auth, so sign-in, sign-up, and sign-out share one consistent surface.

    var signIn = try await Clerk.shared.auth.signInWithEmailCode(
      emailAddress: "newuser@clerk.com"
    )
    struct ContentView: View {
      @Environment(Clerk.self) private var clerk
    
      var body: some View {
        Button("Send code") {
          Task {
            await sendEmailCode()
          }
        }
      }
    
      private func sendEmailCode() async {
        do {
          var signIn = try await clerk.auth.signInWithEmailCode(
            emailAddress: "newuser@clerk.com"
          )
        } catch {
          // Handle error
        }
      }
    }
  • Import only what you need: v1 splits the iOS SDK into ClerkKit (core APIs) and ClerkKitUI (prebuilt views), so you only import what you use.

    import ClerkKit
    import ClerkKitUI
  • Simpler, more flexible configuration: Configure Clerk once at launch with Clerk.configure(...).

    Clerk.configure(publishableKey: "YOUR_PUBLISHABLE_KEY")
  • More modern SwiftUI wiring: Inject Clerk.shared directly into the environment instead of the old custom key, and read it with @Environment(Clerk.self).

    ContentView()
      .environment(Clerk.shared)
    @Environment(Clerk.self) private var clerk

Check out the iOS docs for full details.

What's new in Android

Some highlights:

  • Unified auth entry point: All auth flows live under Clerk.auth, so sign-in, sign-up, and sign-out stay in one place.

    val signIn = Clerk.auth.signInWithOtp {
      email = "newuser@clerk.com"
    }
    @Composable
    fun SignInView() {
      val scope = rememberCoroutineScope()
    
      Button(onClick = {
        scope.launch {
          sendEmailCode()
        }
      }) {
        Text("Send code")
      }
    }
    
    private suspend fun sendEmailCode() {
      Clerk.auth.signInWithOtp { email = "newuser@clerk.com" }
        .onSuccess { signIn ->
          // Continue the flow
        }
        .onFailure { error ->
          // Handle error
        }
    }
  • Clearer auth state naming: signIn and signUp state are now currentSignIn and currentSignUp to avoid method-name confusion.

  • Builder pattern for auth methods: Auth flows adopt builders for cleaner call sites and more explicit parameter grouping, including MFA steps.

Check out the Android docs for full details.

Get started

v1 makes it easier to build consistent native experiences across iOS and Android. Follow the platform quickstarts to get set up: iOS quickstart and Android quickstart. If you're upgrading, use the migration guides above to update imports, config, and auth flow calls.

Need help? Reach us on Clerk Discord or explore the source on GitHub: clerk-ios and clerk-android.

Contributors
Mike Pitre
Sam Wolfand

Share this article

New plans, more value

Category
Product
Published

Our first major pricing update since 2023 makes authentication more affordable.

Today, we're excited to share our first major pricing update since November 2023. As our products have evolved over the years, we've heard that our pricing no longer felt quite right. This update reflects the feedback, frustrations, and suggestions we've heard from many of you.

Our goal is simple: make authentication essentials more affordable, while focusing our fees on differentiated features and areas with real operational cost.

Let's dive into some specifics.

The vast majority of customers will pay less, or receive more features for the same price

We're improving affordability across nearly every dimension, so both our smallest and largest customers are set to benefit:

  • 50,000 Monthly Retained Users are now free in every application, up from 10,000
  • Unlimited applications are now included in every plan, eliminating the need to upgrade each application individually
  • The Enhanced Authentication Add-on has been eliminated, and most of its features are now included in our Pro Plan (starting from $20/mo). This includes:
    • Multi-factor authentication
    • Satellite domains
    • Simultaneous sessions
  • 5 impersonations per month are now free, to allow trying the feature before purchasing the Enhanced Administration Add-on
  • Automatic volume discounts will now be applied as usage grows
  • Annual billing is now available for an additional discount

Alongside these changes, we've also reduced the complexity of our plans to ensure you're never surprised by which features are included or omitted.

Some customers will see price increases

We're making three changes that will increase costs for a minority of our customers. Those changes are:

  1. Using four or more Clerk Dashboard seats now requires a Business Plan (starting from $250/mo).

    We love building a dashboard that goes beyond authentication and helps teams operate and scale their business. This change will allow us to continue improving the dashboard for more teammates in more roles.

  2. Enterprise Connections (SAML and OIDC) are now metered within the Pro Plan, instead of unlimited under the former Enhanced Authentication Add-on.

    Under the new pricing, applications with three or more Enterprise Connections will see increased costs. These costs will support continued investment in Enterprise Connections, including our upcoming support for SCIM and self-serve configuration.

  3. Access to SOC 2 and HIPAA artifacts now requires a Business Plan.

    We gate access to audit artifacts because they involve ongoing third-party audits and real operational overhead. Importantly, the underlying security controls are the same for all customers, regardless of plan.

Rollout

Our new plans are available starting today, and the full details are available on our pricing page. We encourage customers to switch as soon as possible.

If paid customers do not select a new plan before their billing period beginning in April, Clerk will automatically migrate them to a new plan. We hope to avoid automatic migrations, though, and will be sending multiple reminders before they occur.

If you have any questions or concerns, or if your business requires a custom plan, please don't hesitate to contact us.

Thank you

We love making our pricing even more competitive, and it's only possible because tens of thousands of customers like you have entrusted Clerk as their authentication provider.

We look forward to the years ahead as we'll continue to innovate not just on authentication, but all of customer management.

Contributors
Konstantinos Pittas
Haris Chaniotakis
Vaggelis Yfantis
Stefanos Anagnostou
Jacob Foshee
Austin Calvelage
Alex Carpenter
Nate Watkin
Daniel Sun
Colin Sidoti
Braden Sidoti

Share this article

User activity report

Category
Dashboard
Published

Visualize any user's activity in your app with the new user activity report.

See how many days a user logs in to your app over the course of a year to get an at-a-glance visualization of their activity within your product.

  • Spot engagement patterns - See which users are active daily versus those who haven't returned in weeks.
  • Navigate by year - Use the year selector to view activity from any year since the user was created.
  • Hover for details - Tooltips on each day show the exact date and whether the user was active.

To view the activity graph, open any user's profile page from the Users list in your Clerk Dashboard.

Keep an eye out for continued improvements and higher data fidelity in this report.

Contributors
Jeremy Morton
Nate Watkin
Max Barvian

Share this article

Clerk Skills for AI Agents

Category
Product
Published

Enhance your AI coding agent with specialized Clerk authentication knowledge using installable skills.

We're launching Clerk Skills, installable packages built on the Agent Skills specification that give AI coding agents specialized knowledge about Clerk authentication. Once installed, your agent can help you add auth to any framework, build custom sign-in flows, sync users to your database, and more.

Install all skills with a single command:

npx skills add clerk/skills

Once installed, you can ask your AI assistant questions like:

  • "Add Clerk auth to my Next.js app"
  • "Build a custom sign-in form with email and password"
  • "Set up organizations for my B2B SaaS"
  • "Add Playwright tests for authentication"
  • "Sync Clerk users to my Prisma database"

Skills work with most agents including Claude Code, Cursor, Windsurf, GitHub Copilot, Codex, and Gemini CLI.

To see all available skills and installation options, head to the Skills documentation.

Contributor
Railly Hugo

Share this article

Custom plans and prices

Category
Billing
Published

Assigning custom plans and prices in Clerk Billing

You can now transition active subscriptions between different billing plans right from the dashboard or backend API. Switch a customer's subscription from one price to another while keeping their billing smooth — whether you're upgrading them from free to paid or moving between paid tiers.

What's new

This subscription item management feature lets you easily change a customer's active subscription item to a new pricing plan. It makes essential Billing workflows simple:

  • Promotional offers - Apply special pricing to existing subscribers
  • Tiered upgrades and downgrades - Move customers between different paid plans based on their needs or usage
  • Plan migrations - Transition customers to new pricing structures as your product evolves

When you create a price transition, we handle all the timing and billing logic for you:

Free-to-paid transitions depend on the customer's current subscription state:

  • New to paid: When transitioning a customer from free to a paid plan with no other active subscription, the paid plan activates immediately and the customer is charged right away

    • Example: Moving a customer on the free plan to Pro ($50/month). Pro activates immediately, customer charged $50.
  • Free to paid with active subscription: When transitioning from free to paid but the customer has another active subscription, the paid plan is scheduled as upcoming to avoid billing conflicts

    • Example: Customer on free plan with an active Pro subscription through March 20. Switching the free plan to Enterprise sets Enterprise as upcoming until March 20.

Paid-to-paid transitions schedule the new plan to avoid billing overlap:

  • Switching between paid plans: When a customer already has an active paid subscription, the new plan is scheduled to start when their current billing period ends
    • Example: Upgrading a customer from Basic ($20/month, paid through Feb 15) to Enterprise ($35/month) on Jan 15
    • Basic remains active through Feb 15 (already paid for)
    • Enterprise becomes upcoming and activates Feb 15 (customer charged then)
    • Prevents double-billing the customer for overlapping periods

Paid-to-free transitions schedule the free plan as upcoming, allowing the customer's current paid subscription to run through its paid period before automatically activating the free plan.

Getting started

To change the price or plan of your subscriptions:

  1. Navigate to Subscriptions in the Clerk dashboard
  2. Choose the subscription item you want to update
  3. Click the three dots menu
  4. Update the price or plan as needed
Custom plans and prices

Create custom prices

If you can't find a price that satisfies your needs from the existing options, you can create a new price by clicking "Create new price" and use it right away for your subscription transitions.

We're currently working on a feature that will allow you to assign paid plans to customers without billing them. This capability will be valuable for several scenarios:

  • Gifting subscriptions - Give users complimentary access to premium features
  • Internal team access - Let your team use paid features in production without extra billing
  • Migration help - Support customers who've already paid on other platforms
Contributor
Clerk

Share this article

Reduce friction for new users with automatic first organization creation and intelligent name suggestions based on email domain or member details.

You can now automatically create a user's first organization with intelligent name suggestions. Clerk will detect the organization name from the user's email domain (e.g., alex@clerk.com → "Clerk") or personalize it based on member details, eliminating the manual setup step for first-time users.

This feature works best for applications with required organization membership where the creation step adds unnecessary friction.

What's new

Create first organization automatically removes friction during onboarding by automatically creating a user's first organization. When enabled, users are added to their first organization without seeing the creation flow.

Default naming rules intelligently suggest the first organization's name using:

  • Email domain detection - Automatically populates the organization name, slug, and logo from the user's email domain (e.g., alex@stripe.com → "Stripe" with logo)
  • Member personalization - Creates personalized names using variables like user.first_name, user.last_name, user.full_name, or user.username (e.g., {{user.first_name}}'s organization → "Alex's organization")
  • Fallback name - Provides a default when other rules don't apply

Default naming rules are required to enable automatic organization creation. You can disable individual rules to skip them in the detection order.

Getting started

Visit the Organizations configuration documentation to learn how to enable automatic organization creation and configure default naming rules.

Configure these settings in the Clerk Dashboard under Organizations Settings.

Contributors
Gabriel Melo
Iago Dahlem
Laura Beatris
Nicolas Lopes
Jim Kalafut
Tu Nguyen

Share this article