# Clerk Changelog — Page 38

# Changelog November 11, 2022
URL: https://clerk.com/changelog/2022-11-11.md
Date: 2022-11-12
Category: Company
Description: New components for B2B SaaS: CreateOrganization, OrganizationProfile, OrganizationSwitcher! See the demo at Modern Frontends Live

This week, Clerk launched a new suite of components to help B2B SaaS companies manage their business customers. They are built in the same declarative style as our user-focused `<SignUp/>`, `<SignIn/>`, `<UserProfile/>`, and `<UserButton/>` components.

The new B2B SaaS components are 100% opt-in, and do not change anything about using Clerk for User management.

## `<CreateOrganization/>`

The [`<CreateOrganization/>` component](/docs/components/organization/create-organization) allow users to create an Organization within your application. It starts by asking for a name and logo, then proceeds to prompt for which other users should be invited.

![JWT token implementation guide](./56625362d4c94574021c711076d02fb24681c0b3-992x568.png)

## `<OrganizationProfile/>`

After an organization is created, the [`<OrganizationProfile/>` component](/docs/components/organization/organization-profile) allows users to manage member roles, invite new members, remove members, and maintain profile information.

![JWT token implementation guide](./fda4b9b7e1809af4bc7fe3c35ed3309a8fa994f7-992x568.png)

## `<OrganizationSwitcher/>`

The [`<OrganizationSwitcher/>`](/docs/components/organization/organization-switcher) is a corollary to the `<UserButton/>`. Intended to go in an application's header, it allows users with multiple organizations to select which organization is active, or to create a new organization.

![JWT token implementation guide](./961ee113cf1c37f5a37064d1a5bd9524568bbcf4-992x568.png)

## `useOrganization()`

The [`useOrganization()`](/docs/references/react/use-organization) hook allows developers to retrieve the active organization from anywhere in the React application.

## JWT updates

Tying it all together, the [`Auth` object](/docs/references/nextjs/auth-object) available in your backend is now populated with the active organization ID, and the current user's role in that organization.

To ensure security, this information is passed to your backend via the same cryptographically signed JWT that contains the current user's ID.

## Demo at Modern Frontends Live

This week, I will be demoing the new B2B SaaS features at Modern Frontends Live in London. I hope to see you there!

Can't make it but still want to tune in? The talk will also be available to virtual attendees.

![JWT token implementation guide](./3b89c17917050e1cb4db9689a83d32da7daa2348-1600x900.png)

---

# Changelog October 21, 2022
URL: https://clerk.com/changelog/2022-10-21.md
Date: 2022-10-22
Category: Company
Description: Add OAuth connections after Sign Up, revamped Next.js documentation, and a Product Hunt relaunch

## Add OAuth connections after Sign Up

In the past, when an OAuth connection was turned on, it was required to be available as a sign-up option.

Now, developers can choose whether each OAuth provider is available during sign-up and sign-in, or if the connection should be made later.

This is especially useful for applications that prefer to connect third-parties after the fact. For example, a GitHub connection can be made after sign-up if an application wants to read repository data.

After sign-up, Connections can be made through our `<UserProfile/>` component, or with a custom flow.

![Next.js integration example](./341895d3edbbd481866e84fc7327b6284bcf5ddd-1176x1026.png)

Thanks to the contributors: Mark Pitsilos, Haris Chaniotakis

## Revamped Next.js documentation

We're reorganizing our documentation to have Frameworks at the top-level, and Concepts at the second-level, instead of vice-versa.

We've found that different frameworks uses slightly different concepts (for example, `getServerSideProps` in Next.js vs `loaders` in Remix), and that has made it challenging to organize our documentation with Concepts at the top level.

Over the coming weeks, we'll be inverting the documentation to help developers answer their questions faster. The first to get this treatment was Next.js, which is now [available here](/docs/nextjs/overview).

![Next.js integration example](./c1aa9524875d9de52b63d393ce19e09ba8ed8e09-2880x1594.png)

