Skip to content

fix(content): warn on duplicate Markdown content entry IDs#14901

Merged
florian-lefebvre merged 4 commits intowithastro:mainfrom
Darknab:fix-duplicate-slug-warning
Dec 5, 2025
Merged

fix(content): warn on duplicate Markdown content entry IDs#14901
florian-lefebvre merged 4 commits intowithastro:mainfrom
Darknab:fix-duplicate-slug-warning

Conversation

@Darknab
Copy link
Contributor

@Darknab Darknab commented Nov 25, 2025

Fixes #14846

Changes

  • Fixes a bug in content collections where duplicate slug values would silently override each other.
  • Adds a warning when a duplicate slug is detected, preventing hard-to-debug content conflicts.
  • Ensures the first entry isn’t overridden unintentionally.
  • A changesset has been added.

Testing

  • Tested manually using the @example/blog project.
  • Created two markdown files with the same slug and confirmed:
    • The warning is printed.
    • The later file does not silently override the first one.
  • No automated test added because this part of the codebase is tightly coupled to the file loader and manual verification was more reliable.

Docs

/cc @withastro/maintainers-docs for feedback!

I can add a short note mentioning that creating duplicate slugs will now trigger a warning if the maintainers feel it’s useful.

@changeset-bot
Copy link

changeset-bot bot commented Nov 25, 2025

🦋 Changeset detected

Latest commit: 30ac4e3

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 the pkg: astro Related to the core `astro` package (scope) label Nov 25, 2025
@codspeed-hq
Copy link

codspeed-hq bot commented Nov 25, 2025

CodSpeed Performance Report

Merging #14901 will not alter performance

Comparing Darknab:fix-duplicate-slug-warning (30ac4e3) with main (70eb542)

Summary

✅ 6 untouched

Copy link
Member

@florian-lefebvre florian-lefebvre left a comment

Choose a reason for hiding this comment

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

Thanks for the PR! Does it make sense to also have the warning for the file loader?

@Darknab
Copy link
Contributor Author

Darknab commented Dec 3, 2025

The file loader already warns for duplicate ID, I updated the glob loader warning message so both loaders use consistent wording.

@Darknab Darknab force-pushed the fix-duplicate-slug-warning branch from 93e6f3e to a4ba691 Compare December 3, 2025 19:51
Copy link
Member

@florian-lefebvre florian-lefebvre left a comment

Choose a reason for hiding this comment

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

Awesome thank you!

@florian-lefebvre florian-lefebvre merged commit ef53716 into withastro:main Dec 5, 2025
24 of 26 checks passed
@astrobot-houston astrobot-houston mentioned this pull request Dec 4, 2025
dadezzz pushed a commit to dadezzz/ice-notes that referenced this pull request Dec 14, 2025
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)) | [`5.16.4` -> `5.16.5`](https://renovatebot.com/diffs/npm/astro/5.16.4/5.16.5) | ![age](https://developer.mend.io/api/mc/badges/age/npm/astro/5.16.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/astro/5.16.4/5.16.5?slim=true) |

---

### Release Notes

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

### [`v5.16.5`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#5165)

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

##### Patch Changes

- [#&#8203;14985](withastro/astro#14985) [`c016f10`](withastro/astro@c016f10) Thanks [@&#8203;florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes a case where JSDoc annotations wouldn't show for fonts related APIs in the Astro config

- [#&#8203;14973](withastro/astro#14973) [`ed7cc2f`](withastro/astro@ed7cc2f) Thanks [@&#8203;amankumarpandeyin](https://github.com/amankumarpandeyin)! - Fixes performance regression and OOM errors when building medium-sized blogs with many content entries. Replaced O(n²) object spread pattern with direct mutation in `generateLookupMap`.

- [#&#8203;14958](withastro/astro#14958) [`70eb542`](withastro/astro@70eb542) Thanks [@&#8203;ascorbic](https://github.com/ascorbic)! - Gives a helpful error message if a user sets `output: "hybrid"` in their Astro config.

  The option was removed in Astro 5, but lots of content online still references it, and LLMs often suggest it. It's not always clear that the replacement is `output: "static"`, rather than `output: "server"`. This change adds a helpful error message to guide humans and robots.

- [#&#8203;14901](withastro/astro#14901) [`ef53716`](withastro/astro@ef53716) Thanks [@&#8203;Darknab](https://github.com/Darknab)! - Updates the `glob()` loader to log a warning when duplicated IDs are detected

- Updated dependencies \[[`d8305f8`](withastro/astro@d8305f8)]:
  - [@&#8203;astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@&#8203;6.3.10

</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4zOS4yIiwidXBkYXRlZEluVmVyIjoiNDIuMzkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

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

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Duplicate slug property across MD files causes the page to be overwritten without warning.

2 participants