Skip to content

feat(ui): Immutable attributes in UserProfile - #7931

Merged
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes
Mar 5, 2026
Merged

feat(ui): Immutable attributes in UserProfile#7931
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes

Conversation

@dmoerner

@dmoernerdmoerner commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Description

When an attribute is marked as immutable in the user settings, do not allow users to add, remove, or edit it. We currently support phone number, email address, and username. Do not show the three dot action menu if there are no available actions.

Sample screenshot with username, phone, and email immutable. Note that there is no add button, nor is there an action menu to remove:

Screenshot 2026-02-25 at 14-46-57 clerk-js Sandbox

Sample screenshot with same settings, but with two emails on account. Now the action menu is rendered, but the only option is to change which email is primary (which we do not block if an attribute is immutable):

Screenshot 2026-02-25 at 14-47-45 clerk-js Sandbox

If a user tries to connect an OAuth account which would add a new email address to their profile, we follow the existing patterns and display the apierror. There are no new UI changes here, as per the design.

Screenshot 2026-02-25 at 14-55-52 clerk-js Sandbox

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features

    • User profile attributes can be marked immutable—creation, deletion, and edit actions are disabled for protected emails, phones, and usernames; immutable usernames render read-only.
  • Tests

    • Added tests verifying immutable behavior for emails, phones, and usernames (visibility and action availability).
  • Chores

    • Bumped minor package versions and added changelog note about preventing modification of immutable attributes.

@vercel

vercelBot commented Feb 25, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentMar 5, 2026 3:17pm

Request Review

@changeset-bot

changeset-botBot commented Feb 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6bcb461

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

This PR includes changesets to release 21 packages
NameType
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/uiMinor
@clerk/chrome-extensionPatch
@clerk/expoPatch
@clerk/agent-toolkitPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/honoPatch
@clerk/localizationsPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/reactPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch

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

@dmoerner
dmoerner marked this pull request as ready for review February 25, 2026 20:21
@coderabbitai

coderabbitaiBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d4f717d and e3f2012.

