Docs

Learn

v.Latest
Documentation
Config Reference
Table of Contents

The result of the defineConfig function when exported from tina/config.{ts,tsx,js,jsx} defines your TinaCMS setup.

Note that it must be the default export.

The location for the config file was previously at .tina/config.{ts,tsx,js,jsx}

Options

REQUIRED
schema
Schema

Defines your content model.

branch
string | null

The base branch to pull content from. Required for TinaCloud.


client​Id
string | null

TheclientId from TinaCloud. Required for TinaCloud.


token
string | null

Your read only token from TinaCloud. Required for TinaCloud.


local​Content​Path
string

The relative path of a seperate content repo in local development.


auth​Provider
AuthProvider
EXPERIMENTAL
content​Api​Url​Override
string

Override the default content API URL.

All properties marked as REQUIRED must be specified for the field to work properly.

Examples

Vercel and TinaCloud Configuration

This is a standard configuration using TinaCloud to host your datalayer, and the built-in Tina media and search capabilities.

const branch =
process.env.NEXT_PUBLIC_TINA_BRANCH ||
process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF ||
process.env.HEAD ||
'main';
export default defineConfig({
branch,
// generated by TinaCloud
token: '<Your Read Only Token>',
// generated by TinaCloud
clientId: '<Your Client ID>',
build: {
publicFolder: 'public',
outputFolder: 'admin',
},
schema: {
//Content model definition here...
},
ui: {
previewUrl: (context) => {
// Use Vercel preview deployments based on branch names
return { url: `https://my-app-git-${context.branch}.vercel.app` };
},
},
media: {
tina: {
publicFolder: 'public',
mediaRoot: 'uploads',
},
},
search: {
tina: {
indexerToken: process.env.TINA_SEARCH_TOKEN,
},
},
});

Cloudinary Media Store

Tina supports both Git-backed media and specific external media providers:

export default defineConfig({
// ... other config options
media: {
loadCustomStore: async () => {
const pack = await import('next-tinacms-cloudinary');
return pack.TinaCloudCloudinaryMediaStore;
},
accept: 'image/*',
},
});

TinaCloud Search Options

Tina provides built-in search capabilities through TinaCloud.

// Tina Cloud search
export default defineConfig({
// ... other config options
search: {
tina: {
indexerToken: process.env.TINA_SEARCH_TOKEN,
stopwordLanguages: ['eng', 'fra'],
tokenSplitRegex: '/[p{L}d_]+/',
},
},
});

Imports with Typescript Path Aliases

TinaCMS supports TypeScript path aliases in the tina/config.{ts,js,tsx} file and collections.

Ensure that tsconfig.json exists at the root of your project. Define your aliases in the compilerOptions section.

//tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}

You can now import utilities or other modules using the aliases.

import { someUtility } from '@/lib/utils';
export default defineConfig({
//...
});
Last Edited: March 26, 2025

Join the Herd!

Become part of our coding comunity and stay updated with the latest tips and news.