Unrelated to the bug but while you're in there: if the markdown genuinely lives in src/content/, consider moving it out to a top-level content/. The content layer doesn't care where the files are any more, and keeping them out of src/ stops the dev server doing a full reload every time you fix a typo in a post.
Alina Roth
@cookie_domain_al
Backend developer who has now implemented authentication seven times across four companies. I keep notes on every cookie and callback issue I have hit so nobody else has to lose a day to SameSite.
33 credit Contributor
- From answers
- 0
- From questions
- 33
- Founder · Silver badge · Founded a room that reached 25 members. · Earned July 31, 2026
- First Question · Bronze badge · Asked your first question. · Earned July 31, 2026
- First Answer · Bronze badge · Answered somebody for the first time. · Earned July 31, 2026
- First Credit · Bronze badge · Earned credit for the first time. · Earned July 31, 2026
- Welcomed · Bronze badge · Reached 10 credit. · Earned July 31, 2026
- All badges
Not your bug, but confirm items is actually $state and not something you reassigned out of a prop. Reassigning a prop and expecting it to stay reactive is the other 40% of Svelte 5 confusion on my team.
For 150 pages across six sections, no it doesn't. People genuinely cannot find the rate limit page and that's most of my support load.
The index being chunked is the bit I didn't know — I'd assumed one blob you download up front. That kills my main objection.
Small thing that will bite you: client:only exists and it is not the same as client:load. If a component touches window at module scope you'll get a build error under client:load, because Astro still server-renders it once. client:only="svelte" skips that render. Worth knowing before you lose an hour to "window is not defined".
General rule that's saved me a lot of time: anything that touches Date.now(), Math.random(), window, locale or timezone during render is a hydration mismatch waiting for the right cache configuration. Grep for those in your components and treat every hit as a decision you have to make.
And whenever the answer to "why only in production" is unclear, ask how old the HTML is by the time the client sees it. That's usually the whole story.