#Nuxt 3.15.4 SSR Application - Soft 404's in Google Search Console

27 messages · Page 1 of 1 (latest)

silent marten
#

Hello,

We're experiencing a surge of Soft 404's in Google Search Console on our Nuxt 3.15.4 SSR application.

Here's what we know;

  • Live tests on GSC all seem to pass on any given 'Soft 404' page.
  • We're getting 200's on all pages except for redirects, those give a 301, as they should.
  • Some pages seem to index in Google but they might fall back to Soft 404 a couple days later.

Unfortunate events;

  • We've updated from Nuxt 3.9.3 to 3.15.4 recently, with those some dependencies were updated aswell, such as @nuxtjs/sitemap and @nuxtjs/i18n
  • A faulty deploy was done and the Sitemap absolute path changed after the Nuxt update (and modules)

What we have done;

Does anyone else experience this? (Also after 6th of December since the last core update from Google Search). What did you do to fix it?

Thanks in advance for your time.

Interesting related posts;

Reddit

Explore this conversation and more from the Nuxt community

GitHub

Currently dynamic imports include things like routes, error components, and any global components (so if using with @nuxt/content). I am very concerned to decrease HTML and number of prefetched res...

old snowBOT
#

Hi @silent marten. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:

#

Based on the knowledge sources provided, I don't see specific information about Google Search Console's Soft 404 issues with Nuxt 3.15.4. However, I can identify some potential issues from the provided documents that might be related to your problem.

Possible Issues

1. Recent Nuxt and Nitro Updates

There have been several issues with recent Nuxt updates that might affect how pages are rendered or how status codes are handled:

  • In Nuxt 3.15.4 with Tailwind v4, there were issues with HMR not working in server mode, causing 404 errors GitHub Issue #31096

  • There was a bug where 404 errors were thrown before middleware could finish executing, which might affect how your pages are processed GitHub Pull #29054

2. Static Generation Issues

Some users reported problems with static page generation in Nuxt 3.15.4:

  • The prerenderer stopped generating static HTML pages properly GitHub Issue #31226
  • This was related to Nitro and was fixed in a later version

3. URL Encoding Problems

There were issues with URL encoding causing 404 errors when accessing apps through proxies:

  • After updating to Nuxt 3.15.4, URL encoding of virtual file system paths caused 404 errors GitHub Issue #30811

Potential Solutions

  1. Check Response Status Codes: Make sure your pages are properly returning 200 status codes for valid pages and appropriate status codes for errors. You can use setResponseStatus to explicitly set status codes:
const event = useRequestEvent()
if (event) {
  // Set the status code for valid pages
  setResponseStatus(event, 200)
}
#
  1. Consider Downgrading Nitro: Some users found that downgrading Nitro to version 2.10.4 fixed rendering issues:
"overrides": {
  "nitropack": "2.10.4"
}
  1. Check for Module Compatibility: There were issues with module compatibility in Nuxt 3.16.0 (which might also affect 3.15.4), particularly with @nuxtjs/i18n. Make sure you're using compatible versions of all modules.

  2. Investigate SSR Configuration: If you're using the respectNoSSRHeader experimental feature, it might affect how your pages are rendered for search engines.

Since Google's soft 404 detection is complex and considers multiple factors (content length, error messages, page structure), it's possible that something in your page rendering changed subtly after the update, causing Google to misinterpret your pages as soft 404s despite returning 200 status codes.

I recommend thoroughly testing your pages with tools like Google's Mobile-Friendly Test or Rich Results Test to see how Google is interpreting your pages, and consider implementing explicit status codes using Nuxt's setResponseStatus utility.

Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:

#

@silent marten Kapa.ai is still learning and improving, please let me know how I did by reacting below.

swift scroll
#

cc @last skiff - that's what we've talked about earlier

silent marten
#

@swift scroll I am actually one of the developers you've been talking to. We're kind of out of idea's what it could be and if we're supposed to still do a rollback to the version that was indexed.

last skiff
#

do you have a link to your site?

silent marten
#

I've sent it to you in DM's.

solar schooner
#

happy to review also

silent marten
#

Also, in DM's, thank you both for your interests.

candid kayak
#

Hey @silent marten did you find anymore info on what was causing this?

silent marten
#

@candid kayak Hi Lewis, not yet. We've implemented a temporary solution by implementing prerender.io, which kind of caches pages and serves them statically to the bots. Are you facing similar issues?

candid kayak
candid kayak
silent marten
#

We’ve implemented it through cloudflare workers, cost us less then a day. So i’d say yes.

candid kayak
silent marten
# candid kayak Hey again! has using this completely fixed the bug from showing up? I'm just con...

For us, it is currently a temporary fix and all pages that were getting Soft 404's are now indexed. We can see exactly when a Google Bot comes across the website in the prerender dashboard.

Our game plan is the following;

  • Uncache 10 pages from prerender that don't matter that much and keep looking for the server-side error that causes Google to see a 500 page.

We got the 90 dollar paid plan, for us that was more then enough.

Make sure you set a couple of 'Ignored URLs' so prerender doesn't start caching _nuxt folder files etc.

swift scroll
silent marten
#

@swift scroll For what I understand it serves a fully rendered static HTML snapshot after all JavaScript has been executed.

#

In Google Search Console we now can even see the Google Bot has client-only content visible, where before it did only show the page after server-side hydration.

candid kayak
swift scroll
candid kayak
#

someone has just added a link to a vite dynamic import issue which sounds about right? https://github.com/nuxt/nuxt/issues/29624#issuecomment-2769487348

I've only ever seen the error occur with layouts and icons, has it been any different for anyone else?

GitHub

Reproduction It is impossible to reproduce the issue because the error occurs for 2-3% of users, and I can’t simulate this Approximately 1-2% of users on my website encounter the error Cannot read ...

candid kayak
#

hey @swift scroll sorry to keep bothering you all with this, but has there been any progress on the issue? or any thoughts on the vite issue being related?

swift scroll
#

What is described there is commonly happening only when rebuilding and "old users" can't access the javascript files from the previous build, e.g. because there is no CDN saving them