Browse documentation

Roles & permissions

Roles decide what each user can see and do — per table, per row, and per view. The rules are enforced server-side, so every surface (builder preview, published app, public links) obeys the same truth.

How roles work

  • Each role grants per-table permissions: create, read, update, delete, plus optional CSV export and import rights.
  • A per-table row filter narrows which rows the role sees: [Owner] = USEREMAIL()turns any table into "my records only".
  • Tables a role has no entry for default to read-only — least privilege, not silent full access.
  • Every user gets a role; the default role catches anyone unassigned.

Starter roles

New apps come with three editable starter roles: Admin (everything), Editor (everything but delete), and Viewer (read-only, no export). Rename, adjust, or replace them freely.

Beyond tables

  • Views, blocks, and actions can each be restricted to specific roles.
  • Fields can be hidden app-wide, read-only, or shown conditionally via a per-field Visible if.
  • The builder's preview-as-user renders the app as any real user — the fastest way to verify a permission setup.

Drive users from your own data

Connect a table you already have — a Members or Employees table — as the app's user source, and rules assign roles automatically from your data. See Users.