Soft 404 issue on Google Search Console (live test url)
Hello!
I’m trying to get the public card deck pages on our Nuxt 4 site (https://ilove.cards) indexed.
Google keeps reporting a soft 404 on all public deck URLs. For example:
https://ilove.cards/explore/decks/6bd1b254-9f72-4e8e-88dd-fa7378cb5ef6
When I visit the page myself or curl the URL, everything looks correct.
I recently pushed a fix and, when I disable JavaScript, I can now see the full deck. So SSR seems to be sending the content. But Google Search Console’s live test still receives the generic Nuxt “Something went wrong (500)” page with no deck markup at all, so the URL shows up as a soft 404.
Render’s logs show nothing, and I’m not sure how to reproduce this locally since all my tests return the full content.
If anyone has ideas on what could cause GSC to get a 500 during SSR, or knows a good way to debug this kind of Nuxt 4 SSR issue, I’d really appreciate the help.
Thanks!
For Card Deck Creators - Design, Export, Play
Create card decks for your workshops or trainings. Design reusable card templates. Export high-quality files for printing or share online. Build everything from party games to serious games. Perfect for consultants, facilitators, trainers, game designers and hobbyists.
Mythical Creatures - Demo Deck by Alex Eisenchteter - I ♥️ Cards
Explore the world of mythical creatures. A card deck designed by Alex Eisenchteter and powered by I ♥️ Cards.
4 Replies
Hi @ineation. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
Your situation—where Google Search Console (GSC) reports a soft 404 and shows a Nuxt 500 error page, even though the page renders fine for users and curl—matches a known class of issues with Nuxt SSR and Googlebot. Here are the most relevant findings and suggestions from the knowledge sources:
1. Googlebot and Nuxt SSR 500 Errors
- There are documented cases where Googlebot triggers a 500 error on Nuxt sites, even when the page works for real users. This can happen if Googlebot tries to load JS chunks that are no longer available after a deployment, or if it exhausts a JS "budget." In these cases, Googlebot may see a generic Nuxt error page, resulting in a soft 404 in GSC, while users see the correct content. This is not unique to your site and has been reported by others in the Nuxt community. A proposed hotfix in Nuxt suppresses the full-page error when triggered by crawlers/bots, to avoid this exact scenario, but it may not be present in your current Nuxt version yet fix: suppress client-side errors by crawlers.
2. Asset Caching and Deployment
- If your site is deployed behind a CDN (like Cloudflare) or similar, stale or missing JS chunks can cause 500 errors for bots if the assets are purged or changed after deployment. Some users have resolved this by purging the CDN cache programmatically after each deployment, or by versioning the build assets directory so that each deployment uses a new subfolder for assets. This ensures Googlebot always gets the correct, fresh assets and avoids 404/500 errors for dynamic imports Failed to fetch dynamically imported module.
3. Debugging and SSR Error Handling
- Nuxt 4 introduced a more aggressive error overlay in development, but in production, SSR errors can still result in a generic error page. There is a new SSR debug prompt in dev mode, but for production, you may need to add more robust error logging or custom error handling to capture what’s happening during Googlebot’s requests feat: add ssr debug prompt with link.
4. Dynamic Rendering and Googlebot
- Some teams consider serving SSR only to crawlers (dynamic rendering), but Google recommends against cloaking (serving different content to bots and users). Your SSR setup should serve the same content to both. If disabling JS in your browser shows the correct content, your SSR is likely working, but asset issues or rare SSR errors may still affect Googlebot Dynamic Rendering in Nuxt.
---
What You Can Do
1. Purge CDN Cache After Deploys: If you use a CDN, ensure all old JS chunks are purged after each deployment, or version your build assets directory to avoid stale asset references.
2. Check for Asset 404s: Use server logs or monitoring to see if Googlebot is requesting missing JS chunks or assets.
3. Update Nuxt: Make sure you’re on the latest Nuxt 4.x version, as several related bugs have been fixed recently.
4. Custom Error Logging: Add server-side logging for SSR errors to capture stack traces or request details when a 500 occurs.
5. Consider the Crawler Hotfix: Watch for or implement the crawler error suppression patch if it’s not yet in your version fix: suppress client-side errors by crawlers.
If after these steps the issue persists, try to reproduce the error by spoofing the Googlebot user agent locally, or use tools like Puppeteer to simulate Googlebot’s requests and see if you can trigger the error.
---
Summary:
This is a known issue with Nuxt and Googlebot, often related to asset availability or SSR errors that only affect crawlers. Purging CDN caches, versioning assets, updating Nuxt, and improving error logging are the best next steps. There is also a Nuxt patch to suppress full-page errors for bots, which may help prevent soft 404s in GSC if adopted in your project fix: suppress client-side errors by crawlers. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
This is a known issue with Nuxt and Googlebot, often related to asset availability or SSR errors that only affect crawlers. Purging CDN caches, versioning assets, updating Nuxt, and improving error logging are the best next steps. There is also a Nuxt patch to suppress full-page errors for bots, which may help prevent soft 404s in GSC if adopted in your project fix: suppress client-side errors by crawlers. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
<@863081777588338708> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
I am not using a CDN, some resources like fonts and images are missing - but is that an issue?, i am on the latest nuxt version
Anyway, if a human could help, that would be cool.
Ok 🤷
Hi ineation, you could check a tool like prerender.io.. I've personally experienced this issue on one of my projects and it was resolved in an Nuxt update (3.17.5 to be exact). But we're still using prerender to serve cached snapshots to bot traffic. Implementation works best in a Cloudflare worker, but i believe it's also possible to do this without a CDN.
@ineation