Build for teams, not just users
Workspaces out of the box·Invite by email — join with a click·Roles that actually gate the work
A workspace model that fits any B2B product
Drop-in switcher·Invite from your server·Render members in your UI
tsx
1import { SelectedTeamSwitcher } from "@stackframe/stack";2 3export default function Layout({ children }) {4 // Picks the active workspace and remembers it for next time.5 return (6 <>7 <header><SelectedTeamSwitcher /></header>8 {children}9 </>10 );11}Everything you need to ship B2B
Workspaces users understand·Invites that don't get stuck·Roles that hold up under audit
Workspace/Switcher
AC
Acme Co24
Active workspace
Acme Co
24 members · /team/acme
Projects12
Pending invites3
Open issues47
01·Workspaces
One switcher. Every workspace your user belongs to.
- A drop-in switcher that remembers the active workspace across visits
- Deep-link straight into a workspace — or keep one global default
- Different display name and avatar per workspace for the same person
Workspace switcherPer-workspace profilePersistent selection
Acme Co/Invite teammate
Send an invite
email@company.com
Magic link emailed · join with one click
Maya's inbox
Waiting for an invite…
Team members3 members
AL
Ada LovelaceTP
Theo ParkRS
Riya Shah02·Invites
Invite by email. They join with one click.
- Send a branded magic-link invite from your server
- New users sign up and land inside the workspace automatically
- See who's been invited, who's pending, and who's joined
Magic-link invitesAuto sign-upPending list
Acme Co/Roles
TP
Theo Park
theo@acme.com
Member
Admin
System permissions1 / 6 granted
$invite_members
Invite teammates
$read_members
View members
$update_team
Update workspace
$remove_members
Remove members
$manage_api_keys
Manage API keys
$delete_team
Delete workspace
user.usePermission(team, "$invite_members")
blockedInvite teammate
Action gated · requires permission
03·Roles & permissions
Roles you define. Gates that actually hold.
- Six built-in permissions for the basics — invite, remove, update, delete
- Compose your own roles in the dashboard and nest the built-ins inside
- Check a permission once on the client and again on the server — same answer
Built-in permissionsCustom rolesServer-checked
Ready to ship for teams?
Workspaces, invites, and roles — without the months it usually takes.
Get started for freeExplore other apps
View allFraud Protection
Sign-up rules, bot detection, domain & country filters
Session Replays
Reconstructed user sessions with privacy controls
Payments
Payment processing and subscription management
Data Vault
Secure storage for sensitive user data
Authentication
User sign-in and account management
Analytics
View and explore analytics data