--- title: "Document Views" aliases: [document-views, payload-document-tabs, payload-edit-view-config] tags: [payloadcms, admin, custom-components, views, tabs] sources: [raw/custom-components__document-views.md] created: 2026-05-15 updated: 2026-05-15 --- ## Overview Document Views are the set of views that together represent a single [[wiki/payloadcms/collection-config|Collection]] or [[wiki/payloadcms/globals-config|Global]] document in the Payload admin panel. All Document Views live under `/collections/:collectionSlug/:id` or `/globals/:globalSlug`. Customized via `admin.components.views.edit[key]` in Collection or Global config. --- ## Built-in View Keys | Key | Description | Tab label | |---------------|-------------------------------------------------------------------|-----------------| | `root` | Overrides the **entire** document layout (no controls, no tabs) | — | | `default` | Primary edit view — where content is edited | "Edit" | | `versions` | Version history list | "Versions" | | `version` | Single version view | "Version" | | `api` | REST API JSON response for the document | "API" | | `livePreview` | Live Preview interface | "Live Preview" | | `[key]` | Any custom key → adds a new Document View | custom tab | --- ## Config Pattern ```ts import type { CollectionConfig } from 'payload' export const MyCollection: CollectionConfig = { slug: 'my-collection', admin: { components: { views: { edit: { default: { Component: '/path/to/MyCustomEditView', }, myCustomView: { Component: '/path/to/MyCustomView', path: '/my-custom-tab', tab: { label: 'My Tab', href: '/my-custom-tab', order: '100', }, }, }, }, }, }, } ``` --- ## Document Root - Mounted at the top-level document route - **Completely replaces** the document layout: no title, no tabs, no nested views - You must render all controls yourself - Use `edit.default` instead if you only want to replace the Edit View ```ts edit: { root: { Component: '/path/to/MyCustomRootComponent', }, } ``` --- ## Document Tabs Each Document View can expose a navigation tab. Tab options: | Property | Description | |-------------|------------------------------------------------------------------| | `label` | Display label in the tab bar | | `href` | URL when clicked (defaults to the view's `path`) | | `order` | Numeric order in the tab bar; works on built-in and custom tabs | | `Component` | Replace the entire tab with a custom Server or Client component | ### Custom Tab Component Examples **Server Component:** ```tsx import type { DocumentTabServerProps } from 'payload' import { Link } from '@payloadcms/ui' export function MyTab(props: DocumentTabServerProps) { return Custom Tab (Server) } ``` **Client Component:** ```tsx 'use client' import type { DocumentTabClientProps } from 'payload' import { Link } from '@payloadcms/ui' export function MyTab(props: DocumentTabClientProps) { return Custom Tab (Client) } ``` --- ## Key Takeaways - All document views share the same layout; tabs are optional per view - `root` key = nuclear option: takes over everything, no built-in controls rendered - `default` key = safe replacement of just the Edit view (tabs/controls remain) - Custom views use `[key]: { Component, path, tab }` pattern - Tab `order` works on both built-in and custom tabs — use it to control position - Applies equally to Collections and Globals - For building the view components themselves, see [[wiki/payloadcms/custom-views|Custom Views]] - See [[wiki/payloadcms/custom-components|Custom Components]] for the full slot system --- ## Sources - `raw/custom-components__document-views.md` - https://payloadcms.com/docs/custom-components/document-views