-
-
Notifications
You must be signed in to change notification settings - Fork 2.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: flushSync was called from inside a lifecycle method in <PureEditorContent> #3580
Comments
I'm also experiencing the same errors after an update from From a real quick search, it looks like #3331 may be the only changes related to this error between the 2 versions. |
There is a PR addressing this issue: #3533 |
PR #3533 should fix this issue then. |
+1 |
@bdbch I am still experiencing this bug, I am using tiptap v2.0.3. Any fix or workaround?, It mainly crashes the app when the editor is unmounting or when the user is navigating away from the page containing editor. Can we reopen this issue? |
I'm having this as well with 2.0.3 |
Could you create a replicatable sandbox for us? @Hideman85 @arpit016 so we can verify the issue still exist? |
@bdbch Still occurs in 2.0.4 -- here's a code sandbox: https://codesandbox.io/s/github/rbruels/tiptap-3580-sandbox |
Moved back to the backlog |
For what it's worth, testing locally for us and removing the flushSync call all-together of course stopped the error. Interestingly though through testing a bunch of our custom Nodes and navigating across multiple dynamically re-initialised editors, nothing else seemed to be off. I assume there is a good reason for using |
Fwiw I've never seen this occur over hundreds of hours building our TipTap/React editor (but mostly using |
@slapbox Feel free to check my code sandbox — see if you can reproduce too. Maybe you’ll have an idea why it’s happening |
Ah I didn't realize the issue was specific to Relink to the relevant code sandbox for convenience: https://codesandbox.io/s/github/rbruels/tiptap-3580-sandbox |
In my situation, I was experiencing poor performance and lag as the number of lines in a if (this.initialized) {
flushSync(fn);
} else {
fn();
} to: if (this.initialized) {
fn();
} else {
fn();
} The lag and performance issues were resolved. I am just not sure what potential risks this change might introduce. |
Experienced this after updating from 2.0.0-beta.220 to 2.1.7. Seems to have been caused by using setContent inside a useEffect. Moving the initialize editor content to offending code inside useEffect:
|
We are running into this as well for the same reason as @philipaarseth (imperatively updating content in a Since we depend on updating content within an effect like this, I found that wrapping the offending |
FYI: We also struggled with this, but after a bump from |
Still experiencing the error with |
Putting logic inside queueMicrotask(..) solved perfectly! |
still getting this in 2.3.0 |
Same here. Still not fixed in 2.30 and my console is just getting flooded in the flushSync errors. |
I'm having this problem as well with 2.4.0. I tried implementing a basic example from the TipTap docs and got the crash as well, the counter here: https://tiptap.dev/docs/editor/guide/node-views/react Adding the queueMicrotask fix here back in as a patch fixes the issue for me: aa43898 |
Should be resolved with tiptap 2.5 since we no longer have to flushSync anymore |
@nperez0111 still facing the same issue with 2.5.9
|
I can confirm it's still present on 2.5.9 as well. |
You are using a React nodeview? Or is this with useEditor? I must've read the issue incorrectly. Tiptap 2.5 fixes useEditor, node views will be resolved with: #5273 |
I don't see this exact issue anymore but I do sometimes still see: With I think this only occurs when swapping the editor out for a new one (eg user changes the selected content) but we're not breaking any rules of React or of TipTap as far as I can tell, so I wouldn't expect this. |
PureEditorContent is to do with React nodeviews: tiptap/packages/react/src/EditorContent.tsx Lines 88 to 99 in 32ed87b
So not yet resolved, but will be with #5273 |
Ah apologies. I was pretty sure I'd seen it on a page where we used none, but I'm probably mistaken about that. |
This should now be resolved with 2.6.0 |
@nperez0111 I think it still isn't fixed. I'm on the latest One note has
And this is my
Screen.Recording.2024-08-25.at.12.10.13.mov |
@rajatkulkarni95 So node views should only flushSync now when the editor is already initialized tiptap/packages/react/src/ReactRenderer.tsx Lines 113 to 119 in 7f24a66
Do note that this is only a warning & React does the right thing anyway (because at worst your focus cannot be moved into the node view properly which is the only reason we are trying to flush it synchronously). Given what you were doing here I would expect it to only render once. I'd be interested if you logged in the component that called useEditor whether it was re-rendering multiple times. |
Here's the logs. Both cause the same amount of renders it seems.
Screen.Recording.2024-08-26.at.19.38.40.mov |
That's a lot of renders... I would consider wrapping the component that renders the editor to be memoized to be shielded from all of these renders. useEditor wherever possible will try to re-use the editor instance, but it can be garbage collected if the editors are far enough apart. If collected, this would destroy the instance & force a remount after recreating. All that to say, I would totally expect this to happen with how many times it is rendered. React does not really give us much room here for a solution. We need it to be synchronous & it isn't, we don't have a way to know whether React is already rendering something else. So our hands are tied here, but again, not an actual issue. So I think it is safe to say, if you don't recreate the editor a bunch of times really quickly this already is solved. Tons of people already have this in prod from my understanding |
Yeah it's rendering 15 times, which seems a lot. So I have an I think some re-renders are unavoidable, since some of the extensions require some data from state, but I feel 15 can be brought down. Will check, thanks! |
We are experiencing this issue intermittently. We are using 2.9.1 See a screenshot from the console and a video showing the issue. video: Screen.Recording.2024-11-05.at.08.41.14.mp4@nperez0111 do you have any suggestions for what we are doing wrong? As you can see in the video - first load, we see the error in the console but everything renders. Then on refresh, the content does not load. We do see there are a few other issues https://github.com/ueberdosis/tiptap/issues?q=flushSync+was+called+from+inside+a+lifecycle+method but they all seem resolved and don't resolve our issue. Thank you for any/all help and guidance! |
@wasauce |
What’s the bug you are facing?
The component
import { EditorContent } from "@tiptap/react"
is crashing for some reason.I'm getting the following error in console:
More specifically here:
Reduced code:
If I remove the
<EditorContent>
the app doesn't crash.Not sure if this bug is only related to our implementation.
Anyway, any help, clue or information is welcome in order to fix this issue which is urgent.
Which browser was this experienced in? Are any special extensions installed?
Google Chrome
Version 108.0.5359.124 (Official Build) (arm64)
macOs ventura 13.1
How can we reproduce the bug on our side?
Not sure.
Can you provide a CodeSandbox?
No response
What did you expect to happen?
Not crashing.
Anything to add? (optional)
Tip-tap package versions:
React version:
16.13.1
Node version:
v14.19.1
You can find the entire log here: tiptap.log
Note: my app depends of this node version only
Did you update your dependencies?
Are you sponsoring us?
The text was updated successfully, but these errors were encountered: