Next.js Image Component - Metadata - Dimensions
Based on the error message you're seeing, the issue is that "dimensions" and "image" are not valid values for the metadata options array in your image schema.
According to the Sanity image metadata documentation, here's what's happening:
Dimensions are ALWAYS included automatically - you don't need to (and shouldn't) specify them in the metadata array. The dimensions field cannot be disabled and is available by default on all image assets.
The valid values for the metadata array are only:
"exif""location""lqip""blurhash""palette"
To fix your issue, change your schema from:
options: {
metadata: ["dimensions", "image"]
}To either remove the options entirely (dimensions will still be available):
// dimensions are available by default, no options needed
type: 'image'Or specify only valid metadata types you want:
options: {
metadata: ["blurhash", "lqip", "palette"]
}To get dimensions for Next.js Image component, you can extract them from the asset reference ID using this pattern (as shown in this answer):
const pattern = /^image-([a-f\d]+)-(\d+x\d+)-(\w+)$/
const decodeAssetId = (id) => {
const [, assetId, dimensions, format] = pattern.exec(id)
const [width, height] = dimensions.split("x").map(v => parseInt(v, 10))
return { assetId, dimensions: { width, height }, format }
}
// Usage:
const { dimensions } = decodeAssetId(image.asset._ref)
// dimensions.width and dimensions.height are now availableAfter fixing your schema, you should be able to upload images again without errors!
Sanity – Build the way you think, not the way your CMS thinks
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.