Replies: 3 comments 22 replies
-
Thanks for bringing this up here - I think it's the first time I've seen a thread about this despite it being extremely prevalent on Google's Search Console Community, Reddit, and other articles online. Our experience has been almost identical to you. The major difference is we are self-hosting our instance on a single AWS EC2 vs Vercel. We are using This is nothing like we've ever seen before (or I've ever experienced in 10 years of development), and we've had very similar steps to diagnose and troubleshoot without luck. Below I'll link some references of other users reporting similar issues (some using similar frameworks like Nuxt). Google's response has been next to nothing on the matter; however, I would say things point towards:
We've attempted dozens of changes over 4 months, and have not had any luck. This has led to our home page being de-indexed and strangely appears to only be affecting pages that are "SSG" on build. We've held off on upgrading to Next@v15 as we have not seen indications this will fix anything. Let us know if you find out anything else, or anybody can provide insight into how we can further troubleshoot or debug what Googlebot is actually seeing when fetching the HTML. References:
Thanks! |
Beta Was this translation helpful? Give feedback.
-
Hey, We're having the same issues and do only seem to happen with our Next.JSs sites. I have talked to the CTO of Vercel on x (https://x.com/cramforce/status/1909703205698912486) and they talked about Skew Protection and https://github.com/uncurated-tests/graceful-degradation-hydration-error. We have fixed any hydration error we have (sentry don't report anything). We tried prerender.io as well with the same result Hey @cramforce |
Beta Was this translation helpful? Give feedback.
-
Can't say anything yet, but "Disallow: /_next/static/chunks/app/" used to work with my code. After I added it, only redirect link were threat as soft404. (Finger-cross, I didn't give it more time to prove) Then I went back to here and looking if there are another method. Then someone also mention to use disallow but Barry Hunter which seems to be google dev said that it is not really appropriate method. So I was looking for the answer until Paw-leen (vercel staff) comment to use graceful boundary here so I give it a try by adding wrap in the layout.tsx after section. I know that you already added Global Error Boundary but "GracefullyDegradingErrorBoundary" seems to be different. It return the whole html instead of "Application error: a client-side exception has occurred (see browser console)". So I give myself a try by adding both "Disallow: /_next/static/chunks/app/", and "GracefullyDegradingErrorBoundary" and waiting for search console report and it doesn't look good. Adding both make google bot cannot see some part of my page that run in js like swiper component, So I decided to remove disallow and keep Graceful last Saturday and waiting for a new search console report. Really hope this will fix and Google not to change to a new strategy again. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
Hello, Everyone,
I am posting on this forum seeking guidance regarding the ongoing soft 404 issues in Google Search Console for my site, https://www.clicktoguide.com. In production, all pages are valid and successfully returning 200 status.
🛠️ What We Have Done So Far:
Proper 404 handling is in place in our /app (Next.js 14.2.5, React 18.3.1, App Router).
No content is missing on valid URLs that can be interacted with by users.
With OpenTelemetry logs, it is validated that requests from googlebot are being served and status 200 is returned.
Example user agent:
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P)…(compatible; Google-InspectionTool/1.0)
Logs show valid execution:
POST / status=200 src/middleware cache MISS
Vercel returns 200 with content. There is no such condition encountered on these paths, notFound() will not be triggered, nor will throw occur.
Expected behavior for static and dynamic routes for real users, as well as crawlers, has been observed.
Using Google’s URL Inspection tool:
❌ "Soft 404: Page cannot be indexed."
➕ "Application error: a client-side exception has occurred (see browser console).”
But:
Some of these URL Inspection runs do not include logs.
There appears to be no execution of the middleware, which indicates a client-side failure.
The fallback error boundary also does not render.
🤔 Our Hypothesis:
Googlebot is causing a client-side hydration error, possibly a race condition, script timing, or incompatible SSR/CSR interaction.
Next.js, even on valid pages, injecting not-found.js chunks may confuse Googlebot.
Googlebot’s inspection tool is in an edge case where middleware/ error boundary is bypassed silently causing a blank page or uncaught error.
Google might be shown blank DOM with broken hydration that does not happen in real-user scenarios.
🔧 What We’re Looking For:
Has anyone experienced this problem and found a solution?
Has anyone encountered the issue where Google Search Console reports Soft 404 despite having a 200 page full of content?
Any way to disable not-found.js chunk injection on valid routes known?
Can we modify next.config.js to include custom headers for a bot-specific fallback?
Is there a suggested approach to emulate Googlebot’s crawl exactly how GSC does?
📉 Current Status:
Soft 404s decreased ~10% since implementing fixes and revalidating in GSC.
Issue still persists intermittently, especially for URLs that should be fully valid.
Vercel support is investigating; we’re looking for community insight in the meantime.
Additional information
No response
Example
No response
Beta Was this translation helpful? Give feedback.
All reactions