Loving Tina? us on GitHub12.5k

We use cookies to improve your experience. By continuing, you agree to our use of cookies. Learn More

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