feat(ui): Expose profile sub components#8654
Conversation
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
!snapshot |
This comment has been minimized.
This comment has been minimized.
|
!snapshot |
This comment has been minimized.
This comment has been minimized.
|
!snapshot |
This comment has been minimized.
This comment has been minimized.
|
!snapshot |
This comment has been minimized.
This comment has been minimized.
|
!snapshot |
|
Hey @alexcarpenter - the snapshot version command generated the following package versions:
Tip: Use the snippet copy button below to quickly install the required packages. npm i @clerk/astro@3.3.0-snapshot.v20260527161602 --save-exact
npm i @clerk/backend@3.4.12-snapshot.v20260527161602 --save-exact
npm i @clerk/chrome-extension@3.1.29-snapshot.v20260527161602 --save-exact
npm i @clerk/clerk-js@6.12.0-snapshot.v20260527161602 --save-exact
npm i @clerk/dev-cli@0.1.1-snapshot.v20260527161602 --save-exact
npm i @clerk/expo@3.2.15-snapshot.v20260527161602 --save-exact
npm i @clerk/expo-passkeys@1.0.28-snapshot.v20260527161602 --save-exact
npm i @clerk/express@2.1.20-snapshot.v20260527161602 --save-exact
npm i @clerk/fastify@3.1.30-snapshot.v20260527161602 --save-exact
npm i @clerk/hono@0.1.30-snapshot.v20260527161602 --save-exact
npm i @clerk/localizations@4.6.7-snapshot.v20260527161602 --save-exact
npm i @clerk/msw@0.0.28-snapshot.v20260527161602 --save-exact
npm i @clerk/nextjs@7.4.0-snapshot.v20260527161602 --save-exact
npm i @clerk/nuxt@2.5.0-snapshot.v20260527161602 --save-exact
npm i @clerk/react@6.7.0-snapshot.v20260527161602 --save-exact
npm i @clerk/react-router@3.3.0-snapshot.v20260527161602 --save-exact
npm i @clerk/shared@4.13.0-snapshot.v20260527161602 --save-exact
npm i @clerk/tanstack-react-start@1.3.0-snapshot.v20260527161602 --save-exact
npm i @clerk/testing@2.0.32-snapshot.v20260527161602 --save-exact
npm i @clerk/ui@1.13.0-snapshot.v20260527161602 --save-exact
npm i @clerk/upgrade@2.0.3-snapshot.v20260527161602 --save-exact
npm i @clerk/vue@2.3.0-snapshot.v20260527161602 --save-exact |
e47d56e to
4c41b6b
Compare
Add 'use client' to the experimental entrypoint and move the document.querySelector call in StyleCacheProvider from module scope into the useMemo to avoid crashes during server-side rendering. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Annotate every exported composed component with a ReactNode return type so the generated .d.ts files are compatible with both React 18 and React 19 consumers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Export UserProfile and OrganizationProfile as function components with static properties (via Object.assign) instead of plain objects. This matches the existing UserButton pattern and is compatible with React Server Components client references, which support property access on function exports but not on plain object exports. The provider is now the root component itself — consumers write <UserProfile> instead of <UserProfile.Provider>. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c6528a9 to
3a89eb3
Compare
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The spy returned undefined in jsdom, causing autoAnimate's MutationObserver callback to crash on .addEventListener. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
Exposes
UserProfileandOrganizationProfileas composable sub-components from@clerk/ui/experimental. Lets consumers render individual profile sections (Account, Security, Members, Billing, etc.) outside the full modal/page flow.Approach
composed/directory — each profile gets a Provider that wires up the required context tree (appearance, environment, module manager, routing, flow metadata) so individual section components render standalone.moduleManagerStore— module-level get/set because composed components mount outside the normal component tree and can't inheritModuleManagervia context fromClerkUI.init().stubRouter— minimalRouteContextimplementation delegating toclerk.navigate. Child components calluseRouter()internally but composed pages don't do real routing.StyleCacheProvider— moveddocument.querySelectorfrom module scope into the component body; import-time access breaks SSR.useSafeState— resetisMountedReftotruein effect body; StrictMode cleanup between double-invocation left it permanentlyfalse.Animated— guard against StrictMode double-mount leaving animation refs stale.@clerk/ui/experimentalwith'use client'directive.API
Sub-components available:
Account,Security,Billing,APIKeys(user);General,Members,Billing,APIKeys,ConfigureSSO(org). Fine-grained wrappers also exported (e.g.AccountProfile,SecurityPasskeys).Test plan
🤖 Generated with Claude Code