Skip to main content

Clerk Changelog

Clerk as an OpenID Connect provider

Category
Product
Published

Use your Clerk instance as an OpenID Connect provider (OIDC).

Clerk now offers OpenID Connect (OIDC) support for your Clerk instance, making the authentication across third-party services even easier. This update provides greater flexibility, enhanced security, and more control over authentication flows.

What's New?

  • OpenID Connect (OIDC) support – Authenticate with external services using industry-standard protocols and ID Tokens.
  • OAuth application management in the Clerk Dashboard – Configure and manage your settings directly from one central place.
  • Support for multiple redirect URIs - Seamlessly handle different environments (development, production) without extra work.
  • Token introspection endpoint - Validate and inspect Access and Refresh tokens securely, ensuring better control over access management.
  • Improved authentication control – Support for none and login prompts, giving you finer control over user authentication.

Upgrade from the legacy OAuth 2.0 provider

For any Clerk application which already using the legacy OAuth 2.0 provider, migrating to take advantage of the new OpenID Connect (OIDC) compatible provider is a self-service process. Simply migrate directly from the Clerk Dashboard to utilize the new and improved functionality.

Try it today

Get started today by creating your first OAuth application, visiting the Clerk Dashboard.

To learn more visit our documentation page.

Contributors
Haris Chaniotakis
Konstantinos Pittas
Vaggelis Yfantis
Alexandros Ntitoras

Passkeys support for Expo

Category
SDK
Published

Enable seamless, passwordless authentication in your Expo apps with Passkeys.

We're excited to announce native Passkeys support for Clerk's Expo SDK.

Implementation

Adding Passkeys support to your Expo app is straightforward using the user.createPasskey() method from useUser() hook and the signIn.authenticateWithPasskey() method from useSignIn() hook.

Create a Passkey

const CreatePasskeyPage = () => {
  const { user } = useUser()

  const handlePasskeySignIn = async () => {
    if (!user) return
    try {
      return await user.createPasskey()
    } catch (e: any) {
      // Handle errors
    }
  }
}

Sign in with Passkey

const SignInWithPasskeyPage = () => {
  const { signIn } = useSignIn()

  const handlePasskeySignIn = async () => {
    try {
      const signInAttempt = await signIn?.authenticateWithPasskey({
        flow: 'discoverable',
      })

      if (signInAttempt?.status === 'complete') {
        await setActive({ session: signInAttempt.createdSessionId })
        router.push('/')
      } else {
        // Handle errors
      }
    } catch (err) {
      // Handle errors
    }
  }
}

Getting Started

To implement Passkeys in your Expo application:

  1. Enable Passkeys in your Clerk Dashboard
  2. Follow our Passkeys integration guide for detailed setup instructions

Platform Support

  • iOS 16.0 or later
  • Android 9+ or later

Visit our documentation to learn more about implementing Passkeys in your Expo application.

Contributors
Alexandros Ntitoras
Nikos Polykandriotis
Nikos Papageorgiou

SAML Native Flows

Category
SSO
Published

Introducing SAML Native Flows for Expo and iOS SDKs, enabling secure enterprise authentication directly within your mobile apps

We're excited to announce support for SAML on both Expo and iOS SDKs.

Visit our documentation for step-by-step integration guides with @clerk/expo or iOS

Contributors
Mike Pitre
Nicolas Lopes
Laura Beatris

Ruby Backend SDK 4.0

Category
SDK
Published

With expanded support for Rails, Rails API, Sinatra, Rack and more

We're excited to announce the release of the Clerk Ruby Backend SDK 4.0! Below is a quick preview of the major changes that we've made.

First-Class Framework Support

In the past, outside of the standard Rails configuration, you had to create your own adapters and helpers to work with Clerk. With this release, we've added or expanded on first-class support for Rails, Rails API, Sinatra, and Rack so that everything works out of the box for the most popular frameworks and configurations.

Here's a quick preview of what 4.0 offers:

Standalone SDK Usage
Clerk.configure do |config|
  config.secret_key = 'sk_live_*****'
end

sdk = Clerk::SDK.new
sdk.users.get_user('*****')
Ruby on Rails
class AdminController < ApplicationController
  include Clerk::Authenticatable

  def index
    @user = clerk.user
  end
end
Sinatra
# Sinatra
class App < Sinatra::Base
  register Sinatra::Clerk

  get "/admin" do
    @user = clerk.user
    erb :index, format: :html5
  end
end

OpenAPI

We've also brought the SDK into full alignment with our Backend API thanks to now generating parts of the SDK from our OpenAPI spec.

You can view the full generated documentation on GitHub.

Upgrading

Upgrade your gem by installing version ~> 4.0.0:

Gemfile
gem 'clerk-skd-ruby', '~> 4.0.0', require: 'clerk'

Breaking Changes

Please note that this release contains a number of breaking changes. Please refer to the upgrade guide for more information.

Contributor
Tom Milewski

Easily find organization members on <OrganizationProfile /> by searching for any information related to them.

Our <OrganizationProfile /> component now supports searching across various member details such as email addresses, phone numbers, web3 wallets, usernames, user IDs, and first or last names. The search supports partial matches, making it easier than ever to locate the member you need.

Check it out now on your <OrganizationProfile /> component!

Contributors
Nicolas Lopes
Laura Beatris

Stable release of React Router SDK

Category
SDK
Published

The React Router SDK is no longer in beta.

Back in December we announced the Beta release of our React Router SDK, a new official SDK that allows developers to add authentication and authorization into their React Router application in a matter of minutes.

After fixing some bugs and receiving positive feedback on the SDK we're transitioning the React Router SDK from beta to stable. The best part? You can just upgrade! There are no changes between the beta and stable release.

Upgrade your package by installing version ^1.0.0:

npm install @clerk/react-router@latest
Contributor
Lennart Jörgens