Merged
Conversation
- Trigger recursion short circuit as early as possible before any other effects that can reason about inner blocks have run. - Use separate wrapper components to do this to satisfy the rule of hooks.
ramonjd
approved these changes
Apr 4, 2024
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
|
Size Change: +27 B (0%) Total Size: 1.73 MB
ℹ️ View Unchanged
|
andrewserong
approved these changes
Apr 4, 2024
Contributor
Author
|
Thanks for the quick reviews! |
tellthemachines
pushed a commit
that referenced
this pull request
Apr 9, 2024
- Trigger recursion short circuit as early as possible before any other effects that can reason about inner blocks have run. - Use separate wrapper components to do this to satisfy the rule of hooks. Co-authored-by: talldan <[email protected]> Co-authored-by: ramonjd <[email protected]> Co-authored-by: andrewserong <[email protected]>
Contributor
|
I just cherry-picked this PR to the add/fixes-for-651 branch to get it included in the next release: 6a417eb |
tellthemachines
added a commit
that referenced
this pull request
Apr 9, 2024
* Font Library: Reset notices when navigating away from the collection (#59981) Co-authored-by: Mamaduka <[email protected]> Co-authored-by: mikachan <[email protected]> Co-authored-by: annezazu <[email protected]> Co-authored-by: madhusudhand <[email protected]> * Pattern Explorer: Pass 'rootClientId' to the pattern list (#60014) Co-authored-by: Mamaduka <[email protected]> Co-authored-by: t-hamano <[email protected]> Co-authored-by: dsas <[email protected]> * Fix lightbox UI disallow editing (#59890) * Check that lightbox can be edited before rendering lightbox UI * Refactor to reduce duplicate code * Fix and clarify component rendering logic Fix issue wherein lightbox popover was rendering erroneously when a link had been configured. * Reset lightbox attributes when removing link * Show lightbox UI if block-level override differs from default In some cases, such as when lightbox settings already exist for a block when global lightbox settings in theme.json change, we should allow users to see the lightbox UI and change the settings if they conflict with the global settings, even if the lightbox UI is disabled globally. This prevents a block from getting stuck with legacy lightbox settings and allows users to reset the block-level lightbox settings if need be in these edge cases. Note: We do not display the UI if the block-level settings exist and match the global settings, as the block will behave as expected in those circumstances and showing the UI in those circumstances would likely just be confusing. * Handle edge case of removing existing link when lightbox is fully enabled * Fix focus loss preventing end-to-end test from passing * Add link to PR in comment Co-authored-by: artemiomorales <[email protected]> Co-authored-by: michalczaplinski <[email protected]> Co-authored-by: justintadlock <[email protected]> Co-authored-by: annezazu <[email protected]> Co-authored-by: gziolo <[email protected]> Co-authored-by: t-hamano <[email protected]> Co-authored-by: jeherve <[email protected]> * Only show inserter in document tools if DFM is off (#60426) Co-authored-by: draganescu <[email protected]> Co-authored-by: youknowriad <[email protected]> * only show inserter in document tools if DFM is off * remove useless CSS hiding the inserter in DFM whcih is not rendered anymore * Fix don't close overlay menu when focus leaves submenu (#60406) Co-authored-by: fabiankaegy <[email protected]> Co-authored-by: c4rl0sbr4v0 <[email protected]> Co-authored-by: Mamaduka <[email protected]> Co-authored-by: annezazu <[email protected]> * Fix experimental useHasRecursion deprecation (#60451) Unlinked contributors: albanyacademy. Co-authored-by: talldan <[email protected]> Co-authored-by: andrewserong <[email protected]> Co-authored-by: ramonjd <[email protected]> * Fix pattern block recursion handling (#60452) - Trigger recursion short circuit as early as possible before any other effects that can reason about inner blocks have run. - Use separate wrapper components to do this to satisfy the rule of hooks. Co-authored-by: talldan <[email protected]> Co-authored-by: ramonjd <[email protected]> Co-authored-by: andrewserong <[email protected]> * remove alpha from edit post header (#60431) * Update the query block to permit non-core interactive blocks (#60006) * updated the query block to permit non-core interactive blocks * updated logic to correctly check all blocks inside the query support interactivity * removed check for core blocks * updated variable names and modal message per feedback * renamed variable blockSupportsInteractivityBool to blockSupportsInteractivity Unlinked contributors: poof86. Co-authored-by: colinduwe <[email protected]> Co-authored-by: cbravobernal <[email protected]> Co-authored-by: gziolo <[email protected]> Co-authored-by: sethrubenstein <[email protected]> Co-authored-by: colorful-tones <[email protected]> * Add context to 'Library' string (#60520) Co-authored-by: ocean90 <[email protected]> Co-authored-by: t-hamano <[email protected]> * DateTimePicker: Change day button size back from 32px to 28px (#59990) * DateTimePicker: Change day button size back from 32px to 28px * Update changelog Co-authored-by: t-hamano <[email protected]> Co-authored-by: mirka <[email protected]> Co-authored-by: annezazu <[email protected]> Co-authored-by: getdave <[email protected]> * Avoid overriding custom settings on font library save (#60438) Co-authored-by: matiasbenedetto <[email protected]> Co-authored-by: youknowriad <[email protected]> Co-authored-by: mikachan <[email protected]> Co-authored-by: creativecoder <[email protected]> Co-authored-by: desrosj <[email protected]> Co-authored-by: estelaris <[email protected]> Co-authored-by: YanCol <[email protected]> --------- Co-authored-by: George Mamadashvili <[email protected]> Co-authored-by: Mamaduka <[email protected]> Co-authored-by: mikachan <[email protected]> Co-authored-by: annezazu <[email protected]> Co-authored-by: madhusudhand <[email protected]> Co-authored-by: t-hamano <[email protected]> Co-authored-by: dsas <[email protected]> Co-authored-by: Artemio Morales <[email protected]> Co-authored-by: artemiomorales <[email protected]> Co-authored-by: michalczaplinski <[email protected]> Co-authored-by: justintadlock <[email protected]> Co-authored-by: gziolo <[email protected]> Co-authored-by: jeherve <[email protected]> Co-authored-by: Andrei Draganescu <[email protected]> Co-authored-by: Fabian Kägy <[email protected]> Co-authored-by: fabiankaegy <[email protected]> Co-authored-by: c4rl0sbr4v0 <[email protected]> Co-authored-by: Daniel Richards <[email protected]> Co-authored-by: talldan <[email protected]> Co-authored-by: andrewserong <[email protected]> Co-authored-by: ramonjd <[email protected]> Co-authored-by: colinduwe <[email protected]> Co-authored-by: colinduwe <[email protected]> Co-authored-by: sethrubenstein <[email protected]> Co-authored-by: colorful-tones <[email protected]> Co-authored-by: Dominik Schilling <[email protected]> Co-authored-by: ocean90 <[email protected]> Co-authored-by: Aki Hamano <[email protected]> Co-authored-by: mirka <[email protected]> Co-authored-by: getdave <[email protected]> Co-authored-by: Matias Benedetto <[email protected]> Co-authored-by: matiasbenedetto <[email protected]> Co-authored-by: youknowriad <[email protected]> Co-authored-by: creativecoder <[email protected]> Co-authored-by: desrosj <[email protected]> Co-authored-by: estelaris <[email protected]> Co-authored-by: YanCol <[email protected]>
cbravobernal
pushed a commit
to garridinsi/gutenberg
that referenced
this pull request
Apr 9, 2024
- Trigger recursion short circuit as early as possible before any other effects that can reason about inner blocks have run. - Use separate wrapper components to do this to satisfy the rule of hooks. Co-authored-by: talldan <[email protected]> Co-authored-by: ramonjd <[email protected]> Co-authored-by: andrewserong <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Thanks to @ramonjd for catching this - #60451 (comment).
What?
The pattern block's recursion handling is broken in 6.5. While the block won't render infinite children, there are several effects in the block edit that operate on inner blocks, and will run infinitely (or until max depth exceeded) causing an error.
Why?
These effects are run before the
hasAlreadyRenderedshort circuit happens in the block edit function, so there's no protection.How?
The fix creates a new wrapper around the previous block edit with the recursion provider logic. This seems this easiest way to fix while still satisfying React's rule of hooks (ugh).
Testing Instructions
In trunk: the editor hangs or the block throws an error
In this PR: a warning shows 'Block cannot be rendered inside itself'
Screenshots or screencast