Thanks to the contributors: Joe Shekmer

## Product Hunt relaunch

Yesterday, we [relaunched on Product Hunt](https://www.producthunt.com/posts/clerk-3) to share our progress over the last year. We wanted to add a special thank you in our changelog to our existing customers, who showed up with kind words in the comments and plenty of upvotes. Thank you!

![Next.js integration example](./02d49ef25c762e4da16cacc494952195decb4c29-1271x760.png)

---

# Changelog October 7, 2022
URL: https://clerk.com/changelog/2022-10-07.md
Date: 2022-10-08
Category: Company
Description: Refreshed branding, improved Next.js authentication SDK, MFA backup codes, and Sign in with Coinbase

## Refreshed branding

[Meet the new Clerk!](/) We've refreshed our brand with a new logo, new colors, and a new homepage.

![Next.js integration example](./971cb1405ccfd209aad82d77b7aa5fdb94af6361-2880x1560.png)

Thanks to the contributors: Charles Wefso, Marcel Cruz, Braden Sidoti

## Improved Next.js authentication SDK

We launched [@clerk/nextjs v4.5](/blog/clerk-nextjs-4-5), an easier approach to [authentication in Next.js](/nextjs-authentication). This standardizes our API in API routes, getServerSideProps, and middleware to a single `getAuth()` helper.

Thanks to the contributors: Mark Pitsilos, Nikos Douvlis

## Backup codes for MFA

Backup codes have been added as a multi-factor authentication method in our `<UserProfile/>` component, and corresponding APIs have been added to our `useUser()` hook.

In the `<UserProfile/>` component, backup codes are presented to the user after configuring either an authenticator applicator or SMS codes for their second factor.

![Next.js integration example](./fd9a7bf0d8ec84af7ef2d4257391f59c2aed3869-1852x1140.png)

Thanks to the contributors: Haris Chaniotakis

## Sign in with Coinbase

Sign in with Coinbase has been added as a Social identity provider. Toggle it on from the Clerk dashboard!

![Next.js integration example](./19f357cbd64424d5ba3bf6ddd3c9c3b9af713752-942x222.png)

Thanks to the contributors: Haris Chaniotakis

---

# Changelog September 30, 2022
URL: https://clerk.com/changelog/2022-09-30.md
Date: 2022-10-01
Category: Company
Description: We launched safe and auditable User Impersonation!

## User Impersonation

User Impersonation has been a top 5 request feature since the week Clerk launched. This feature allows admins to *sign in as* an another user, and experience the application as the user would.

From the Clerk dashboard, admins can now easily sign in as their users with the "Impersonate User" button:

![JWT token implementation guide](./9f4b870225f0ccdb924e13ac07188b9c1d194007-699x153.png)

Impersonation is commonly used within customer support and engineering teams to help with debugging. It's helpful to "see what user sees" in these contexts, especially as applications have become more complex and personalized to individual customers.

### Keeping impersonation safe

Like every other Clerk feature, our top piority while developing User Impersonation was security.

Unsafe implementations of User Impersonation are often called "God-mode" because they empower admins to impersonate another user without leaving a trace. This is not the case with Clerk.

Impersonation sessions are automatically logged and can be retrieved from the [Session List](/docs/references/backend/sessions/get-session-list#get-session-list) endpoint of our API.

We've made it possible to detect impersonated sessions as they are happening, so developers can easily choose to prevent actions while a user is being impersonated.

The detection is available on both the frontend and the backend.

#### Frontend

On the frontend, information about the impersonator (a.k.a. the "actor") is available through the `useAuth()` hook. When `actor` is not null, it's an impersonation session.

```javascript
const { userId, actor } = useAuth()
```

#### Backend

On the backend, it's available through the "auth" helper for the framework of your choice (Next.js shown).

```
import { withAuth } from "@clerk/nextjs/api";

export default withAuth(async (req) => {
  const { userId, actor } = req.auth;
  //...
});
```

If you do not use one of our SDKs, the data is available on the "act" claim of the authentication JWT in compliance with [RFC 8693](https://www.rfc-editor.org/rfc/rfc8693.html).

Since the impersonator data is ultimately transmitted through the JWT, this additional context is available with no additional latency.

### Technical deep dive coming soon

In the coming weeks, we'll continue to share more details about impersonation's design and all of it's capabilities.

Meanwhile, you can learn more in the [impersonation documentation](/docs/custom-flows/user-impersonation#user-impersonation).

Thanks to the contributors: Alex Ntousias, Giannis Katsanos, George Desipris

---

# Changelog September 23, 2022
URL: https://clerk.com/changelog/2022-09-23.md
Date: 2022-09-24
Category: Company
Description: Component localization, integrations with Grafbase, Convex, and Nhost, blocklist and bans

## Component Localization (i18n)

Our components now accept a **localization** prop, which enables internationalization and customization of our default English strings.

[Check out the documentation](/docs/component-customization/localization-prop) for more details.

![JWT token implementation guide](./a6338840023c44e199a55ed79e4c5191d901981b-545x949.png)

## Grafbase, Convex, Nhost integrations

We've launched three additional JWT templates for [Convex](/docs/integration/convex), [Grafbase](/docs/integration/grafbase), and [Nhost](/docs/integration/nhost). Now you can easiliy sync the authenticated user with all of these tools!

Looking for another integration? We're eager to add more, [reach out to our team](https://clerk.com/contact/support)!

![JWT token implementation guide](./3e2f3623a38ed77932482d36526e3d225ad37f3f-928x1302.png)

## Blocklist

In addition to the allowlist, we now support a blocklist. Use this to stop individuals or groups of individuals from signing up.

![JWT token implementation guide](./aa0260af749fb34ccf26b48cdca7c789ed85c50c-2018x718.png)

## User bans

Users that already have an account can also now be banned. This action signs out the user from any existing sessions, and prevents them from signing in again.

![JWT token implementation guide](./7525a30ce3e87f44ce7ea11ea2e23ac54346c3be-2016x298.png)

---

# Changelog August 5, 2022
URL: https://clerk.com/changelog/2022-08-05.md
Date: 2022-08-06
Category: Company
Description: MFA w/ Authenticator apps, and introducing a new settings page, with some new options.

## MFA w/ Authenticator apps

Adding MFA to your app has never been easier... If you've already implemented Clerk, all you have to do is flip a switch.

We've extended our MFA offering to include Time-based one-time-passwords, also known as "TOTP", or, "authenticator apps." TOTP works with almost all modern authenticator apps, such as google authenticator, authy, 1password, hardware devices, and more.

While we've always had MFA w/ SMS, TOTP is a more secure alternative, although harder for some customers to use, and the best security is often security that someone uses1

For this reason, in our own "Clerk Dashboard" We're allowing MFA with either TOTP or SMS. So, go make your clerk account more secure, then let your customers do the same for your app!

You can enable TOTP by going to the clerk dashboard and then:

**Configure > Users & Authentication > Multi-factor > Authenticator Apps**

How it looks in our new user profile component:

![Webhook configuration screenshot](./d94e3e78788ee1674e9530f0495b3233776bad31-1838x1420.png)

Thanks to the contributors: Mark Pitsilos, Haris Chaniotakis

## Updated Settings

On the Clerk dashboard you'll notice a few things moved. Webhooks now have their own home in the sidebar, as do instance-level settings.

![Webhook configuration screenshot](./9b8800420b93bf5f7b1acbee798cd135aa357717-3248x2112.png)

We're going to be exposing smaller beta features through this settings page. As of now we have introduced the following settings

- Disable "Have I Been Pwned" password protection

- Enable test mode (this lets you use "fake" emails and phone numbers to sign in, very useful for [E2E Testing](/docs/testing/e2e-testing), on by default for dev instances)

Thanks to the contributors: John Raptis, Sokratis Vidros