[Question] Unnecessary RSC Payload Re-validation on Navigation in Statically Exported Sites (output: 'export') #2548
Unanswered
imliuruiqi
asked this question in
Q&A
Replies: 3 comments 3 replies
-
|
Need a reproduction, it shouldn't happen nor observed to happen locally |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
I created a repo here with minimal config for static export:
|
Beta Was this translation helpful? Give feedback.
2 replies
-
|
next bug, doesn't look like it'll be fixed soon |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Uh oh!
There was an error while loading. Please reload this page.
-
Hello Fumadocs team,
First, I want to say thank you for building such a powerful and well-designed documentation tool.
I'm opening this discussion to understand a specific navigation behavior I've observed while investigating the performance of our statically exported docs site (output: 'export'). I've noticed a consistent delay during client-side navigation, and I've managed to isolate the cause.
The Observation
In a statically exported Fumadocs site, when a user clicks a link (e.g., in the sidebar):
_rschashes (e.g.,.../page/index.txt?_rsc=defand.../page/index.txt?_rsc=ghi).304 Not Modified, the network round-trip time becomes a noticeable delay in the UI (in our case,~600mstotal).This behavior seems to prevent the router from using the prefetched data from the cache, forcing it to re-validate with the server on every click.
Comparison with a Pure Next.js App
To confirm this wasn't standard Next.js behavior, I created a minimal Next.js App Router project (without Fumadocs), configured it with
output: 'export', and observed its navigation:Is This an Intentional Feature?
This difference in behavior leads me to believe that a component or hook within the Fumadocs ecosystem might be wrapping
next/linkor usingnext/navigationin a way that intentionally forces a data refetch on navigation.Initially, I thought this might be a recent change, but after testing, I've confirmed this behavior exists in both v15 and v16 of Fumadocs.
My question is: Is this forced re-validation intentional? Is it in place to support a specific dynamic feature, or could it be an unintended side effect that impacts the performance of fully static sites?
For a purely static build, the ideal behavior would be to leverage Next.js's instant navigation by using the prefetched payloads. Any insight you could provide would be greatly appreciated.
Thank you for your time and for this great project!
Beta Was this translation helpful? Give feedback.
All reactions