Skip to content

Review formally stable APIs scheduled for hard deprecation. #41265

@peterwilsoncc

Description

@peterwilsoncc

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Backwards CompatibilityIssues or PRs that impact backwards compatabilityDeveloper ExperienceIdeas about improving block and theme developer experience[Type] DiscussionFor issues that are high-level and not yet ready to implement.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions