vercel/next.js · error · Error

Invalid i18n.domains values

Error message

Invalid i18n.domains values:
${invalidDomainItems.map((item: any) => JSON.stringify(item)).join('
')}

domains value must follow format { domain: 'example.fr', defaultLocale: 'fr', locales: ['fr'] }.
See more info here: https://nextjs.org/docs/messages/invalid-i18n-config

What it means

Error "Invalid i18n.domains values: ${invalidDomainItems.map((item: any) => JSON.stringify(item)).join(' ')} domains value must follow format { domain: 'example.fr', defaultLocale: 'fr', locales: ['fr'] }. See more info here: https://nextjs.org/docs/messages/invalid-i18n-config" thrown in vercel/next.js.

Solutions

  1. Fix the listed i18n.domains entries to match { domain, defaultLocale, locales? }.
Defensive patterns

Strategy: validation

When it happens

Trigger: Entries in i18n.domains do not match the required domain object format.

Common situations: Domain entries missing domain/defaultLocale fields in next.config i18n.


AI-assisted analysis of vercel/next.js@34433fd12e (2026-08-19). Data as JSON: /api/errors/c90e6c5d4f5a7d07. Report an issue: GitHub.

Appendix: source

Thrown at packages/next/src/server/config.ts:1352

            for (const domainItem of i18n.domains || []) {
              if (domainItem === item) continue
              if (domainItem.locales && domainItem.locales.includes(locale)) {
                console.warn(
                  `Both ${item.domain} and ${domainItem.domain} configured the locale (${locale}) but only one can. Remove it from one i18n.domains config to continue`
                )
                hasInvalidLocale = true
                break
              }
            }
          }
        }

        return hasInvalidLocale
      })

      if (invalidDomainItems.length > 0) {
        throw new Error(
          `Invalid i18n.domains values:\n${invalidDomainItems
            .map((item: any) => JSON.stringify(item))
            .join(
              '\n'
            )}\n\ndomains value must follow format { domain: 'example.fr', defaultLocale: 'fr', locales: ['fr'] }.\nSee more info here: https://nextjs.org/docs/messages/invalid-i18n-config`
        )
      }
    }

    if (!Array.isArray(i18n.locales)) {
      throw new Error(
        `Specified i18n.locales must be an array of locale strings e.g. ["en-US", "nl-NL"] received ${typeof i18n.locales}.\nSee more info here: https://nextjs.org/docs/messages/invalid-i18n-config`
      )
    }

    const invalidLocales = i18n.locales.filter(
      (locale: any) => typeof locale !== 'string'
    )

View on GitHub (pinned to 34433fd12e)