Use cases
One platform, every kind of page
From a single landing page to a global site in forty languages, Root scales with your content.
Marketing sites
Give marketers a library of on-brand modules and let them launch campaigns without a ticket.
See templatescollections/Pages.schema.ts
export default schema.collection({ name: 'Pages', url: '/[...slug]', preview: {title: 'meta.title'}, fields: [ // Editors stack modules from the design system. schema.array({ id: 'modules', of: schema.oneOf({types: schema.glob('/templates/*/*.schema.ts')}), }), ],});
Global launches
Translate every field, preview each locale and publish all markets together with a scheduled release.
Learn about localizationroot.config.ts
export default defineConfig({ i18n: { locales: ['en', 'de', 'fr', 'ja', 'es-419'], // /de/pricing/, /ja/pricing/, … urlFormat: '/{locale}/{path}', },});
Content-driven apps
Fetch published content from any route or API. Render statically, or on request with SSR.
Read the docsroutes/blog/[slug].tsx
export async function getStaticProps(ctx) { const cms = new RootCMSClient(ctx.rootConfig); // Published docs only; drafts show in preview. const post = await cms.getDoc('BlogPosts', ctx.params.slug, {mode: 'published'}); return {props: {post}};}