Skip to content

fix(shared): drop docsUrl for Enstall OAuth provider#8885

Open
SarahSoutoul wants to merge 2 commits into
mainfrom
ss/DOCS-11817
Open

fix(shared): drop docsUrl for Enstall OAuth provider#8885
SarahSoutoul wants to merge 2 commits into
mainfrom
ss/DOCS-11817

Conversation

@SarahSoutoul

@SarahSoutoul SarahSoutoul commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Problem

The JS SDK was shipping a docsUrl for Enstall that points to a docs page that does not exist: https://clerk.com/docs/authentication/social-connections/enstall. That link surfaces to end users as a 404.

Enstall is a private, single-customer OIDC provider rather than a general public social connection, so we should not ship a public docs link for it.

This PR removes the public docsUrl for the Enstall OAuth provider from clerk/javascript.

Changes

  • Made docsUrl optional on OAuthProviderData
  • Removed docsUrl from the Enstall provider entry in:
    • packages/shared/src/oauth.ts
    • packages/shared/src/types/runtime-values.ts
  • Audited current shared/UI consumers in this repo and did not find any UI surface that assumes docsUrl is always present for OAuth providers

Notes

  • This is the SDK-side follow-up only for Enstall.
  • The long-lived docs redirect added here still needs to remain in clerk-docs for already-shipped SDK versions that still contain the old URL

Summary by CodeRabbit

  • Bug Fixes
    • OAuth provider documentation URLs are now optional, supporting providers without documentation links.

@changeset-bot

changeset-bot Bot commented Jun 16, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 9d861e8

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

This PR includes changesets to release 21 packages
Name Type
@clerk/shared Patch
@clerk/astro Patch
@clerk/backend Patch
@clerk/chrome-extension Patch
@clerk/clerk-js Patch
@clerk/expo-passkeys Patch
@clerk/expo Patch
@clerk/express Patch
@clerk/fastify 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/ui 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 Jun 16, 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 Jun 16, 2026 11:40pm
swingset Ready Ready Preview, Comment Jun 16, 2026 11:40pm

Request Review

@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

OAuthProviderData.docsUrl is changed from a required to an optional field. The enstall OAuth provider entry has its docsUrl property removed in both packages/shared/src/oauth.ts and packages/shared/src/types/runtime-values.ts. A patch changeset is added for @clerk/shared.

Changes

OAuthProviderData.docsUrl optionality and enstall data update

Layer / File(s) Summary
Make docsUrl optional and remove enstall docsUrl
packages/shared/src/types/oauth.ts, packages/shared/src/oauth.ts, packages/shared/src/types/runtime-values.ts, .changeset/fresh-lies-film.md
docsUrl is marked optional on OAuthProviderData; the enstall provider entry drops its docsUrl property from both OAUTH_PROVIDERS arrays; a patch changeset documents the API adjustment.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐇 A URL once required, now set free,
The enstall provider travels light, you see.
No docs link to carry, no string to bind,
Optional and nimble — what a find!
Hop along, little patch, you're just fine! 🌿

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix(shared): drop docsUrl for Enstall OAuth provider' accurately and specifically describes the main change in the changeset.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@pkg-pr-new

pkg-pr-new Bot commented Jun 16, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 9d861e8

@SarahSoutoul SarahSoutoul self-assigned this Jun 16, 2026

@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

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/shared/src/types/oauth.ts (1)

5-10: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Add JSDoc to document the public OAuthProviderData interface.

The OAuthProviderData interface is a public, reference-facing API exported from @clerk/shared that will appear in generated customer documentation. Per the coding guidelines for packages/**/src/**/*.ts files, all public APIs must be documented with comprehensive JSDoc comments.

This interface lacks documentation explaining:

  • The purpose of the interface (OAuth provider configuration metadata)
  • Each property and its role
  • That docsUrl is now optional (not all providers have public documentation)

This is especially important since this PR changes the API surface by making docsUrl optional—customers using this interface need clear documentation of the change.

📝 Suggested JSDoc for OAuthProviderData
 import type { OAuthStrategy } from './strategies';
 
 export type OAuthScope = string;
 
+/**
+ * Represents the configuration metadata for an OAuth provider.
+ * 
+ * This interface defines the structure of OAuth provider entries used by Clerk's OAuth integration layer.
+ * Each provider has a unique identifier, associated strategy, and optional documentation link.
+ * 
+ * `@property` provider - The unique provider identifier (e.g., 'google', 'github', 'enstall')
+ * `@property` strategy - The OAuth strategy name for this provider
+ * `@property` name - Human-readable display name of the provider
+ * `@property` docsUrl - Optional URL to the provider's documentation. Not all providers expose public documentation.
+ */
 export interface OAuthProviderData {
   provider: OAuthProvider;
   strategy: OAuthStrategy;
   name: string;
   docsUrl?: string;
 }
🤖 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 `@packages/shared/src/types/oauth.ts` around lines 5 - 10, The public
OAuthProviderData interface is missing JSDoc documentation required for all
public APIs in packages/shared. Add a comprehensive JSDoc comment block above
the interface definition that explains: the purpose of the interface as OAuth
provider configuration metadata, the role of each property (provider, strategy,
name, and docsUrl), and specifically document that docsUrl is optional since not
all providers have public documentation. This ensures the interface is properly
documented for generated customer documentation and clarifies the API surface
change.

Source: Coding guidelines

🤖 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.

Outside diff comments:
In `@packages/shared/src/types/oauth.ts`:
- Around line 5-10: The public OAuthProviderData interface is missing JSDoc
documentation required for all public APIs in packages/shared. Add a
comprehensive JSDoc comment block above the interface definition that explains:
the purpose of the interface as OAuth provider configuration metadata, the role
of each property (provider, strategy, name, and docsUrl), and specifically
document that docsUrl is optional since not all providers have public
documentation. This ensures the interface is properly documented for generated
customer documentation and clarifies the API surface change.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro

Run ID: 936623be-bf17-4884-ae4f-fe84ff5cda43

📥 Commits

Reviewing files that changed from the base of the PR and between d97a887 and 9d861e8.

📒 Files selected for processing (4)
  • .changeset/fresh-lies-film.md
  • packages/shared/src/oauth.ts
  • packages/shared/src/types/oauth.ts
  • packages/shared/src/types/runtime-values.ts
💤 Files with no reviewable changes (2)
  • packages/shared/src/oauth.ts
  • packages/shared/src/types/runtime-values.ts

@github-actions

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-16T23:41:49.498Z

Summary

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

Warning
1 breaking change(s) detected - Major version bump required

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

🔴 Breaking changes index (1)

Every breaking change, up front. Full diffs are in the package sections below.

Package Subpath Change
@clerk/shared ./types OAuthProviderData.docsUrl

@clerk/shared

Current version: 4.18.0
Recommended bump: MAJOR → 5.0.0

Subpath ./types

🔴 Breaking Changes (1)

Changed: OAuthProviderData.docsUrl
- docsUrl: string;
+ docsUrl?: string;

Static analyzer: Modified property OAuthProviderData.docsUrl: Member became optional

🤖 AI review (reclassified as breaking) (80%): Making an existing output field optional is breaking per rule 4: consumers reading docsUrl as string must now handle string | undefined.

Migration: Update consumer code that reads OAuthProviderData.docsUrl to handle the undefined case, e.g. use optional chaining or a nullish coalescing fallback.


Report generated by Break Check

Last ran on 9d861e8.

@SarahSoutoul

Copy link
Copy Markdown
Contributor Author

@manovotny a bit worried about this warning. Making OAuthProviderData.docsUrl optional fixes the Enstall 404 cleanly on the SDK side, but it also changes a public @clerk/shared type from string to string | undefined, which the analyzer is classifying as a breaking change. That would imply a major bump just for this fix, which feels heavier than what we want here.

Wanted to sanity-check whether we’re okay treating this as a real breaking change, or if we'd rather preserve the current type shape and use a safer fallback for Enstall instead?

Screenshot 2026-06-16 at 5 44 00 pm

@wobsoriano

Copy link
Copy Markdown
Member

@manovotny a bit worried about this warning. Making OAuthProviderData.docsUrl optional fixes the Enstall 404 cleanly on the SDK side, but it also changes a public @clerk/shared type from string to string | undefined, which the analyzer is classifying as a breaking change. That would imply a major bump just for this fix, which feels heavier than what we want here.

Wanted to sanity-check whether we’re okay treating this as a real breaking change, or if we'd rather preserve the current type shape and use a safer fallback for Enstall instead?

Screenshot 2026-06-16 at 5 44 00 pm

This is expected result with our new break check tool. But this type is only used by docs correct? Tagging @jacekradko here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants