Skip to content

Fix content collection validation errors showing raw JSON#15981

Merged
Princesseuh merged 5 commits intowithastro:mainfrom
moktamd:fix/zod-v4-validation-error-format
Mar 27, 2026
Merged

Fix content collection validation errors showing raw JSON#15981
Princesseuh merged 5 commits intowithastro:mainfrom
moktamd:fix/zod-v4-validation-error-format

Conversation

@moktamd
Copy link
Copy Markdown
Contributor

@moktamd moktamd commented Mar 18, 2026

Fixes #15976

Since the Zod v3 → v4 migration (#14956), $ZodError.message returns a JSON-stringified array instead of a human-readable string. The three content error definitions in errors-data.ts used error.message directly, producing output like:

  **: [
  {
    "expected": "object",
    "code": "invalid_type",
    ...
  }
]

This iterates over error.issues instead, producing:

  **label**: Required

This matches the pattern already used in content/loaders/errors.ts and content/utils.ts.

Since the Zod v3 → v4 migration, $ZodError.message returns a
JSON-stringified array instead of a human-readable string. Format
validation errors by iterating over error.issues, matching the
pattern already used in content/loaders/errors.ts.
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 18, 2026

🦋 Changeset detected

Latest commit: deba866

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions bot added pkg: astro Related to the core `astro` package (scope) docs pr labels Mar 18, 2026
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Mar 18, 2026

Merging this PR will not alter performance

✅ 18 untouched benchmarks


Comparing moktamd:fix/zod-v4-validation-error-format (deba866) with main (999c875)1

Open in CodSpeed

Footnotes

  1. No successful run was found on main (f649ae0) during the generation of this report, so 999c875 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

Copy link
Copy Markdown
Member

@Princesseuh Princesseuh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, thank you!

@Princesseuh Princesseuh merged commit a60cbb6 into withastro:main Mar 27, 2026
26 checks passed
@astrobot-houston astrobot-houston mentioned this pull request Mar 26, 2026
dadezzz pushed a commit to dadezzz/ice-notes that referenced this pull request Apr 5, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [astro](https://astro.build) ([source](https://github.com/withastro/astro/tree/HEAD/packages/astro)) | [`6.1.1` → `6.1.3`](https://renovatebot.com/diffs/npm/astro/6.1.1/6.1.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/astro/6.1.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/astro/6.1.1/6.1.3?slim=true) |

---

### Release Notes

<details>
<summary>withastro/astro (astro)</summary>

### [`v6.1.3`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#613)

[Compare Source](https://github.com/withastro/astro/compare/astro@6.1.2...astro@6.1.3)

##### Patch Changes

- [#&#8203;16161](withastro/astro#16161) [`b51f297`](withastro/astro@b51f297) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes a dev rendering issue with the Cloudflare adapter where head metadata could be missing and dev CSS/scripts could be injected in the wrong place

- [#&#8203;16110](withastro/astro#16110) [`de669f0`](withastro/astro@de669f0) Thanks [@&#8203;tmimmanuel](https://github.com/tmimmanuel)! - Fixes skew protection query parameters not being appended to inter-chunk JavaScript imports in client bundles, which could cause version mismatches during rolling deployments on Vercel

- [#&#8203;16162](withastro/astro#16162) [`a0a49e9`](withastro/astro@a0a49e9) Thanks [@&#8203;rururux](https://github.com/rururux)! - Fixes an issue where HMR would not trigger when modifying files while using [@&#8203;astrojs/cloudflare](https://github.com/astrojs/cloudflare) with prerenderEnvironment: 'node' enabled.

- [#&#8203;16142](withastro/astro#16142) [`7454854`](withastro/astro@7454854) Thanks [@&#8203;rururux](https://github.com/rururux)! - Fixes HTML content being incorrectly escaped as plain text when rendering a MDX component using the `AstroContainer` APIs.

- [#&#8203;16116](withastro/astro#16116) [`12602a9`](withastro/astro@12602a9) Thanks [@&#8203;riderx](https://github.com/riderx)! - Fixes a bug where page-level CSS could leak between unrelated pages when traversing style parents across top-level route boundaries

- [#&#8203;16178](withastro/astro#16178) [`a7e7567`](withastro/astro@a7e7567) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes SSR builds failing with "No matching renderer found" when a project only has injected routes and no `src/pages/` directory

### [`v6.1.2`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#612)

[Compare Source](https://github.com/withastro/astro/compare/astro@6.1.1...astro@6.1.2)

##### Patch Changes

- [#&#8203;16104](withastro/astro#16104) [`47a394d`](withastro/astro@47a394d) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes `astro preview` ignoring `vite.preview.allowedHosts` set in `astro.config.mjs`

- [#&#8203;16047](withastro/astro#16047) [`711f837`](withastro/astro@711f837) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes catch-all routes incorrectly intercepting requests for static assets when using the `@astrojs/node` adapter in middleware mode.

- [#&#8203;15981](withastro/astro#15981) [`a60cbb6`](withastro/astro@a60cbb6) Thanks [@&#8203;moktamd](https://github.com/moktamd)! - Fix Zod v4 validation error formatting to show human-readable messages instead of raw JSON

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My45OS4xIiwidXBkYXRlZEluVmVyIjoiNDMuOTkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: Renovate Bot <renovate@zarantonello.dev>
Co-committed-by: Renovate Bot <renovate@zarantonello.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs pr pkg: astro Related to the core `astro` package (scope)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Content collection validation errors in v6 are no longer human-readable

2 participants