Tina Docs
Introduction
Core Concepts
Querying Content
Editing
Customizing Tina
Going To Production
Drafts
Guides
Further Reference

Draft Fields


Adding a "Draft Field" is one approach to handling "drafts" in TinaCMS

What is a "Draft Field"?

"Draft Fields" are just simply fields that can be used to indicate whether a document is a draft or not. There is nothing special about draft fields, are they are not treated any differently then any other boolean field.

Setting up a draft field

The "draft" field can be added to the top level fields of a collection.

const schema = defineSchema({
collections: [
{
name: 'post',
label: 'Post',
path: 'content/posts',
fields: [
{
name: 'draft',
label: 'Draft',
type: 'boolean',
required: true,
description: 'If this is checked the post will not be published',
},
// ... other fields
],
},
],
})
Note: It's usually a good practice to make draft fields required. This may require adding the draft field to your existing documents

Excluding drafts from your production queries

You can add a filter to filter out draft documents from your queries:

// getting production posts
const req = await client.queries.postConnection({
filter: { draft: { eq: false } },
})
// getting all posts
const req = await client.queries.postConnection()

Read more about querying data here.

If you're using a Draft field with a static site generator like Hugo, any documents with "draft: true" will be omitted from your production site out-of-the-box.

Caveats: