-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Description
What problem does this address?
This is a sister issue to #40316 to discuss soft deprecated stable APIs.
The WordPress handbook lists backward compatibility as one of it's most important philosophies:
Major releases add new user features and developer APIs. Though typically a “major” version means you can break backwards compatibility (and indeed, it normally means that you have), WordPress strives to never break backwards compatibility. It’s one of our most important philosophies, and makes updates much easier on users and developers alike.
-- My emphasis, source
During the early, pre-merge, phase of Gutenberg development a decision was made to move away from that philosophy for the bleeding edge product.
This was a very sensible decision for the time as one of the purposes of a feature project is to trial various approaches and back them out before they make it to the stable product. Unfortunately the approach was not reviewed once Gutenberg became the block-editor, a feature of WordPress Core.
What is your proposed solution?
According to the version
setting in calls to @wordpress/deprecated
, the following formally stable APIs are scheduled for hard deprecation in the following versions. This will break backward compatibility.
Until a decision is made on the new backward compatibility policy is made by project leadership that applies to both the block editor and WordPress generally (ie, the code managed on trac) I think it would be best to remove the hard deprecation warning from core.
Such a discussion will need to be had in the wider dev chat in the #core slack channel to enable as much participation as possible.
Hard deprecated in 6.0
Sourced from the editor miscellaneous dev notes post for 6.0
getReferenceByDistinctEdits
selector.PreserveScrollInReorder
component.dropZoneUIOnly
prop in the MediaPlaceholder component.isDismissable
prop in the Modal component.wp.data.plugins.control
data module.
Each of these were soft deprecated in 5.4
Scheduled for hard deprecation in 6.1
Feature | Soft deprecated |
---|---|
CSS var --gallery-block--gutter-size | 6.0 |
This is from the make post linked above
Scheduled for hard deprecation in 6.2
Feature | Soft deprecated |
---|---|
wp.blockEditor.RichText wrapperClassName prop | 5.4 |
wp.blockEditor.RichText formattingControls prop | 5.4 |
wp.components.IconButton | 5.4 |
Button isDefault prop | 5.4 |
UnitControl unit prop | 5.6 |
wp.editor.RichText | 5.3 |
wp.editor.Autocomplete | 5.3 |
wp.editor.AlignmentToolbar | 5.3 |
wp.editor.BlockAlignmentToolbar | 5.3 |
wp.editor.BlockControls | 5.3 |
wp.editor.BlockEdit | 5.3 |
wp.editor.BlockEditorKeyboardShortcuts | 5.3 |
wp.editor.BlockFormatControls | 5.3 |
wp.editor.BlockIcon | 5.3 |
wp.editor.BlockInspector | 5.3 |
wp.editor.BlockList | 5.3 |
wp.editor.BlockMover | 5.3 |
wp.editor.BlockMover | 5.3 |
wp.editor.BlockNavigationDropdown | 5.3 |
wp.editor.BlockSelectionClearer | 5.3 |
wp.editor.BlockSettingsMenu | 5.3 |
wp.editor.BlockTitle | 5.3 |
wp.editor.BlockToolbar | 5.3 |
wp.editor.ColorPalette | 5.3 |
wp.editor.ContrastChecker | 5.3 |
wp.editor.CopyHandler | 5.3 |
wp.editor.DefaultBlockAppender | 5.3 |
wp.editor.FontSizePicker | 5.3 |
wp.editor.Inserter | 5.3 |
wp.editor.InnerBlocks | 5.3 |
wp.editor.InspectorAdvancedControls | 5.3 |
wp.editor.InspectorControls | 5.3 |
wp.editor.PanelColorSettings | 5.3 |
wp.editor.PlainText | 5.3 |
wp.editor.RichTextShortcut | 5.3 |
wp.editor.RichTextToolbarButton | 5.3 |
wp.editor.MediaPlaceholder | 5.3 |
wp.editor.MediaUpload | 5.3 |
wp.editor.MediaUploadCheck | 5.3 |
wp.editor.MultiSelectScrollIntoView | 5.3 |
wp.editor.NavigableToolbar | 5.3 |
wp.editor.ObserveTyping | 5.3 |
wp.editor.SkipToSelectedBlock | 5.3 |
wp.editor.URLInput | 5.3 |
wp.editor.URLInputButton | 5.3 |
wp.editor.URLPopover | 5.3 |
wp.editor.Warning | 5.3 |
wp.editor.WritingFlow | 5.3 |
wp.editor.RichText.isEmpty() | 5.3 |
wp.editor.createCustomColorsHOC() | 5.3 |
wp.editor.getColorClassName() | 5.3 |
wp.editor.getColorObjectByAttributeValues() | 5.3 |
wp.editor.getColorObjectByColorValue() | 5.3 |
wp.editor.getFontSize() | 5.3 |
wp.editor.getFontSizeClass() | 5.3 |
wp.editor.withColorContext() | 5.3 |
wp.editor.withColors() | 5.3 |
wp.editor.withFontSizes() | 5.3 |
wp.data.dispatch( 'core/editor' ).resetBlocks | 5.3 |
wp.data.dispatch( 'core/editor' ).receiveBlocks | 5.3 |
wp.data.dispatch( 'core/editor' ).updateBlock | 5.3 |
wp.data.dispatch( 'core/editor' ).updateBlockAttributes | 5.3 |
wp.data.dispatch( 'core/editor' ).selectBlock | 5.3 |
wp.data.dispatch( 'core/editor' ).startMultiSelect | 5.3 |
wp.data.dispatch( 'core/editor' ).stopMultiSelect | 5.3 |
wp.data.dispatch( 'core/editor' ).multiSelect | 5.3 |
wp.data.dispatch( 'core/editor' ).clearSelectedBlock | 5.3 |
wp.data.dispatch( 'core/editor' ).toggleSelection | 5.3 |
wp.data.dispatch( 'core/editor' ).replaceBlocks | 5.3 |
wp.data.dispatch( 'core/editor' ).moveBlocksDown | 5.3 |
wp.data.dispatch( 'core/editor' ).moveBlocksUp | 5.3 |
wp.data.dispatch( 'core/editor' ).moveBlockToPosition | 5.3 |
wp.data.dispatch( 'core/editor' ).insertBlock | 5.3 |
wp.data.dispatch( 'core/editor' ).insertBlocks | 5.3 |
wp.data.dispatch( 'core/editor' ).showInsertionPoint | 5.3 |
wp.data.dispatch( 'core/editor' ).hideInsertionPoint | 5.3 |
wp.data.dispatch( 'core/editor' ).setTemplateValidity | 5.3 |
wp.data.dispatch( 'core/editor' ).synchronizeTemplate | 5.3 |
wp.data.dispatch( 'core/editor' ).mergeBlocks | 5.3 |
wp.data.dispatch( 'core/editor' ).removeBlocks | 5.3 |
wp.data.dispatch( 'core/editor' ).removeBlock | 5.3 |
wp.data.dispatch( 'core/editor' ).toggleBlockMode | 5.3 |
wp.data.dispatch( 'core/editor' ).startTyping | 5.3 |
wp.data.dispatch( 'core/editor' ).stopTyping | 5.3 |
wp.data.dispatch( 'core/editor' ).enterFormattedText | 5.3 |
wp.data.dispatch( 'core/editor' ).exitFormattedText | 5.3 |
wp.data.dispatch( 'core/editor' ).insertDefaultBlock | 5.3 |
wp.data.dispatch( 'core/editor' ).updateBlockListSettings | 5.3 |
wp.data.select( 'core/editor' ).getBlockName | 5.3 |
wp.data.select( 'core/editor' ).isBlockValid | 5.3 |
wp.data.select( 'core/editor' ).getBlockAttributes | 5.3 |
wp.data.select( 'core/editor' ).getBlock | 5.3 |
wp.data.select( 'core/editor' ).getBlocks | 5.3 |
wp.data.select( 'core/editor' ).getClientIdsOfDescendants | 5.3 |
wp.data.select( 'core/editor' ).getClientIdsWithDescendants | 5.3 |
wp.data.select( 'core/editor' ).getGlobalBlockCount | 5.3 |
wp.data.select( 'core/editor' ).getBlocksByClientId | 5.3 |
wp.data.select( 'core/editor' ).getBlockCount | 5.3 |
wp.data.select( 'core/editor' ).getBlockSelectionStart | 5.3 |
wp.data.select( 'core/editor' ).getBlockSelectionEnd | 5.3 |
wp.data.select( 'core/editor' ).getSelectedBlockCount | 5.3 |
wp.data.select( 'core/editor' ).hasSelectedBlock | 5.3 |
wp.data.select( 'core/editor' ).getSelectedBlockClientId | 5.3 |
wp.data.select( 'core/editor' ).getSelectedBlock | 5.3 |
wp.data.select( 'core/editor' ).getBlockRootClientId | 5.3 |
wp.data.select( 'core/editor' ).getBlockHierarchyRootClientId | 5.3 |
wp.data.select( 'core/editor' ).getAdjacentBlockClientId | 5.3 |
wp.data.select( 'core/editor' ).getPreviousBlockClientId | 5.3 |
wp.data.select( 'core/editor' ).getNextBlockClientId | 5.3 |
wp.data.select( 'core/editor' ).getSelectedBlocksInitialCaretPosition | 5.3 |
wp.data.select( 'core/editor' ).getMultiSelectedBlockClientIds | 5.3 |
wp.data.select( 'core/editor' ).getMultiSelectedBlocks | 5.3 |
wp.data.select( 'core/editor' ).getFirstMultiSelectedBlockClientId | 5.3 |
wp.data.select( 'core/editor' ).getLastMultiSelectedBlockClientId | 5.3 |
wp.data.select( 'core/editor' ).isFirstMultiSelectedBlock | 5.3 |
wp.data.select( 'core/editor' ).isBlockMultiSelected | 5.3 |
wp.data.select( 'core/editor' ).isAncestorMultiSelected | 5.3 |
wp.data.select( 'core/editor' ).getMultiSelectedBlocksStartClientId | 5.3 |
wp.data.select( 'core/editor' ).getMultiSelectedBlocksEndClientId | 5.3 |
wp.data.select( 'core/editor' ).getBlockOrder | 5.3 |
wp.data.select( 'core/editor' ).getBlockIndex | 5.3 |
wp.data.select( 'core/editor' ).isBlockSelected | 5.3 |
wp.data.select( 'core/editor' ).hasSelectedInnerBlock | 5.3 |
wp.data.select( 'core/editor' ).isBlockWithinSelection | 5.3 |
wp.data.select( 'core/editor' ).hasMultiSelection | 5.3 |
wp.data.select( 'core/editor' ).isMultiSelecting | 5.3 |
wp.data.select( 'core/editor' ).isSelectionEnabled | 5.3 |
wp.data.select( 'core/editor' ).getBlockMode | 5.3 |
wp.data.select( 'core/editor' ).isTyping | 5.3 |
wp.data.select( 'core/editor' ).isCaretWithinFormattedText | 5.3 |
wp.data.select( 'core/editor' ).getBlockInsertionPoint | 5.3 |
wp.data.select( 'core/editor' ).isBlockInsertionPointVisible | 5.3 |
wp.data.select( 'core/editor' ).isValidTemplate | 5.3 |
wp.data.select( 'core/editor' ).getTemplate | 5.3 |
wp.data.select( 'core/editor' ).getTemplateLock | 5.3 |
wp.data.select( 'core/editor' ).canInsertBlockType | 5.3 |
wp.data.select( 'core/editor' ).getInserterItems | 5.3 |
wp.data.select( 'core/editor' ).hasInserterItems | 5.3 |
wp.data.select( 'core/editor' ).getBlockListSettings | 5.3 |
wp.nux | 5.4 |
wp.components.ServerSideRender | 5.3 |
Scheduled for removal in 6.3
Feature | Soft deprecated |
---|---|
wp.blockEditor.BlockColorsStyleSelector | 6.1 (scheduled) |
wp.data.dispatch( "core/block-editor" ).enterFormattedText | 6.1 (scheduled) |
wp.data.dispatch( "core/block-editor" ).exitFormattedText | 6.1 (scheduled) |
wp.data.select( "core/block-editor" ).isCaretWithinFormattedText | 6.1 (scheduled) |
range prop in Popover component | 6.1 (scheduled) |
wp.data.dispatch( 'core/editor' ).resetPost | 6.0 |
wp.data.dispatch( 'core/editor' ).refreshPost | 6.0 |
wp.data.dispatch( 'core/editor' ).createUndoLevel | 6.0 |
Scheduled for removal in 6.4
Feature | Soft deprecated |
---|---|
Bottom margin styles for wp.blockEditor.LineHeightControl | 6.0 |
Scheduled for removal in 6.5
Feature | Soft deprecated |
---|---|
Value attribute on the list block | 6.0 |
Value attribute on the quote block | 6.0 |
wp.dom.isNumberInput | 6.1 (scheduled) |