# Clerk Changelog — Page 25

# EASIE Support and no more SSO fees
URL: https://clerk.com/changelog/2024-11-20-easie.md
Date: 2024-11-20
Category: SSO
Description: This easiest way for enterprises to adopt full-featured SSO.

## EASIE Enterprise Connections

We've added a new Enterprise Connection type: [EASIE SSO](https://easie.dev). EASIE is a new way for applications to provide enterprise-grade SSO through a multi-tenant OpenID provider, created by Clerk.

### No more SSO Fees

Along with the launch of EASIE support, **we’re eliminating usage-based SSO connection fees entirely** (previously $50/mo each) to make enterprise SSO more accessible than ever, including SAML SSO connections. Your current billing cycle will be the last one with these per-connection fees.

[Read the full blog post](/blog/clerk-launches-easio-sso-and-drops-all-sso-fees) to learn more about EASIE and why we're cutting our SSO prices so drastically.

---

# Waitlist mode
URL: https://clerk.com/changelog/2024-11-20-waitlist-sign-up-mode.md
Date: 2024-11-20
Category: Product
Description: Get your product launch off to a smooth start with Waitlist Sign-up mode.

Launching a new product but not ready to open it up to everyone yet? **Waitlist Sign-up mode** is here to help you manage early access seamlessly.

## What's New?

With Waitlist Sign-up mode, you have complete control over onboarding new users:

- Your `<Waitlist />` component collects prospective users’ email addresses.
- These users are added to a **Waitlist queue** in your [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=user-authentication/restrictions).
- You decide which entries get accepted or rejected. Or simply invite new users directly.
- Once your product is ready for the world, just switch your Sign-up mode to **public** and you're live 🚀.

![Waitlist component UI](./component.png)

## Give it a try

- Visit your [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=user-authentication/restrictions).
- Learn more about the [Waitlist Sign-Up Mode](/docs/authentication/configuration/restrictions#waitlist).

---

# Legal consent
URL: https://clerk.com/changelog/2024-11-11-legal-consent.md
Date: 2024-11-11
Category: Product
Description: Customize your Sign Up with a Terms of Service and Privacy Policy checkbox.

Keep your application compliant by requiring legal consent on your application's `<SignUp />` views.

If you are using Clerk’s pre-built component or the Account Portal, simply enable it from the [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=compliance/legal). Your users will be required to accept your legal documents before they are allowed to create an account, and you will have one less compliance issue to worry about.

![SignUp component with legal consent enabled](./ui.png)

## Ready to dive in?

Head to your [Clerk Dashboard](https://dashboard.clerk.com/last-active?path=compliance/legal), or check out [the documentation](/docs/authentication/configuration/legal-compliance) to get started.

![Legal consent configuration screen on Dashboard](./dashboard.png)

---

# Export your users directly from the Dashboard
URL: https://clerk.com/changelog/2024-10-23-export-users.md
Date: 2024-10-23
Category: Dashboard
Description: Export your users whenever you need to. They're yours, after all.

Previously, your user exports weren't as accessible as we would have liked. Customers had to export via our [Backend API](/bapi) or if you needed hashed passwords, you had to rely on our support team to trigger a user export.

Now you can easily generate and download a CSV export of your users, all within the [Clerk Dashboard](https://dashboard.clerk.com/).

### Key Features:

- **Settings Page**: This new feature is added to the dashboard Settings.
- **Export and Download Logs**: The Settings page also includes a table displaying logs for both export requests and downloads, providing a complete history of export activities.
- **Real-time export management**: Trigger user exports with the new "Export All Users" button. Track progress in real-time with status updates displayed on the Exports logs table on the Settings page, including when the file is ready for download.
- **Automatic notifications**: Once the export completes, you’ll receive a toast notification and can download the CSV file directly from the dashboard.
- **Flexible navigation**: You can navigate away or switch tabs without interrupting the export process, and you’ll still get notified when the export is done.

### Other Details:

- The download button remains visible until the file expires, allowing you to download the list at any time before requesting a new one.
- The export is restricted to admins (or users in their personal workspace), ensuring the feature is secure and accessible only to authorized users.

---

# @clerk/nextjs v6
URL: https://clerk.com/changelog/2024-10-22-clerk-nextjs-v6.md
Date: 2024-10-22
Category: SDK
Description: Introducing `@clerk/nextjs` v6, with support for Next.js 15.

The Next.js team has [announced the stable release of Next.js 15](https://nextjs.org/blog/next-15), and Clerk is continuing the tradition of (nearly) same-day support for new major Next.js releases with the release of `@clerk/nextjs` v6.

Get started by running the Clerk upgrade CLI:

```
npx @clerk/upgrade
```

Not ready to upgrade to Next.js v15? No problem: `@clerk/nextjs` v6 is backwards compatible with Next.js v14, including the switch to static rendering by default.

## Asynchronous `auth()` (breaking change)

Now that [Next.js's request APIs are asynchronous](https://nextjs.org/blog/next-15-rc2#async-request-apis-breaking-change), Clerk's `auth()` helper will follow suit. In addition to supporting Next.js's new async APIs, this change will also allow the addition of more robust validations and new functionality into the `auth()` helper. Stay tuned!

```tsx
import { auth } from '@clerk/nextjs/server'

export default async function Page() {
  const { userId } = await auth()

  if (!userId) {
    return <h1>Hello, guest!</h1>
  }

  return <h1>Hello, {userId}!</h1>
}
```

With the change to async, we weren't happy with how the usage of `auth().protect()` felt, so we moved `protect` to be a property of `auth`, instead of part of the return value.

```tsx
import { auth } from '@clerk/nextjs/server'

export default async function Page() {
  const { userId } = await auth.protect()

  return <h1>Hello, {userId}!</h1>
}
```

To make migration as easy as possible, we're also including a codemod that will update your usages of `auth()` and `auth().protect()`. For situations where the codemod isn't able to update your code, please see the [upgrade guide](/docs/upgrade-guides/nextjs/v6) for detailed steps.

## Static rendering by default, opt-in dynamic (and partial prerendering support)

Historically, usage of `<ClerkProvider>` has opted your entire application in to dynamic rendering due to the dynamic and personalized nature of auth-related data. We've heard the feedback from our users that this default didn't feel like it aligned with Next.js best practices. Starting with v6, **`<ClerkProvider>` will no longer opt your entire application into dynamic rendering by default.** This change also brings support for Next.js's upcoming [Partial Prerendering mode (PPR)](https://nextjs.org/docs/app/building-your-application/rendering/partial-prerendering). PPR allows a page to be both static *and* dynamic by moving the optimization from pages to components.

Dynamic auth data is still available by using the `auth()` helper in a server component. This data can also be passed to client components directly as needed. This is the recommended way to access auth data going forward. For existing applications that use the `useAuth()` hook in Client Components that are server-side rendered, this is a breaking change. Wrap these components in `<ClerkProvider dynamic>` to make auth data available to the hook during rendering. As a best practice, we recommend wrapping usage of `<ClerkProvider dynamic>` with suspense to ensure your page is setup to take advantage of PPR.

```tsx
import { Suspense } from 'react'
import { ClerkProvider } from '@clerk/nextjs'

export default function Page() {
  return (
    <main>
      <header>
        <Logo />
        <Suspense fallback={<FallbackAvatar />}>
          <ClerkProvider dynamic>
            <UserAvatar />
          </ClerkProvider>
        </Suspense>
      </header>
    </main>
  )
}
```

If you want `<ClerkProvider>` to continue making dynamic auth data available by default, add the `dynamic` prop to your root `<ClerkProvider>`:

```tsx
import { ClerkProvider } from '@clerk/nextjs'

export default function RootLayout({ children }) {
  return (
    <ClerkProvider dynamic>
      <html>
        <body>{children}</body>
      </html>
    </ClerkProvider>
  )
}
```

This opts every single page into dynamic rendering, or PPR when enabled. For this reason, it is still recommended to take a more granular approach to dynamic data access by using `<ClerkProvider dynamic>` further down your component tree.

To learn more about Next.js's different rendering modes and how Clerk interacts with them, check out the [documentation](/docs/references/nextjs/rendering-modes).

## Removal of deprecated APIs

A number of deprecated APIs have been removed as part of this release:

- `authMiddleware()` - use `clerkMiddleware()` instead
- `redirectToSignIn()` - use `const { redirectToSignIn } = await auth()` instead
- `redirectToSignUp()` - use `const { redirectToSignUp } = await auth()` instead
- `clerkClient` singleton - use `await clerkClient()` instead

For more information, please see the [upgrade guide](/docs/upgrade-guides/nextjs/v6).

---

# Fastify SDK 2.0
URL: https://clerk.com/changelog/2024-10-10-fastify-v5-support.md
Date: 2024-10-11
Category: SDK
Description: Introducing Clerk's Fastify SDK 2.0 with support for Fastify v5

Fastify, the fast and low overhead web framework for Node.js, has recently shipped Fastify v5. In order to support Fastify v5 a new major version of `@clerk/fastify` had to be released. With Clerk's Fastify SDK 2.0 comes full support for Fastify v5 and no breaking changes for the Clerk SDK itself.

If you're using Fastify and `@clerk/fastify`, you can update like so:

1. Follow the official [Fastify v5 migration guide](https://fastify.dev/docs/latest/Guides/Migration-Guide-V5/)
2. Install the latest version of `@clerk/fastify`
   ```shell
   npm install @clerk/fastify@latest
   ```
3. You're done! No further changes needed

`@clerk/fastify@^2.0.0` only supports Fastify v5 or later, if you want/need to continue using Fastify v4, please stick with `@clerk/fastify@^1.0.0`.