🔖 Feature description
In cloud and enterprise self-hosted (Better Auth) modes, the dashboard's side-nav exposes an OrganizationSwitcher that lets a signed-in user move between organizations they belong to (provided by Clerk /
Better Auth).
Its missing for community self-hosted dashboard which was existed feature in V1 version.
In community self-hosted mode (VITE_SELF_HOSTED=true && VITE_NOVU_ENTERPRISE=false), the dashboard's @clerk/react import is aliased to a custom shim at apps/dashboard/src/utils/self-hosted/index.tsx.
That shim's useClerk() / useOrganizationList() implementations are stubs (e.g. setActive logs a warning, organizationList returns only the current org),
so the side-nav offers no way to switch organizations even though the underlying API endpoints (GET /v1/organizations, POST /v1/auth/organizations/:id/switch) exist on the API service.
🎤 Why is this feature needed ?
This is a usability gap: community self-hosted users who manage multiple Novu organizations on the same instance have to sign out and sign back in (or manipulate the JWT in localStorage) to change context.
This is not newly expected feature but it was existed in V1 web UI version which making Community users to kind of restriction to upgrade to latest Novu
✌️ How do you aim to achieve this?
Extend the community self-hosted shim's useClerk / useOrganizationList to consume the existing API endpoints:
- GET /v1/organizations → populate organizationList / userMemberships via react-query
- POST /v1/auth/organizations/:id/switch → exchange JWTs in setActive({ organization }), then reload to re-bootstrap context
- POST /v1/organizations → back createOrganization({ name })
🔄️ Additional Information
Reproduction steps (steps to observe the missing functionality):
- Run a Novu API service in community self-hosted mode with a user account that belongs to ≥ 2 organizations.
- Build the dashboard with VITE_SELF_HOSTED=true && VITE_NOVU_ENTERPRISE=false.
- Sign in.
- Open the side-nav organization dropdown.
Expected behavior:
- The side-nav organization dropdown lists all organizations the signed-in user belongs to.
- Selecting a different organization re-bootstraps the dashboard's data scopes
(workflows, subscribers, etc.) under the new org.
- A "Create organization" action is available so a user can spin up a new workspace from the same UI.
Actual Behavior:
- The side-nav shows only the currently-active organization. There is no list of other orgs.
👀 Have you spent some time to check if this feature request has been raised before?
🏢 Have you read the Code of Conduct?
Are you willing to submit PR?
Yes I am willing to submit a PR!
🔖 Feature description
In cloud and enterprise self-hosted (Better Auth) modes, the dashboard's side-nav exposes an OrganizationSwitcher that lets a signed-in user move between organizations they belong to (provided by Clerk /
Better Auth).
Its missing for community self-hosted dashboard which was existed feature in V1 version.
In community self-hosted mode (VITE_SELF_HOSTED=true && VITE_NOVU_ENTERPRISE=false), the dashboard's @clerk/react import is aliased to a custom shim at apps/dashboard/src/utils/self-hosted/index.tsx.
That shim's useClerk() / useOrganizationList() implementations are stubs (e.g. setActive logs a warning, organizationList returns only the current org),
so the side-nav offers no way to switch organizations even though the underlying API endpoints (GET /v1/organizations, POST /v1/auth/organizations/:id/switch) exist on the API service.
🎤 Why is this feature needed ?
This is a usability gap: community self-hosted users who manage multiple Novu organizations on the same instance have to sign out and sign back in (or manipulate the JWT in localStorage) to change context.
This is not newly expected feature but it was existed in V1 web UI version which making Community users to kind of restriction to upgrade to latest Novu
✌️ How do you aim to achieve this?
Extend the community self-hosted shim's useClerk / useOrganizationList to consume the existing API endpoints:
🔄️ Additional Information
Reproduction steps (steps to observe the missing functionality):
Expected behavior:
(workflows, subscribers, etc.) under the new org.
Actual Behavior:
👀 Have you spent some time to check if this feature request has been raised before?
🏢 Have you read the Code of Conduct?
Are you willing to submit PR?
Yes I am willing to submit a PR!