When you want a “one-of-a-kind” data entry, such as a “Settings” page or maybe a very specific set of fields for the “Homepage” of a website, you will want to use a singleton.


Here's how you'd define a settings singleton:

// keystatic.config.ts
import { config, singleton } from '@keystatic/core';

export default config({
  // ...
  singletons: {
    settings: singleton({
      label: 'Settings',
      schema: {}


Entry layout

entryLayout — change the layout of the Admin UI for the singleton data entry.

Learn more on the Entry Layout page.


format — provides options around the data format of your singleton.

Learn more on the Format Options page.


label — defines the name of the singleton. This is used in the Admin UI.


path — allows you to you specify where to store the singleton data:

path: 'custom/content/path/settings'

Learn more about the path option on the Content Organisation page.

Preview URL

previewURL — used to configure Real-time Previews of your content.


schema — defines the fields that the singleton should have.

Type signature

Find the latest version of the Singleton type signature at: