feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(ui): show deprovisioned organization members - #9202

Merged
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned
Jul 28, 2026
Merged

feat(ui): show deprovisioned organization members#9202
NicolasLopes7 merged 5 commits into
mainfrom
nicolas/org-members-deprovisioned

Conversation

@NicolasLopes7

Copy link
Copy Markdown
Contributor

Summary

  • expose the deprovisioned state on organization memberships
  • mark deprovisioned members as inactive in Organization Profile

Testing

  • pnpm --filter @clerk/clerk-js test -- OrganizationMembership.test.ts
  • pnpm --filter @clerk/ui exec vitest run src/components/OrganizationProfile/tests/OrganizationMembers.test.tsx
  • pnpm --filter @clerk/ui type-check
  • pnpm --filter @clerk/clerk-js build:declarations

@changeset-bot

changeset-botBot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a353533

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

This PR includes changesets to release 23 packages
NameType
@clerk/clerk-jsPatch
@clerk/localizationsPatch
@clerk/sharedPatch
@clerk/uiPatch
@clerk/chrome-extensionPatch
@clerk/electronPatch
@clerk/expoPatch
@clerk/reactPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/headlessPatch
@clerk/honoPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch
@clerk/swingsetPatch

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

vercelBot commented Jul 20, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJul 28, 2026 4:12pm
swingsetReadyReadyPreview, CommentJul 28, 2026 4:12pm

Request Review

@pkg-pr-new

pkg-pr-newBot commented Jul 20, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/electron

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

@clerk/electron-passkeys

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

@clerk/eslint-plugin

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

@clerk/expo

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

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@9202

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: a353533

@github-actions

github-actionsBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-07-28T16:13:03.009Z

Summary

MetricCount
Packages analyzed19
Packages with changes1
🔴 Breaking changes0
🟡 Non-breaking changes1
🟢 Additions2

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


@clerk/shared

Current version: 4.25.8
Recommended bump: MINOR → 4.26.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: __internal_LocalizationResource
// ... 77 unchanged lines elided ...
badge__requiresAction: LocalizationValue;
badge__you: LocalizationValue;
badge__banned: LocalizationValue;
+ badge__deprovisioned: LocalizationValue;
badge__freeTrial: LocalizationValue;
badge__currentPlan: LocalizationValue;
badge__upcomingPlan: LocalizationValue;
// ... 1897 unchanged lines elided ...

Static analyzer: Breaking change in type alias __internal_LocalizationResource: Type changed: {locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…{locale:string;maintenanceMode:import("@clerk/shared").LocalizationValue;roles:{[r:string]:import("@clerk/shared").Loca…

🤖 AI review (reclassified as non-breaking) (70%): The before and after snippets are structurally identical except for '1900 lines elided' vs '1901 lines elided', indicating one new field was added somewhere in the middle. __internal_LocalizationResource is used only as the source type for LocalizationResource via DeepPartial<DeepLocalizationWithoutObjects<...>>, making it an output/read type; adding a required property to an output type is non-breaking for consumers who only read it, and DeepPartial wrapping further makes all nested fields optional in the exposed LocalizationResource interface.

🟢 Additions (2)

Added: PublicUserData.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserData.deprovisioned

Added: PublicUserDataJSON.deprovisioned
+ deprovisioned?: boolean;

Added property PublicUserDataJSON.deprovisioned


Report generated by Break Check

Last ran on a353533.

@coderabbitai

coderabbitaiBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds an optional deprovisioned flag to public user data, maps it from JSON, preserves it in snapshots, and tests the mapping. Organization Profile member rows display a deprovisioned badge, expose disabled row state, and disable role editing and removal. Localization types and locale resources add badge__deprovisioned, with an English-US label. A Changeset records patch updates for affected packages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly summarizes the main user-facing change: showing deprovisioned organization members.
Description check✅ PassedThe description matches the changeset by describing deprovisioned state exposure and inactive members in Organization Profile.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Warning

Review ran into problems

🔥 Problems

Linked repositories: Couldn't analyze clerk/clerk-android - clone failed: Clone operation failed: Cloning into '/home/jailuser/git'...
From https://github.com/clerk/clerk-android

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161515.688957582.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed
Downloading config/bin/detekt-cli (71 MB)
Error downloading object: config/bin/detekt-cli (2655f48): Smudge error: Error downloading config/bin/detekt-cli (2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1): LFS: Client error: https://github-cloud.githubusercontent.com/alambic/media/877189286/26/55/2655f48c7c303a5f9bf920a33229408b8571bb1d29e4e57cf7be3e151bceecb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5BA2674WPWWEFGQ5%2F20260728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260728T161637Z&X-Amz-Expires=3600&X-Amz-Signature=ebc1188fad49fc43f3ab98ba4d25f620eb73e1d4a3721751c6cb0064a0699082&X-Amz-SignedHeaders=host&actor_id=136622811&key_id=0&repo_id=980409545&token=1

Errors logged to '/home/jailuser/git/.git/lfs/logs/20260728T161637.116584545.log'.
Use git lfs logs last to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: config/bin/detekt-cli: smudge filter lfs failed


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

@coderabbitaicoderabbitaiBot 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.

🧹 Nitpick comments (1)
packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts (1)

17-18: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Cover snapshot serialization too.

This verifies JSON-to-resource mapping, but not the changed __internal_toSnapshot() contract. Add an assertion such as expect(pud.__internal_toSnapshot()).toMatchObject({ deprovisioned: true }) so snapshot regressions are caught.

As per coding guidelines, unit tests are required for new functionality and should verify edge cases.

Also applies to: 25-29

🤖 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/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts` around
lines 17 - 18, Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

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.
Nitpick comments:
In `@packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts`:
- Around line 17-18: Extend the PublicUserData test covering the deprovisioned
resource to assert that __internal_toSnapshot() includes deprovisioned: true,
preserving the existing JSON-to-resource assertions and covering the changed
snapshot serialization contract.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b1deb87-32c4-4b69-814f-0c94f9698009

📥 Commits

Reviewing files that changed from the base of the PR and between 9081534 and 690b731.

📒 Files selected for processing (58)
  • .changeset/wise-dolphins-explain.md
  • packages/clerk-js/src/core/resources/PublicUserData.ts
  • packages/clerk-js/src/core/resources/__tests__/PublicUserData.test.ts
  • packages/localizations/src/ar-SA.ts
  • packages/localizations/src/be-BY.ts
  • packages/localizations/src/bg-BG.ts
  • packages/localizations/src/bn-IN.ts
  • packages/localizations/src/ca-ES.ts
  • packages/localizations/src/cs-CZ.ts
  • packages/localizations/src/da-DK.ts
  • packages/localizations/src/de-DE.ts
  • packages/localizations/src/el-GR.ts
  • packages/localizations/src/en-GB.ts
  • packages/localizations/src/en-US.ts
  • packages/localizations/src/es-CR.ts
  • packages/localizations/src/es-ES.ts
  • packages/localizations/src/es-MX.ts
  • packages/localizations/src/es-UY.ts
  • packages/localizations/src/fa-IR.ts
  • packages/localizations/src/fi-FI.ts
  • packages/localizations/src/fr-FR.ts
  • packages/localizations/src/he-IL.ts
  • packages/localizations/src/hi-IN.ts
  • packages/localizations/src/hr-HR.ts
  • packages/localizations/src/hu-HU.ts
  • packages/localizations/src/id-ID.ts
  • packages/localizations/src/is-IS.ts
  • packages/localizations/src/it-IT.ts
  • packages/localizations/src/ja-JP.ts
  • packages/localizations/src/kk-KZ.ts
  • packages/localizations/src/ko-KR.ts
  • packages/localizations/src/mn-MN.ts
  • packages/localizations/src/ms-MY.ts
  • packages/localizations/src/nb-NO.ts
  • packages/localizations/src/nl-BE.ts
  • packages/localizations/src/nl-NL.ts
  • packages/localizations/src/pl-PL.ts
  • packages/localizations/src/pt-BR.ts
  • packages/localizations/src/pt-PT.ts
  • packages/localizations/src/ro-RO.ts
  • packages/localizations/src/ru-RU.ts
  • packages/localizations/src/sk-SK.ts
  • packages/localizations/src/sr-RS.ts
  • packages/localizations/src/sv-SE.ts
  • packages/localizations/src/ta-IN.ts
  • packages/localizations/src/te-IN.ts
  • packages/localizations/src/th-TH.ts
  • packages/localizations/src/tr-TR.ts
  • packages/localizations/src/uk-UA.ts
  • packages/localizations/src/vi-VN.ts
  • packages/localizations/src/zh-CN.ts
  • packages/localizations/src/zh-TW.ts
  • packages/shared/src/types/json.ts
  • packages/shared/src/types/localization.ts
  • packages/shared/src/types/session.ts
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/OrganizationMembers.test.tsx
  • packages/ui/src/components/OrganizationProfile/__tests__/utils.ts
🔗 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)
  • clerk/clerk-ios(auto-detected)
  • clerk/cli(auto-detected)
  • clerk/clerk-android(auto-detected)

@dstaleydstaley left a comment

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.

approved, but let's retain usage of the RowContainer component for consistency


return (
<RowContainer>
<Tr

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.

let's update the RowContainer component to handle this logic, that way we retain one single source for defining the hover background color

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@NicolasLopes7
NicolasLopes7 merged commit e2dd4e2 into mainJul 28, 2026
51 of 52 checks passed
@NicolasLopes7
NicolasLopes7 deleted the nicolas/org-members-deprovisioned branch July 28, 2026 16:18

@coderabbitaicoderabbitaiBot 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

Caution

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

⚠️ Outside diff range comments (1)
packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx (1)

99-107: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Show the deprovisioned badge for deprovisioned current users.

The isCurrentUser branch runs before isDeprovisioned, so a deprovisioned current user never receives the new badge. Make deprovisioned state take precedence, or render both badges if both statuses must remain visible.

🤖 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/ui/src/components/OrganizationProfile/ActiveMembersList.tsx` around
lines 99 - 107, Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
🧹 Nitpick comments (1)
packages/ui/src/components/OrganizationProfile/MemberListTable.tsx (1)

133-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add an explicit return type to RowContainer.

This exported TypeScript component should declare its JSX return type, following the repository’s explicit-return-type requirement. Use the project-standard JSX element type.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 147, Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.

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.
Inline comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-144: Update RowContainer so its generated disabled/hover
styles are merged with any caller-provided sx from rest instead of replacing
them. Preserve the existing conditional styles and ensure consumer-provided
styles remain applied.
---
Outside diff comments:
In `@packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx`:
- Around line 99-107: Update the badge conditional in ActiveMembersList so
isDeprovisioned is evaluated before isCurrentUser, ensuring deprovisioned
current users receive the deprovisioned badge. Preserve the existing “you” badge
behavior for current users who are not deprovisioned.
---
Nitpick comments:
In `@packages/ui/src/components/OrganizationProfile/MemberListTable.tsx`:
- Around line 133-147: Update the exported RowContainer component to declare an
explicit return type using the repository-standard JSX element type, while
preserving its existing props handling and rendered Tr behavior.
🪄 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: 5d1f0807-bcf2-477b-bc81-74ed60fb1730

📥 Commits

Reviewing files that changed from the base of the PR and between 690b731 and a353533.

📒 Files selected for processing (2)
  • packages/ui/src/components/OrganizationProfile/ActiveMembersList.tsx
  • packages/ui/src/components/OrganizationProfile/MemberListTable.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)
  • clerk/cli(auto-detected)
  • clerk/clerk-ios(auto-detected)
  • clerk/clerk-android(auto-detected)

Comment on lines +133 to +144
export const RowContainer = (props: PropsOfComponent<typeof Tr> & { isDisabled?: boolean }) => {
const { isDisabled, ...rest } = props;

return (
<Tr
{...props}
sx={t => ({ ':hover': { backgroundColor: t.colors.$neutralAlpha50 } })}
{...rest}
aria-disabled={isDisabled}
sx={t =>
isDisabled
? { opacity: t.opacity.$disabled, ':hover': { backgroundColor: 'transparent' } }
: { ':hover': { backgroundColor: t.colors.$neutralAlpha50 } }
}

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve caller-provided sx styles.

rest can contain sx, but the later sx={...} assignment replaces it. Merge the caller’s styles with the disabled/hover styles so existing RowContainer consumers do not silently lose custom styling.

🤖 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/ui/src/components/OrganizationProfile/MemberListTable.tsx` around
lines 133 - 144, Update RowContainer so its generated disabled/hover styles are
merged with any caller-provided sx from rest instead of replacing them. Preserve
the existing conditional styles and ensure consumer-provided styles remain
applied.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@NicolasLopes7@dstaley@Jibaru@gabrielmeloc22