# Require a minimum ClerkJS version

> This protection is included on every plan, and it's off by default.

The [protections that block or challenge](https://clerk.com/docs/guides/protect/protections/overview.md#protections-that-block-or-challenge) need a recent version of ClerkJS. On an older version, a sign-up that one of them challenges can stop without an error. Attempts from an older version come from an app that hasn't upgraded, or from a script built on an old copy of ClerkJS. **Require a minimum ClerkJS version** blocks sign-ups and sign-ins from versions older than the minimum you set, with a message that tells the developer to upgrade.

## What it blocks

A sign-up or sign-in is blocked when it comes from a ClerkJS version older than the **Minimum ClerkJS version** setting. A sign-up or sign-in that carries a valid [Testing Token](https://clerk.com/docs/guides/development/testing/overview.md#testing-tokens) isn't checked.

Sign-ups and sign-ins from native apps built with Clerk's iOS, Android, and Expo SDKs aren't affected.

## What happens when an attempt is blocked

The sign-up or sign-in doesn't go through, and the user sees a message that the app uses an outdated version of Clerk. The message is written for the app's developer, in case the app itself is what's outdated. In English, the title and message are:

| Attempt | Title                             | Message                                                                                                                                                     |
| ------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sign-up | We couldn't complete your sign-up | This app uses an outdated version of Clerk, so signing up isn't available right now. If you're the developer, upgrade your Clerk SDK to the latest version. |
| Sign-in | We couldn't sign you in           | This app uses an outdated version of Clerk, so signing in isn't available right now. If you're the developer, upgrade your Clerk SDK to the latest version. |

Prebuilt components on current SDK versions show the title and message on a full screen, with a link to Clerk's [upgrade guides](https://clerk.com/docs/guides/development/upgrading/overview.md) and a reference code. Older SDKs, including ClerkJS 5, show a shorter error instead. See [What blocked users see](https://clerk.com/docs/guides/protect/protections/overview.md#what-blocked-users-see).

Each blocked attempt appears as a `protect.sign_up.blocked` or `protect.sign_in.blocked` event in [Application Logs](https://clerk.com/docs/guides/dashboard/logs/application-logs.md#protect-events).

## Settings

| Setting                     | Default | Description                                                                                           |
| --------------------------- | ------- | ----------------------------------------------------------------------------------------------------- |
| **Minimum ClerkJS version** | 6.42.3  | The oldest ClerkJS version that can sign up or sign in. Write it as a full version, such as `6.42.3`. |

## Choose a minimum

Set the minimum no higher than the version your deployed app runs. Above that, this protection blocks your own users. A new ClerkJS release doesn't reach your app right away, so check before you raise the minimum. To check your app's version, open your browser's console and run `window.Clerk.version`.

## How it works with other protections

With the default minimum, this protection blocks every ClerkJS version too old for the other protections that block or challenge. See the [requirements](https://clerk.com/docs/guides/protect/getting-started.md#requirements).

It doesn't look at who's behind an attempt, so use it alongside the protections that target bots and fake accounts, such as [Challenge suspicious sign-ups](https://clerk.com/docs/guides/protect/bot-protection.md) and [Require Device Intelligence checks](https://clerk.com/docs/guides/protect/protections/require-device-intelligence.md).

## Before you enable it

- **Upgrade your app first.** Apps on a Core 2 SDK run ClerkJS 5, which is older than the default minimum, so follow the [Core 3 upgrade guide](https://clerk.com/docs/guides/development/upgrading/upgrade-guides/core-3.md). If you bundle or host `@clerk/clerk-js` yourself, update it.
- **Test it in development first.** Enable it in your [development instance](https://clerk.com/docs/guides/development/managing-environments.md#development-instance), then sign up and sign in from a browser yourself before you enable it in production. Automated tests that use a [Testing Token](https://clerk.com/docs/guides/development/testing/overview.md#testing-tokens) skip this protection, so they pass when your app runs an outdated version.

---

## Sitemap

[Overview of all docs pages](https://clerk.com/docs/llms.txt)
