Skip to content

feat(ui): add experimental flag to gate the OIDC self-serve flow#9198

Merged
NicolasLopes7 merged 3 commits into
mainfrom
nicolas/oidc-self-serve-flow-flag
Jul 20, 2026
Merged

feat(ui): add experimental flag to gate the OIDC self-serve flow#9198
NicolasLopes7 merged 3 commits into
mainfrom
nicolas/oidc-self-serve-flow-flag

Conversation

@NicolasLopes7

@NicolasLopes7 NicolasLopes7 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds an experimental oidcSelfServe flag to the ClerkProvider experimental options, laying the groundwork to gate a forthcoming OIDC self-serve configuration flow in <ConfigureSSO />.

  • Opt in via <ClerkProvider experimental={{ oidcSelfServe: true }} /> (default off).
  • Surfaces the flag to the ConfigureSSO wizard and its steps as isOIDCFlowEnabled via useConfigureSSO().
  • No user-facing surface is gated yet; the OIDC provider path lands separately. The flag lives in the SemVer-exempt experimental namespace.

@changeset-bot

changeset-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: d148e4f

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 23 packages
Name Type
@clerk/shared Patch
@clerk/ui Patch
@clerk/astro Patch
@clerk/backend Patch
@clerk/chrome-extension Patch
@clerk/clerk-js Patch
@clerk/electron Patch
@clerk/expo-passkeys Patch
@clerk/expo Patch
@clerk/express Patch
@clerk/fastify Patch
@clerk/headless Patch
@clerk/hono Patch
@clerk/localizations Patch
@clerk/msw Patch
@clerk/nextjs Patch
@clerk/nuxt Patch
@clerk/react-router Patch
@clerk/react Patch
@clerk/tanstack-react-start Patch
@clerk/testing Patch
@clerk/vue Patch
@clerk/swingset Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Jul 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
clerk-js-sandbox Ready Ready Preview, Comment Jul 20, 2026 7:18pm
swingset Ready Ready Preview, Comment Jul 20, 2026 7:18pm

Request Review

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: fb87eb63-b452-4f01-944c-d46dc5968b52

📥 Commits

Reviewing files that changed from the base of the PR and between 18e391c and d148e4f.

📒 Files selected for processing (1)
  • .changeset/empty-ducks-tease.md
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • clerk/clerk_go (manual)
  • clerk/dashboard (manual)
  • clerk/accounts (manual)
  • clerk/backoffice (manual)
  • clerk/clerk (manual)
  • clerk/clerk-docs (manual)
  • clerk/cloudflare-workers (manual)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .changeset/empty-ducks-tease.md

📝 Walkthrough

Walkthrough

Adds the experimental oidcSelfServe boolean to ClerkOptions. ConfigureSSOProvider reads this option, defaults it to false, and exposes the result as isOIDCFlowEnabled through ConfigureSSOData. The memoized context includes the new value and dependency. A changeset file is also added.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the new experimental OIDC self-serve gating flag.
Description check ✅ Passed The description matches the implemented changes and stated objective.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.changeset/empty-ducks-tease.md:
- Around line 1-2: Add a Changesets package bump declaration for packages/shared
in the frontmatter of empty-ducks-tease.md, using the appropriate release level
for the published TypeScript API change; retain valid Changesets formatting so
the change is included in release versioning.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 3a6a669c-9d81-41df-8ddb-15f96e26ace0

📥 Commits

Reviewing files that changed from the base of the PR and between a009d91 and 18e391c.

📒 Files selected for processing (3)
  • .changeset/empty-ducks-tease.md
  • packages/shared/src/types/clerk.ts
  • packages/ui/src/components/ConfigureSSO/ConfigureSSOContext.tsx
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • clerk/clerk_go (manual)
  • clerk/dashboard (manual)
  • clerk/accounts (manual)
  • clerk/backoffice (manual)
  • clerk/clerk (manual)
  • clerk/clerk-docs (manual)
  • clerk/cloudflare-workers (manual)

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.changeset/empty-ducks-tease.md:
- Around line 1-2: Add a Changesets package bump declaration for packages/shared
in the frontmatter of empty-ducks-tease.md, using the appropriate release level
for the published TypeScript API change; retain valid Changesets formatting so
the change is included in release versioning.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 3a6a669c-9d81-41df-8ddb-15f96e26ace0