📒 Files selected for processing (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx

📝 Walkthrough

Walkthrough

This PR prevents modification of immutable user attributes. It adds an optional immutable?: boolean to AttributeDataJSON, exposes immutableAttributes: Set<string> on the UserProfile context, and updates AccountPage to derive immutability for username, emails, and phones. UsernameSection, EmailsSection, and PhoneSection now accept immutability-related props to disable creation/deletion or render read‑only UI. Tests for immutable email, phone, and username behaviors are added. A changeset bumps minor package versions and adds a changelog note.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding support for immutable attributes in the UserProfile component across email, phone, and username fields.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ui/src/components/UserProfile/AccountPage.tsx`:
- Line 34: Remove the debug console.log from the render path in AccountPage.tsx:
eliminate the line logging immutableAttributes (console.log('[clerk-ui]
immutableAttributes:', [...immutableAttributes])); instead, if you need
non-production diagnostics, move logging out of the render flow into a
development-only guard (e.g., check process.env.NODE_ENV === 'development') or
use the project's logger utility and log at a non-verbose level outside the
component render (referencing immutableAttributes and the AccountPage component
to locate the code).

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 06a633e and 44fd6f3.

📒 Files selected for processing (10)
  • .changeset/bumpy-wings-travel.md
  • packages/shared/src/types/userSettings.ts
  • packages/ui/src/components/UserProfile/AccountPage.tsx
  • packages/ui/src/components/UserProfile/EmailsSection.tsx
  • packages/ui/src/components/UserProfile/PhoneSection.tsx
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
  • packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx
  • packages/ui/src/contexts/components/UserProfile.ts

Comment threadpackages/ui/src/components/UserProfile/AccountPage.tsx Outdated
@pkg-pr-new

pkg-pr-newBot commented Feb 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7931

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7931

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 6bcb461

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

Looks good! thank you

@dmoerner
dmoerner merged commit 776ee1b into mainMar 5, 2026
39 checks passed
@dmoerner
dmoerner deleted the daniel/user-4766-sdk-support-for-immutable-attributes branch March 5, 2026 19:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@dmoerner@wobsoriano@jacekradko
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat(ui): Immutable attributes in UserProfile by dmoerner · Pull Request #7931 · clerk/javascript · GitHub
Skip to content

feat(ui): Immutable attributes in UserProfile - #7931

Merged
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes
Mar 5, 2026
Merged

feat(ui): Immutable attributes in UserProfile#7931
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes

Conversation

@dmoerner

@dmoernerdmoerner commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Description

When an attribute is marked as immutable in the user settings, do not allow users to add, remove, or edit it. We currently support phone number, email address, and username. Do not show the three dot action menu if there are no available actions.

Sample screenshot with username, phone, and email immutable. Note that there is no add button, nor is there an action menu to remove:

Screenshot 2026-02-25 at 14-46-57 clerk-js Sandbox

Sample screenshot with same settings, but with two emails on account. Now the action menu is rendered, but the only option is to change which email is primary (which we do not block if an attribute is immutable):

Screenshot 2026-02-25 at 14-47-45 clerk-js Sandbox

If a user tries to connect an OAuth account which would add a new email address to their profile, we follow the existing patterns and display the apierror. There are no new UI changes here, as per the design.

Screenshot 2026-02-25 at 14-55-52 clerk-js Sandbox

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features

    • User profile attributes can be marked immutable—creation, deletion, and edit actions are disabled for protected emails, phones, and usernames; immutable usernames render read-only.
  • Tests

    • Added tests verifying immutable behavior for emails, phones, and usernames (visibility and action availability).
  • Chores

    • Bumped minor package versions and added changelog note about preventing modification of immutable attributes.

@vercel

vercelBot commented Feb 25, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentMar 5, 2026 3:17pm

Request Review

@changeset-bot

changeset-botBot commented Feb 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6bcb461

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

This PR includes changesets to release 21 packages
NameType
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/uiMinor
@clerk/chrome-extensionPatch
@clerk/expoPatch
@clerk/agent-toolkitPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/honoPatch
@clerk/localizationsPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/reactPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch

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

@dmoerner
dmoerner marked this pull request as ready for review February 25, 2026 20:21
@coderabbitai

coderabbitaiBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d4f717d and e3f2012.

📒 Files selected for processing (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx

📝 Walkthrough

Walkthrough

This PR prevents modification of immutable user attributes. It adds an optional immutable?: boolean to AttributeDataJSON, exposes immutableAttributes: Set<string> on the UserProfile context, and updates AccountPage to derive immutability for username, emails, and phones. UsernameSection, EmailsSection, and PhoneSection now accept immutability-related props to disable creation/deletion or render read‑only UI. Tests for immutable email, phone, and username behaviors are added. A changeset bumps minor package versions and adds a changelog note.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding support for immutable attributes in the UserProfile component across email, phone, and username fields.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ui/src/components/UserProfile/AccountPage.tsx`:
- Line 34: Remove the debug console.log from the render path in AccountPage.tsx:
eliminate the line logging immutableAttributes (console.log('[clerk-ui]
immutableAttributes:', [...immutableAttributes])); instead, if you need
non-production diagnostics, move logging out of the render flow into a
development-only guard (e.g., check process.env.NODE_ENV === 'development') or
use the project's logger utility and log at a non-verbose level outside the
component render (referencing immutableAttributes and the AccountPage component
to locate the code).

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 06a633e and 44fd6f3.

📒 Files selected for processing (10)
  • .changeset/bumpy-wings-travel.md
  • packages/shared/src/types/userSettings.ts
  • packages/ui/src/components/UserProfile/AccountPage.tsx
  • packages/ui/src/components/UserProfile/EmailsSection.tsx
  • packages/ui/src/components/UserProfile/PhoneSection.tsx
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
  • packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx
  • packages/ui/src/contexts/components/UserProfile.ts

Comment threadpackages/ui/src/components/UserProfile/AccountPage.tsx Outdated
@pkg-pr-new

pkg-pr-newBot commented Feb 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7931

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7931

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 6bcb461

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

Looks good! thank you

@dmoerner
dmoerner merged commit 776ee1b into mainMar 5, 2026
39 checks passed
@dmoerner
dmoerner deleted the daniel/user-4766-sdk-support-for-immutable-attributes branch March 5, 2026 19:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@dmoerner@wobsoriano@jacekradko
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(ui): Immutable attributes in UserProfile by dmoerner · Pull Request #7931 · clerk/javascript · GitHub
Skip to content

feat(ui): Immutable attributes in UserProfile - #7931

Merged
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes
Mar 5, 2026
Merged

feat(ui): Immutable attributes in UserProfile#7931
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes

Conversation

@dmoerner

@dmoernerdmoerner commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Description

When an attribute is marked as immutable in the user settings, do not allow users to add, remove, or edit it. We currently support phone number, email address, and username. Do not show the three dot action menu if there are no available actions.

Sample screenshot with username, phone, and email immutable. Note that there is no add button, nor is there an action menu to remove:

Screenshot 2026-02-25 at 14-46-57 clerk-js Sandbox

Sample screenshot with same settings, but with two emails on account. Now the action menu is rendered, but the only option is to change which email is primary (which we do not block if an attribute is immutable):

Screenshot 2026-02-25 at 14-47-45 clerk-js Sandbox

If a user tries to connect an OAuth account which would add a new email address to their profile, we follow the existing patterns and display the apierror. There are no new UI changes here, as per the design.

Screenshot 2026-02-25 at 14-55-52 clerk-js Sandbox

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features

    • User profile attributes can be marked immutable—creation, deletion, and edit actions are disabled for protected emails, phones, and usernames; immutable usernames render read-only.
  • Tests

    • Added tests verifying immutable behavior for emails, phones, and usernames (visibility and action availability).
  • Chores

    • Bumped minor package versions and added changelog note about preventing modification of immutable attributes.

@vercel

vercelBot commented Feb 25, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentMar 5, 2026 3:17pm

Request Review

@changeset-bot

changeset-botBot commented Feb 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6bcb461

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

This PR includes changesets to release 21 packages
NameType
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/uiMinor
@clerk/chrome-extensionPatch
@clerk/expoPatch
@clerk/agent-toolkitPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/honoPatch
@clerk/localizationsPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/reactPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch

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

@dmoerner
dmoerner marked this pull request as ready for review February 25, 2026 20:21
@coderabbitai

coderabbitaiBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d4f717d and e3f2012.

📒 Files selected for processing (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx

📝 Walkthrough

Walkthrough

This PR prevents modification of immutable user attributes. It adds an optional immutable?: boolean to AttributeDataJSON, exposes immutableAttributes: Set<string> on the UserProfile context, and updates AccountPage to derive immutability for username, emails, and phones. UsernameSection, EmailsSection, and PhoneSection now accept immutability-related props to disable creation/deletion or render read‑only UI. Tests for immutable email, phone, and username behaviors are added. A changeset bumps minor package versions and adds a changelog note.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding support for immutable attributes in the UserProfile component across email, phone, and username fields.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ui/src/components/UserProfile/AccountPage.tsx`:
- Line 34: Remove the debug console.log from the render path in AccountPage.tsx:
eliminate the line logging immutableAttributes (console.log('[clerk-ui]
immutableAttributes:', [...immutableAttributes])); instead, if you need
non-production diagnostics, move logging out of the render flow into a
development-only guard (e.g., check process.env.NODE_ENV === 'development') or
use the project's logger utility and log at a non-verbose level outside the
component render (referencing immutableAttributes and the AccountPage component
to locate the code).

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 06a633e and 44fd6f3.

📒 Files selected for processing (10)
  • .changeset/bumpy-wings-travel.md
  • packages/shared/src/types/userSettings.ts
  • packages/ui/src/components/UserProfile/AccountPage.tsx
  • packages/ui/src/components/UserProfile/EmailsSection.tsx
  • packages/ui/src/components/UserProfile/PhoneSection.tsx
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
  • packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx
  • packages/ui/src/contexts/components/UserProfile.ts

Comment threadpackages/ui/src/components/UserProfile/AccountPage.tsx Outdated
@pkg-pr-new

pkg-pr-newBot commented Feb 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7931

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7931

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 6bcb461

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

Looks good! thank you

@dmoerner
dmoerner merged commit 776ee1b into mainMar 5, 2026
39 checks passed
@dmoerner
dmoerner deleted the daniel/user-4766-sdk-support-for-immutable-attributes branch March 5, 2026 19:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

feat(ui): Immutable attributes in UserProfile - #7931

Merged
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes
Mar 5, 2026
Merged

feat(ui): Immutable attributes in UserProfile#7931
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes

Conversation

@dmoerner

@dmoernerdmoerner commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Description

When an attribute is marked as immutable in the user settings, do not allow users to add, remove, or edit it. We currently support phone number, email address, and username. Do not show the three dot action menu if there are no available actions.

Sample screenshot with username, phone, and email immutable. Note that there is no add button, nor is there an action menu to remove:

Screenshot 2026-02-25 at 14-46-57 clerk-js Sandbox

Sample screenshot with same settings, but with two emails on account. Now the action menu is rendered, but the only option is to change which email is primary (which we do not block if an attribute is immutable):

Screenshot 2026-02-25 at 14-47-45 clerk-js Sandbox

If a user tries to connect an OAuth account which would add a new email address to their profile, we follow the existing patterns and display the apierror. There are no new UI changes here, as per the design.

Screenshot 2026-02-25 at 14-55-52 clerk-js Sandbox

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features

    • User profile attributes can be marked immutable—creation, deletion, and edit actions are disabled for protected emails, phones, and usernames; immutable usernames render read-only.
  • Tests

    • Added tests verifying immutable behavior for emails, phones, and usernames (visibility and action availability).
  • Chores

    • Bumped minor package versions and added changelog note about preventing modification of immutable attributes.

@vercel

vercelBot commented Feb 25, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentMar 5, 2026 3:17pm

Request Review

@changeset-bot

changeset-botBot commented Feb 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6bcb461

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

This PR includes changesets to release 21 packages
NameType
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/uiMinor
@clerk/chrome-extensionPatch
@clerk/expoPatch
@clerk/agent-toolkitPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/honoPatch
@clerk/localizationsPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/reactPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch

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

@dmoerner
dmoerner marked this pull request as ready for review February 25, 2026 20:21
@coderabbitai

coderabbitaiBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d4f717d and e3f2012.

📒 Files selected for processing (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx

📝 Walkthrough

Walkthrough

This PR prevents modification of immutable user attributes. It adds an optional immutable?: boolean to AttributeDataJSON, exposes immutableAttributes: Set<string> on the UserProfile context, and updates AccountPage to derive immutability for username, emails, and phones. UsernameSection, EmailsSection, and PhoneSection now accept immutability-related props to disable creation/deletion or render read‑only UI. Tests for immutable email, phone, and username behaviors are added. A changeset bumps minor package versions and adds a changelog note.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding support for immutable attributes in the UserProfile component across email, phone, and username fields.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ui/src/components/UserProfile/AccountPage.tsx`:
- Line 34: Remove the debug console.log from the render path in AccountPage.tsx:
eliminate the line logging immutableAttributes (console.log('[clerk-ui]
immutableAttributes:', [...immutableAttributes])); instead, if you need
non-production diagnostics, move logging out of the render flow into a
development-only guard (e.g., check process.env.NODE_ENV === 'development') or
use the project's logger utility and log at a non-verbose level outside the
component render (referencing immutableAttributes and the AccountPage component
to locate the code).

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 06a633e and 44fd6f3.

📒 Files selected for processing (10)
  • .changeset/bumpy-wings-travel.md
  • packages/shared/src/types/userSettings.ts
  • packages/ui/src/components/UserProfile/AccountPage.tsx
  • packages/ui/src/components/UserProfile/EmailsSection.tsx
  • packages/ui/src/components/UserProfile/PhoneSection.tsx
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
  • packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx
  • packages/ui/src/contexts/components/UserProfile.ts

Comment threadpackages/ui/src/components/UserProfile/AccountPage.tsx Outdated
@pkg-pr-new

pkg-pr-newBot commented Feb 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7931

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7931

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 6bcb461

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

Looks good! thank you

@dmoerner
dmoerner merged commit 776ee1b into mainMar 5, 2026
39 checks passed
@dmoerner
dmoerner deleted the daniel/user-4766-sdk-support-for-immutable-attributes branch March 5, 2026 19:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

feat(ui): Immutable attributes in UserProfile - #7931

Merged
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes
Mar 5, 2026
Merged

feat(ui): Immutable attributes in UserProfile#7931
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes

Conversation

@dmoerner

@dmoernerdmoerner commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Description

When an attribute is marked as immutable in the user settings, do not allow users to add, remove, or edit it. We currently support phone number, email address, and username. Do not show the three dot action menu if there are no available actions.

Sample screenshot with username, phone, and email immutable. Note that there is no add button, nor is there an action menu to remove:

Screenshot 2026-02-25 at 14-46-57 clerk-js Sandbox

Sample screenshot with same settings, but with two emails on account. Now the action menu is rendered, but the only option is to change which email is primary (which we do not block if an attribute is immutable):

Screenshot 2026-02-25 at 14-47-45 clerk-js Sandbox

If a user tries to connect an OAuth account which would add a new email address to their profile, we follow the existing patterns and display the apierror. There are no new UI changes here, as per the design.

Screenshot 2026-02-25 at 14-55-52 clerk-js Sandbox

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features

    • User profile attributes can be marked immutable—creation, deletion, and edit actions are disabled for protected emails, phones, and usernames; immutable usernames render read-only.
  • Tests

    • Added tests verifying immutable behavior for emails, phones, and usernames (visibility and action availability).
  • Chores

    • Bumped minor package versions and added changelog note about preventing modification of immutable attributes.

@vercel

vercelBot commented Feb 25, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentMar 5, 2026 3:17pm

Request Review

@changeset-bot

changeset-botBot commented Feb 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6bcb461

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

This PR includes changesets to release 21 packages
NameType
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/uiMinor
@clerk/chrome-extensionPatch
@clerk/expoPatch
@clerk/agent-toolkitPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/honoPatch
@clerk/localizationsPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/reactPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch

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

@dmoerner
dmoerner marked this pull request as ready for review February 25, 2026 20:21
@coderabbitai

coderabbitaiBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d4f717d and e3f2012.

📒 Files selected for processing (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx

📝 Walkthrough

Walkthrough

This PR prevents modification of immutable user attributes. It adds an optional immutable?: boolean to AttributeDataJSON, exposes immutableAttributes: Set<string> on the UserProfile context, and updates AccountPage to derive immutability for username, emails, and phones. UsernameSection, EmailsSection, and PhoneSection now accept immutability-related props to disable creation/deletion or render read‑only UI. Tests for immutable email, phone, and username behaviors are added. A changeset bumps minor package versions and adds a changelog note.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding support for immutable attributes in the UserProfile component across email, phone, and username fields.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ui/src/components/UserProfile/AccountPage.tsx`:
- Line 34: Remove the debug console.log from the render path in AccountPage.tsx:
eliminate the line logging immutableAttributes (console.log('[clerk-ui]
immutableAttributes:', [...immutableAttributes])); instead, if you need
non-production diagnostics, move logging out of the render flow into a
development-only guard (e.g., check process.env.NODE_ENV === 'development') or
use the project's logger utility and log at a non-verbose level outside the
component render (referencing immutableAttributes and the AccountPage component
to locate the code).

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 06a633e and 44fd6f3.

📒 Files selected for processing (10)
  • .changeset/bumpy-wings-travel.md
  • packages/shared/src/types/userSettings.ts
  • packages/ui/src/components/UserProfile/AccountPage.tsx
  • packages/ui/src/components/UserProfile/EmailsSection.tsx
  • packages/ui/src/components/UserProfile/PhoneSection.tsx
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
  • packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx
  • packages/ui/src/contexts/components/UserProfile.ts

Comment threadpackages/ui/src/components/UserProfile/AccountPage.tsx Outdated
@pkg-pr-new

pkg-pr-newBot commented Feb 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7931

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7931

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 6bcb461

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

Looks good! thank you

@dmoerner
dmoerner merged commit 776ee1b into mainMar 5, 2026
39 checks passed
@dmoerner
dmoerner deleted the daniel/user-4766-sdk-support-for-immutable-attributes branch March 5, 2026 19:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@dmoerner@wobsoriano@jacekradko
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(ui): Immutable attributes in UserProfile by dmoerner · Pull Request #7931 · clerk/javascript · GitHub
Skip to content

feat(ui): Immutable attributes in UserProfile - #7931

Merged
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes
Mar 5, 2026
Merged

feat(ui): Immutable attributes in UserProfile#7931
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes

Conversation

@dmoerner

@dmoernerdmoerner commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Description

When an attribute is marked as immutable in the user settings, do not allow users to add, remove, or edit it. We currently support phone number, email address, and username. Do not show the three dot action menu if there are no available actions.

Sample screenshot with username, phone, and email immutable. Note that there is no add button, nor is there an action menu to remove:

Screenshot 2026-02-25 at 14-46-57 clerk-js Sandbox

Sample screenshot with same settings, but with two emails on account. Now the action menu is rendered, but the only option is to change which email is primary (which we do not block if an attribute is immutable):

Screenshot 2026-02-25 at 14-47-45 clerk-js Sandbox

If a user tries to connect an OAuth account which would add a new email address to their profile, we follow the existing patterns and display the apierror. There are no new UI changes here, as per the design.

Screenshot 2026-02-25 at 14-55-52 clerk-js Sandbox

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features

    • User profile attributes can be marked immutable—creation, deletion, and edit actions are disabled for protected emails, phones, and usernames; immutable usernames render read-only.
  • Tests

    • Added tests verifying immutable behavior for emails, phones, and usernames (visibility and action availability).
  • Chores

    • Bumped minor package versions and added changelog note about preventing modification of immutable attributes.

@vercel

vercelBot commented Feb 25, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentMar 5, 2026 3:17pm

Request Review

@changeset-bot

changeset-botBot commented Feb 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6bcb461

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

This PR includes changesets to release 21 packages
NameType
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/uiMinor
@clerk/chrome-extensionPatch
@clerk/expoPatch
@clerk/agent-toolkitPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/honoPatch
@clerk/localizationsPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/reactPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch

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

@dmoerner
dmoerner marked this pull request as ready for review February 25, 2026 20:21
@coderabbitai

coderabbitaiBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d4f717d and e3f2012.

📒 Files selected for processing (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx

📝 Walkthrough

Walkthrough

This PR prevents modification of immutable user attributes. It adds an optional immutable?: boolean to AttributeDataJSON, exposes immutableAttributes: Set<string> on the UserProfile context, and updates AccountPage to derive immutability for username, emails, and phones. UsernameSection, EmailsSection, and PhoneSection now accept immutability-related props to disable creation/deletion or render read‑only UI. Tests for immutable email, phone, and username behaviors are added. A changeset bumps minor package versions and adds a changelog note.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding support for immutable attributes in the UserProfile component across email, phone, and username fields.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ui/src/components/UserProfile/AccountPage.tsx`:
- Line 34: Remove the debug console.log from the render path in AccountPage.tsx:
eliminate the line logging immutableAttributes (console.log('[clerk-ui]
immutableAttributes:', [...immutableAttributes])); instead, if you need
non-production diagnostics, move logging out of the render flow into a
development-only guard (e.g., check process.env.NODE_ENV === 'development') or
use the project's logger utility and log at a non-verbose level outside the
component render (referencing immutableAttributes and the AccountPage component
to locate the code).

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 06a633e and 44fd6f3.

📒 Files selected for processing (10)
  • .changeset/bumpy-wings-travel.md
  • packages/shared/src/types/userSettings.ts
  • packages/ui/src/components/UserProfile/AccountPage.tsx
  • packages/ui/src/components/UserProfile/EmailsSection.tsx
  • packages/ui/src/components/UserProfile/PhoneSection.tsx
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
  • packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx
  • packages/ui/src/contexts/components/UserProfile.ts

Comment threadpackages/ui/src/components/UserProfile/AccountPage.tsx Outdated
@pkg-pr-new

pkg-pr-newBot commented Feb 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7931

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7931

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 6bcb461

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

Looks good! thank you

@dmoerner
dmoerner merged commit 776ee1b into mainMar 5, 2026
39 checks passed
@dmoerner
dmoerner deleted the daniel/user-4766-sdk-support-for-immutable-attributes branch March 5, 2026 19:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@dmoerner@wobsoriano@jacekradko
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); feat(ui): Immutable attributes in UserProfile by dmoerner · Pull Request #7931 · clerk/javascript · GitHub
Skip to content

feat(ui): Immutable attributes in UserProfile - #7931

Merged
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes
Mar 5, 2026
Merged

feat(ui): Immutable attributes in UserProfile#7931
dmoerner merged 5 commits into
mainfrom
daniel/user-4766-sdk-support-for-immutable-attributes

Conversation

@dmoerner

@dmoernerdmoerner commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

Description

When an attribute is marked as immutable in the user settings, do not allow users to add, remove, or edit it. We currently support phone number, email address, and username. Do not show the three dot action menu if there are no available actions.

Sample screenshot with username, phone, and email immutable. Note that there is no add button, nor is there an action menu to remove:

Screenshot 2026-02-25 at 14-46-57 clerk-js Sandbox

Sample screenshot with same settings, but with two emails on account. Now the action menu is rendered, but the only option is to change which email is primary (which we do not block if an attribute is immutable):

Screenshot 2026-02-25 at 14-47-45 clerk-js Sandbox

If a user tries to connect an OAuth account which would add a new email address to their profile, we follow the existing patterns and display the apierror. There are no new UI changes here, as per the design.

Screenshot 2026-02-25 at 14-55-52 clerk-js Sandbox

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features

    • User profile attributes can be marked immutable—creation, deletion, and edit actions are disabled for protected emails, phones, and usernames; immutable usernames render read-only.
  • Tests

    • Added tests verifying immutable behavior for emails, phones, and usernames (visibility and action availability).
  • Chores

    • Bumped minor package versions and added changelog note about preventing modification of immutable attributes.

@vercel

vercelBot commented Feb 25, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentMar 5, 2026 3:17pm

Request Review

@changeset-bot

changeset-botBot commented Feb 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6bcb461

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

This PR includes changesets to release 21 packages
NameType
@clerk/clerk-jsMinor
@clerk/sharedMinor
@clerk/uiMinor
@clerk/chrome-extensionPatch
@clerk/expoPatch
@clerk/agent-toolkitPatch
@clerk/astroPatch
@clerk/backendPatch
@clerk/expo-passkeysPatch
@clerk/expressPatch
@clerk/fastifyPatch
@clerk/honoPatch
@clerk/localizationsPatch
@clerk/mswPatch
@clerk/nextjsPatch
@clerk/nuxtPatch
@clerk/react-routerPatch
@clerk/reactPatch
@clerk/tanstack-react-startPatch
@clerk/testingPatch
@clerk/vuePatch

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

@dmoerner
dmoerner marked this pull request as ready for review February 25, 2026 20:21
@coderabbitai

coderabbitaiBot commented Feb 25, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d4f717d and e3f2012.

📒 Files selected for processing (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/ui/src/components/UserProfile/UsernameSection.tsx

📝 Walkthrough

Walkthrough

This PR prevents modification of immutable user attributes. It adds an optional immutable?: boolean to AttributeDataJSON, exposes immutableAttributes: Set<string> on the UserProfile context, and updates AccountPage to derive immutability for username, emails, and phones. UsernameSection, EmailsSection, and PhoneSection now accept immutability-related props to disable creation/deletion or render read‑only UI. Tests for immutable email, phone, and username behaviors are added. A changeset bumps minor package versions and adds a changelog note.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately summarizes the main change: adding support for immutable attributes in the UserProfile component across email, phone, and username fields.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


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

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/ui/src/components/UserProfile/AccountPage.tsx`:
- Line 34: Remove the debug console.log from the render path in AccountPage.tsx:
eliminate the line logging immutableAttributes (console.log('[clerk-ui]
immutableAttributes:', [...immutableAttributes])); instead, if you need
non-production diagnostics, move logging out of the render flow into a
development-only guard (e.g., check process.env.NODE_ENV === 'development') or
use the project's logger utility and log at a non-verbose level outside the
component render (referencing immutableAttributes and the AccountPage component
to locate the code).

ℹ️ Review info

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

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 06a633e and 44fd6f3.

📒 Files selected for processing (10)
  • .changeset/bumpy-wings-travel.md
  • packages/shared/src/types/userSettings.ts
  • packages/ui/src/components/UserProfile/AccountPage.tsx
  • packages/ui/src/components/UserProfile/EmailsSection.tsx
  • packages/ui/src/components/UserProfile/PhoneSection.tsx
  • packages/ui/src/components/UserProfile/UsernameSection.tsx
  • packages/ui/src/components/UserProfile/__tests__/EmailsSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/PhoneSection.test.tsx
  • packages/ui/src/components/UserProfile/__tests__/UsernameSection.test.tsx
  • packages/ui/src/contexts/components/UserProfile.ts

Comment threadpackages/ui/src/components/UserProfile/AccountPage.tsx Outdated
@pkg-pr-new

pkg-pr-newBot commented Feb 25, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7931

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7931

@clerk/expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/hono

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/react

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

@clerk/react-router

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

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/ui

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

@clerk/upgrade

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

@clerk/vue

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

commit: 6bcb461

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

Looks good! thank you

@dmoerner
dmoerner merged commit 776ee1b into mainMar 5, 2026
39 checks passed
@dmoerner
dmoerner deleted the daniel/user-4766-sdk-support-for-immutable-attributes branch March 5, 2026 19:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@dmoerner@wobsoriano@jacekradko