Back to Twenty

Overview

packages/twenty-docs/developers/extend/apps/layout/overview.mdx

2.4.13.7 KB
Original Source

A Twenty app's layout layer is everything the user sees: where the app surfaces in the sidebar, which list views it ships, how its record detail pages are arranged, and which custom React components render inside those pages.

text
   Sidebar               Record list            Record detail page
   ───────               ───────────            ──────────────────
   [📋 My View]    ────▶ ┌──────────┐          ┌─────────────────────┐
   [📋 Drafts ]          │ Companies│          │ Tabs: [Overview ]   │
   [📋 Inbox  ]          │ ──────── │          │       [Notes    ]   │
        ▲                │  Apple   │          │       [Hello    ]◀──── definePageLayoutTab
        │                │  Acme    │          │                     │   adds a tab...
        └ defineNavi-    │  …       │          │  ┌────────────────┐ │
          gationMenu-    └────▲─────┘          │  │                │ │
          Item points         │                │  │   React UI     │◀── …with a
          to a defineView     │                │  │  (sandboxed in │ │   defineFrontComponent
                              └ defineView     │  │   a Worker)    │ │   widget inside
                                picks columns  │  └────────────────┘ │
                                and filters    └─────────────────────┘

In this section

<CardGroup cols={2}> <Card title="Views" icon="list" href="/developers/extend/apps/layout/views"> `defineView` — saved list configurations: visible columns, filters, groups. </Card> <Card title="Navigation Menu Items" icon="bars" href="/developers/extend/apps/layout/navigation-menu-items"> `defineNavigationMenuItem` — sidebar entries pointing at views or external URLs. </Card> <Card title="Page Layouts" icon="table-columns" href="/developers/extend/apps/layout/page-layouts"> `definePageLayout` and `definePageLayoutTab` — tabs and widgets on a record's detail page. </Card> <Card title="Front Components" icon="window-maximize" href="/developers/extend/apps/layout/front-components"> `defineFrontComponent` — sandboxed React components that render inside Twenty. </Card> <Card title="Command Menu Items" icon="terminal" href="/developers/extend/apps/layout/command-menu-items"> `defineCommandMenuItem` — register front components as Cmd+K entries and quick actions. </Card> </CardGroup>

Where the app surfaces

SurfaceWhat it controlsEntity
SidebarA custom entry linking to a saved view or external URLdefineNavigationMenuItem
Record listA saved configuration for an object — visible columns, order, filters, groupsdefineView
Record detail pageThe tabs and widgets on a record page (your own object's, or a standard one)definePageLayout, definePageLayoutTab
Inside any of the aboveA custom React widget — buttons, forms, dashboards, integrationsdefineFrontComponent
Command menu (Cmd+K)A pinned quick action or hidden commanddefineCommandMenuItem

Front components run inside an isolated Web Worker using Remote DOM — they render natively in the page (not inside an iframe), but cannot reach the host page or DOM directly. Communication with Twenty happens through a message-passing host API.