📥 Commits

Reviewing files that changed from the base of the PR and between a009d91 and 18e391c.

📒 Files selected for processing (3)
  • .changeset/empty-ducks-tease.md
  • packages/shared/src/types/clerk.ts
  • packages/ui/src/components/ConfigureSSO/ConfigureSSOContext.tsx
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • clerk/clerk_go (manual)
  • clerk/dashboard (manual)
  • clerk/accounts (manual)
  • clerk/backoffice (manual)
  • clerk/clerk (manual)
  • clerk/clerk-docs (manual)
  • clerk/cloudflare-workers (manual)
🛑 Comments failed to post (1)
.changeset/empty-ducks-tease.md (1)

1-2: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Add a package version entry to this changeset.

This PR changes a published TypeScript API, but this file contains no package or bump declaration, so the change will not be recorded for release. Add the appropriate packages/shared changeset entry.

As per coding guidelines, .changeset/** must use Changesets for version management and changelogs. Based on learnings, empty changesets are appropriate for documentation-only or non-published changes, not this public type change.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.changeset/empty-ducks-tease.md around lines 1 - 2, Add a Changesets package
bump declaration for packages/shared in the frontmatter of empty-ducks-tease.md,
using the appropriate release level for the published TypeScript API change;
retain valid Changesets formatting so the change is included in release
versioning.

Sources: Coding guidelines, Learnings

@@ -0,0 +1,2 @@
---

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you'll want to add a changeset or else it won't release the change to a new version

@pkg-pr-new

pkg-pr-new Bot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@9198

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@9198

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@9198

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@9198

@clerk/electron

npm i https://pkg.pr.new/@clerk/electron@9198

@clerk/electron-passkeys

npm i https://pkg.pr.new/@clerk/electron-passkeys@9198

@clerk/eslint-plugin

npm i https://pkg.pr.new/@clerk/eslint-plugin@9198

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@9198

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@9198

@clerk/express

npm i https://pkg.pr.new/@clerk/express@9198

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@9198

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@9198

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@9198

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@9198

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@9198

@clerk/react

npm i https://pkg.pr.new/@clerk/react@9198

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@9198

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@9198

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@9198

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@9198

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@9198

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@9198

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@9198

commit: d148e4f

@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-20T19:19:21.099Z

Summary

Metric Count
Packages analyzed 19
Packages with changes 1
🔴 Breaking changes 0
🟡 Non-breaking changes 1
🟢 Additions 0

🤖 This report was reviewed by claude-sonnet-4-6.


@clerk/shared

Current version: 4.25.5
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: ClerkOptions
// ... 26 unchanged lines elided ...
      rethrowOfflineNetworkErrors: boolean;
      commerce: boolean;
      runtimeEnvironment: 'headless';
+     oidcSelfServe: boolean;
    }, Record<string, any>>;
    __internal_keyless_claimKeylessApplicationUrl?: string;
    __internal_keyless_copyInstanceKeysUrl?: string;
// ... 4 unchanged lines elided ...

Static analyzer: Breaking change in type alias ClerkOptions: Type changed: import("@clerk/shared").AfterMultiSessionSingleSignOutUrl&import("@clerk/shared").AfterSignOutUrl&import("@clerk/shared…import("@clerk/shared").AfterMultiSessionSingleSignOutUrl&import("@clerk/shared").AfterSignOutUrl&import("@clerk/shared…

🤖 AI review (reclassified as non-breaking) (95%): The only difference is the addition of oidcSelfServe: boolean inside the experimental field's object type, which is wrapped in Autocomplete<..., Record<string, any>>. Per rule 14, Autocomplete<X> uses an absorbing arm (string & {} or Record<string, any>), meaning the union already accepted any object value; adding a new literal hint arm doesn't change the assignable set. Additionally, experimental is an optional input field and adding a new optional property to an input object type is non-breaking per rule 9.


Report generated by Break Check

Last ran on d148e4f.

@NicolasLopes7
NicolasLopes7 merged commit c904fb4 into main Jul 20, 2026
51 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/oidc-self-serve-flow-flag branch July 20, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants