-
Notifications
You must be signed in to change notification settings - Fork 10.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error with Suspense and lazy loading with gatbsy 4.23.1 and react 18.2 on build #36678
Comments
Same error with gatsbtjs |
Do not wanna bother anyone, but if someone could point out if I am doing something wrong or it is a bug, it can help me to know what I need to do (migration, downgrading or something else) |
I am digging into all github repo using
At this point I think it is a bug. |
Hi @lezan the sandbox links above don't work, can you link to the reproduction's code? |
Ideally a minimal reproduction:
https://www.gatsbyjs.com/contributing/how-to-make-a-reproducible-test-case/ |
Hello @graysonhicks the previous codesanbox stopped working for some reason. The new codesanbox is https://codesandbox.io/s/suspense-error-n0gby5. |
Thanks @lezan I've triaged this now! |
Is there an ETA on that? Or maybe a workaround I can try, for instance downgrading gatsby and react. |
Can you try the v5 beta? |
@graysonhicks I've forked @lezan's codesandbox and updated to node 18 & gatsby@next |
@graysonhicks I already tried before (because I am desperate), but still same error. A codesanbox here: https://codesandbox.io/s/suspense-error-v5-beta-y0rh49 |
@graysonhicks it runs without issues also on build? Because I started adding the flag because I was getting errors on builds. |
@lezan Maybe this helps you... I was having the same problem and tracked down the bug to Static Queries which can't be executed from the Head-Component (I use the new Gatsby Head API). I found out that the Static Query Context with the fetched data is empty while being inside the Head component executing the useStaticQuery hook. So I moved the GraphQL to the page query of the affected page and use the data argument of the Head API instead. This works now and I can develop + build again. |
@lezan did you find a workaround? @graysonhicks |
I am gona try that, but if you check the codesanbox there is not
Nope, still give the same error. I want try soon the v5. |
This isn't relevant. The minimal reproduction makes it clear that this happens with even the most basic Gatsby site. |
I'm facing the same problem for my blog with react 18.2 and gatsby 5.2. Still waiting for a solution. |
Any updates? |
about the DEV_SSR issue, It seems that the issue is here: https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/cache-dir/ssr-develop-static-entry.js#L300 I've tried to path my local Gatsby code with
but I'm not sure if is correct or there are other places that needs to be updated and it seems that the hot reload is not working correctly. |
@graysonhicks I see you gave a 👍 to the above suggested solution. Does this mean the Gatsby team recognizes this rather large bug and are working on it? With This seems like a priority bug at the least. Not sure if the Gatsby team is aware of this but: |
@panzacoder Heavily agree. I am able to reproduce this issue by forking the Shopify starter using Gatsby 5 and adding a Suspense component. I will link it here when I have a bit of time to set up the repo. We're not able to use Suspense OR loadable components at this point... therefore can't upgrade to Gatsby 5. |
We already provided a reproducible test case (three or more) with only plugins that are needed to demonstrate the problem (actually no one, just gatsby and react packages are included). No need for a more "complicated" test case I think, do not waste your time. |
Ah, ok. I missed that you provided this. Thank you! |
@amandasaffer @graysonhicks I've opened a PR based on @d4v1d82 's comment above. This is working for me locally for dev ssr. If you are able to try this out in your project, please feel free to leave feedback. |
#37534: You can try it out with |
@d4v1d82 I was not seeing the HMR issues you reported, would be interested to see if |
For me the error it is still here also with a basic repo with Getting if I change something from
to
If I restart the server with the new changes, I am not getting issue. Not able to create a codesanbox with |
@panzacoder @lezan I still have some issues with the HMR, but I can't figure out some deterministic behaviors: sometimes I have to restart the server, sometimes it works. It seems that the issue is when you have a Suspence and lazy loaded component that is not hot reloaded correctly. I'm not working on the Gatsby project right now but I'll try to make some specific tests to understand if there are any patterns when HMR is not working |
Same issue here described by @d4v1d82 and @lezan with the hot reloading after updated Gatbsy to 5.6 or 5.7 released in February. The behavior that I'm facing is like:
|
Try this. I works great in my gatsby 5.12.4 just be sure to add react like below. Tutorial is missing Suspense call in react
};` then wrap your component as so
|
With this solution I got a Minified React error #421 |
@Mario8419 did you find any solution? |
no, but didn't tested until now with a newer gatsby version, maybe? |
@Mario8419 No, still the same the problem with me is a hydration error when rendering the content in mdxprovider and i can't fix it |
If anyone is facing this issue, Gatsby has a beta feature called partial hydration, somewhat like Next.js. To implement it, add "use client" at the beginning of each component, excluding pages or templates. Also, don't forget to remove hooks from pages or templates. Now you can use react-lazy and suspense without throwing errors. If it does throw an error, you can fix it by disabling SSR as mentioned in the above comments. However, in the docs, it says to enable the partial hydration flag in the config file. If you enable it, the build fails, so don't enable it in newer versions. I don't know why, but this works without enabling the flag. |
any example code? |
Preliminary Checks
Description
I am unable to use
<Suspense>
and lazy loading with gatsbyjs4.23.1
and react18.2.0
.The problem arises with the build and in dev mode with
DEV_SSR
flag.The error I get is:
Uncaught Error: The server did not finish this Suspense boundary: The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server
.Repo 1 code: https://t.co/VPlZUmZ8d0
Repo 1 preview: https://t.co/Rr7NebYwYA
Repo 2 code&preview: https://codesandbox.io/s/suspense-error-n0gby5
Link to a thread with @Paulie about that: https://twitter.com/hellovizart/status/1572961555959975936?s=20&t=Ed9sYfMRBN7TSo-50Wz9Mg
Reproduction Link
https://t.co/Rr7NebYwYA
Steps to Reproduce
or
Expected Result
Lazy loading work without error
Actual Result
Error: Uncaught Error: The server did not finish this Suspense boundary: The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server.
Environment
Config Flags
DEV_SSR: true
The text was updated successfully, but these errors were encountered: