You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
6.6: changed behaviour on pressing Enter on a selected block #65274
We noticed that hitting Enter on our custom blocks inserts an empty paragraph since the 6.6.2 6.6 update. Before 6.6.2 6.6 it was inserting a copy of the same block.
Can you advise something, please? Maybe we can make some changes to revert it without rolling back to 6.5.5? Something for splitting the block, possibly?
Note: Adding support for "splitting": doesn't help.
changed the title [-]6.6.2: changed behaviour on pressing Enter on a selected block[/-][+]6.6: changed behaviour on pressing Enter on a selected block[/+]on Sep 16, 2024
Yes, it definitely started from 6.6, and is connected to onSplit deprecation.
But it seems like we can't re-create the behaviour we had before 6.6? We want the block to support splitting, but we also want to create a new empty Text block when we hit Enter at the end of it. It looks like creating an empty paragraph is the default now , right?
I tried to implement a block that I need to split off into a new heading today, and encountered the raft of issues you've found here.
Based on the digging through the code I've done, the answer is as maddening as it is simple: All functionality related to onSplit has been replaced with... something that has yet to be properly documented.
As far as I can tell, the proposed, "unified flow" devolved into, "just shove a paragraph in if the split happened at the end and duplicate the block otherwise" (which, obviously, is a poor replacement for onSplit).
However, none of that is what actually got implemented. As far as I can tell, the final functionality is currently remarkably buggy (#64071, #64771) and the actual outcome appears to be improperly dependent on metadata properties. In addition, support for onSplit was completely removed in direct contradiction to the PR comment you referenced. This is, of course, also in direct contradiction to the documentation on WordPress' own website.
I was just testing this out with a block I’m developing and concur. onSplit has ceased to work. I found that adding the identifier prop to RichText makes it work again (though the onSplit callback isn’t invoked so I guess it’s just a non-falsy value at this point). To restate, identifier being required for onSplit to work is new—so the change was breaking. In my case it works to use the new splitting support and not a big deal.
Also the reason splitting support works fine in my case is because the block to split is the only allowed block type in the parent. That means, even if the split is at the end, the same block type is used—not the default block. I can see how it is problematic that a split at the end would otherwise insert the default block. It doesn’t seem right that to have that work you’d need to use setDefaultBlockName since that’s the editor level setting.
I can confirm that onSplit stopped working for us completely. When switching to splitting support, it only worked once we added the identifier property to the RichText component.
However, this only works if there’s an attribute name we can pass to the identifier property. It doesn’t work if the block takes the value from a source other than attributes. In our case, it’s a meta field, where we load the value through useEntityProp(). In this case, hitting enter does nothing.
I was just testing this out with a block I’m developing and concur. onSplit has ceased to work. I found that adding the identifier prop to RichText makes it work again (though the onSplit callback isn’t invoked so I guess it’s just a non-falsy value at this point). To restate, identifier being required for onSplit to work is new—so the change was breaking. In my case it works to use the new splitting support and not a big deal.
i didnt know about that identifier prop requirement change, good to know. i'll have to see if that fixes my issue #64071
Activity
Mamaduka commentedon Sep 12, 2024
cc @stokesman
stokesman commentedon Sep 12, 2024
Mamaduka commentedon Sep 14, 2024
This could be related to the
onSplitcallback deprecation in WP 6.6. I see that the Text Moxi block is using it.This was mentioned in dev note as well.
[-]6.6.2: changed behaviour on pressing Enter on a selected block[/-][+]6.6: changed behaviour on pressing Enter on a selected block[/+]elzadj commentedon Sep 16, 2024
Yes, it definitely started from 6.6, and is connected to onSplit deprecation.
But it seems like we can't re-create the behaviour we had before 6.6? We want the block to support splitting, but we also want to create a new empty Text block when we hit Enter at the end of it. It looks like creating an empty paragraph is the default now , right?
It's also mentioned that onSplit should continue to work, but seems like it's not the case any more.
Is there any alternative to onSplit?
joshualip-plaudit commentedon Sep 19, 2024
I tried to implement a block that I need to split off into a new heading today, and encountered the raft of issues you've found here.
Based on the digging through the code I've done, the answer is as maddening as it is simple: All functionality related to onSplit has been replaced with... something that has yet to be properly documented.
As far as I can tell, the proposed, "unified flow" devolved into, "just shove a paragraph in if the split happened at the end and duplicate the block otherwise" (which, obviously, is a poor replacement for onSplit).
However, none of that is what actually got implemented. As far as I can tell, the final functionality is currently remarkably buggy (#64071, #64771) and the actual outcome appears to be improperly dependent on metadata properties. In addition, support for onSplit was completely removed in direct contradiction to the PR comment you referenced. This is, of course, also in direct contradiction to the documentation on WordPress' own website.
ellatrix commentedon Oct 16, 2024
Yes, set
splittingtotruein your block supports object. See https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#splittingNo, the default is whatever is configured as the default block. See https://developer.wordpress.org/block-editor/reference-guides/packages/packages-blocks/#setdefaultblockname
Let me know if something doesn't work, maybe with minimal block registration code to reproduce.
stokesman commentedon Oct 22, 2024
I was just testing this out with a block I’m developing and concur.
onSplithas ceased to work. I found that adding theidentifierprop toRichTextmakes it work again (though theonSplitcallback isn’t invoked so I guess it’s just a non-falsy value at this point). To restate,identifierbeing required foronSplitto work is new—so the change was breaking. In my case it works to use the newsplittingsupport and not a big deal.stokesman commentedon Oct 22, 2024
Also the reason
splittingsupport works fine in my case is because the block to split is the only allowed block type in the parent. That means, even if the split is at the end, the same block type is used—not the default block. I can see how it is problematic that a split at the end would otherwise insert the default block. It doesn’t seem right that to have that work you’d need to usesetDefaultBlockNamesince that’s the editor level setting.gchtr commentedon Dec 23, 2024
I can confirm that
onSplitstopped working for us completely. When switching tosplittingsupport, it only worked once we added theidentifierproperty to theRichTextcomponent.However, this only works if there’s an attribute name we can pass to the
identifierproperty. It doesn’t work if the block takes the value from a source other than attributes. In our case, it’s a meta field, where we load the value throughuseEntityProp(). In this case, hitting enter does nothing.albanyacademy commentedon May 13, 2025
i didnt know about that identifier prop requirement change, good to know. i'll have to see if that fixes my issue #64071