medusajs/medusa · warning

'zone' property at the ${j} index of the 'forms' property is

Error message

'zone' property at the ${j} index of the 'forms' property is not a valid custom field form zone for the '${model}' model. Received: ${zone}.

What it means

Even with a string literal zone, the plugin validates it with isValidCustomFieldFormZone and checks the resulting config path (getFormEntryConfigPath) for the model. An unrecognized zone or missing path triggers this warning, showing the received value, and the entry is skipped.

Source

Thrown at packages/admin/admin-vite-plugin/src/custom-fields/generate-custom-field-forms.ts:563

      return
    }

    if (!isStringLiteral(zoneProperty.value)) {
      logger.warn(
        `'zone' property at the ${j} index of the 'forms' property is not a string literal (e.g. 'general' or 'attributes').`,
        { file }
      )
      return
    }

    const zone = zoneProperty.value.value
    const fullPath = getFormEntryConfigPath(model, zone)

    if (
      !isValidCustomFieldFormZone(zone) ||
      !isValidCustomFieldFormConfigPath(fullPath)
    ) {
      logger.warn(
        `'zone' property at the ${j} index of the 'forms' property is not a valid custom field form zone for the '${model}' model. Received: ${zone}.`
      )
      return
    }

    const fieldsObject = element.properties.find(
      (p) => isObjectProperty(p) && isIdentifier(p.key, { name: "fields" })
    ) as ObjectProperty | undefined

    if (!fieldsObject) {
      logger.warn(
        `'fields' property is missing from the ${j} entry in the 'forms' property in ${file}.`,
        { file }
      )
      return
    }

    const fields: CustomFieldConfigField[] = []

View on GitHub (pinned to 5e06e544a2)

Solutions

  1. Use a documented zone for the model, typically 'general' or 'attributes'
  2. Verify available zones in your Medusa version's admin custom-fields docs
  3. Fix typos in the zone string

Example fix

// before
forms: [{ zone: 'metadata', fields: { ... } }]
// after
forms: [{ zone: 'general', fields: { ... } }]
Defensive patterns

Strategy: validation

Validate before calling

import { isValidCustomFieldFormZone } from '@medusajs/admin-shared'
if (!isValidCustomFieldFormZone(f.zone)) {
  throw new Error(`zone '${f.zone}' is not supported for model '${model}'`)
}

Type guard

const isKnownZone = (z: string) => isValidCustomFieldFormZone(z)

Prevention

When it happens

Trigger: zone: 'metadata' or another unsupported zone name for the model, or a zone whose generated config path does not exist in that Medusa version.

Common situations: Typos, zones valid for a different model, or version drift after upgrading Medusa when zone names changed.

Related errors


AI-assisted analysis of medusajs/medusa@5e06e544a2 (2026-08-27). Data as JSON: /api/errors/22a8e0d650502255. Report an issue: GitHub.