TinyMCE 8.4.0
| These are the Tiny Cloud and TinyMCE Enterprise release notes. For information on the latest community version of TinyMCE, see the TinyMCE Changelog. |
Overview
TinyMCE 8.4.0 was released for TinyMCE Enterprise and Tiny Cloud on Wednesday, February 4th, 2026. These release notes provide an overview of the changes for TinyMCE 8.4.0, including:
Accompanying Premium plugin changes
The following premium plugin updates were released alongside TinyMCE 8.4.0.
Comments
The TinyMCE 8.4.0 release includes an accompanying release of the Comments premium plugin.
Comments includes the following fixes.
Errors when creating new comments made the save button stuck in a saving state.
Previously, when creating or editing a comment in Comments, the save button could remain in a saving state indefinitely if the save operation failed or if the component was not replaced. The saving state had no way to reset to false except by recreating the component, which misled users into thinking the operation was still in progress.
In TinyMCE 8.4.0, the save logic now resets the saving state to false after the save operation completes, whether the operation succeeds or fails. The save button no longer remains stuck in a saving state.
Users with an id that includes @ weren’t parsed correctly.
Previously, the mentions parser in Comments did not treat the @ symbol as part of a mention string. User IDs containing @ (such as email addresses) were split incorrectly, so mentions remained as raw text instead of resolving to the display name after saving.
In TinyMCE 8.4.0, the Comments plugin now correctly parses mentions with @ in user IDs. Mentions resolve to display names as expected.
For information on the Comments plugin, see: Comments.
Export to PDF
The TinyMCE 8.4.0 release includes an accompanying release of the Export to PDF premium plugin.
Export to PDF includes the following addition.
exportpdf supports API version 2 converter options
TinyMCE 8.4.0 adds support for version 2 of the exportpdf API through exportpdf_converter_options. Version 1 remains the default for backward compatibility. The new nested structure organizes options under document, headers, footers, metadata, security, and signature, enabling per-page headers and footers, PDF metadata, password protection, and certificate-based signing.
For information on the Export to PDF plugin, see Export to PDF.
Media Optimizer
The TinyMCE 8.4.0 release includes an accompanying release of the Media Optimizer premium plugin.
Media Optimizer includes the following addition and fix.
Toolbar button was not initialized when used with the quickbars plugin.
Previously, when the Media Optimizer plugin was used together with the quickbars plugin, the uploadcare toolbar button was not registered at all. As a result, the button could not appear in the toolbar, even when configured.
In TinyMCE 8.4.0, the uploadcare button is now always registered and can be used in the toolbar alongside the quickbars plugin. To avoid duplication in the context toolbar, the plugin no longer adds the uploadcare button when the quickbars insert image button is already present.
Third-party library icons appear in formats when using Media Optimiser plugin together with CSS plugin
Previously, when the Media Optimiser plugin was used together with the importcss plugin, the previous version of uc-video required importing external styles. The importcss plugin detected these imports and added them to the format menu, causing third-party library icons to appear in the formats UI. These icons were not part of the official TinyMCE icon pack and created a confusing and inconsistent UI experience.
In TinyMCE 8.4.0, the uc-video package was upgraded to a version that has styles self-contained in the web component. The importcss plugin no longer detects uc-video styles, so third-party icons no longer appear in the formats UI.
SVG images can now be uploaded.
Previously, SVG images could not be uploaded through the Media Optimizer plugin because Uploadcare placed restrictions on SVG file handling. Users who needed to include SVG graphics in content were unable to upload them directly.
In TinyMCE 8.4.0, SVG images can now be uploaded through the Media Optimizer plugin. Some CDN operations may have limitations on SVG files; for details, see the Uploadcare documentation on CDN operation limits.
For information on the Media Optimizer plugin, see: Media Optimizer.
Full Page HTML
The TinyMCE 8.4.0 release includes an accompanying release of the Full Page HTML premium plugin.
Full Page HTML includes the following update.
Replaced deprecated browser APIs with modern equivalents.
Previously, the Full Page HTML plugin used deprecated escape and unescape JavaScript APIs for some protected content handling. Those APIs are no longer recommended for new code.
In TinyMCE 8.4.0, the plugin uses modern encoding APIs instead. This aligns the implementation with current browser guidance and improves reliability for protected content handling.
Pasting an HTML document was vulnerable to XSS attacks
A cross-site scripting (XSS) vulnerability was discovered in the Full Page HTML plugin. Previously, malicious code within the document <head> was able to be executed when pasted.
This vulnerability has been patched in TinyMCE 8.4.0 by ensuring that content in the document <head> is properly encoded.
New argument fullpagehtml to editor.getContent() and editor.setContent() APIs to only get/set the body of the content while the full page plugin is active.
Previously, setting and getting the editor content while the Full Page HTML plugin was active could be troublesome due to the presence of the full HTML document on all API calls, even when not needed. Attempting to get and act only on the body content (for example, for saving) was undocumented and required workarounds.
In TinyMCE 8.4.0, the fullpagehtml option has been added to the editor.getContent() and editor.setContent() APIs. When set to false, this option allows getting and setting only the body content while the Full Page HTML plugin is active, without interfering with the full document structure. The document is now more resistant to accidental changes, and content can be retrieved or updated without including the full HTML document. For details, see fullpagehtml option for getContent/setContent.
For information on the Full Page HTML plugin, see: Full Page HTML.
Suggested Edits
The TinyMCE 8.4.0 release includes an accompanying release of the Suggested Edits premium plugin.
Suggested Edits includes the following improvement and fix.
Document view rendering to reduce flickering when loading Suggested Edits.
Previously, the document displayed in the Review Edits view relied on the deprecated browser method document.write, which could cause content to appear before it was fully styled. Users could briefly see partially rendered or unstyled content when opening the review interface.
In TinyMCE 8.4.0, the document loading process in the Review Edits view has been updated to remove the deprecated method. The document is now displayed only after it has fully loaded, improving browser compatibility and providing a smoother and more stable experience when reviewing suggested edits.
Cancel button would always focus when the view opened, even when editor wasn’t focused.
Previously, the Cancel button in Suggested Edits was automatically focused whenever the review was opened, including when the review opened automatically on load. This could cause unexpected scrolling behaviour, such as when an editor is positioned further down the page, the browser would scroll the editor into view when the page loads.
In TinyMCE 8.4.0, the Cancel button is now focused only when the editor itself is already focused. When the review is opened automatically, the button is no longer focused, preventing unintended scrolling.
For information on the Suggested Edits plugin, see: Suggested Edits.
Accompanying Enhanced Skins & Icon Packs changes
The TinyMCE 8.4.0 release includes an accompanying release of the Enhanced Skins & Icon Packs.
Enhanced Skins & Icon Packs
The Enhanced Skins & Icon Packs release includes the following updates:
The Enhanced Skins & Icon Packs were rebuilt to pull in the changes also incorporated into the default TinyMCE 8.4.0 skin, Oxide.
For information on using Enhanced Skins & Icon Packs, see: Enhanced Skins & Icon Packs.
Improvements
TinyMCE 8.4.0 also includes the following improvements:
The file upload feature of link and image dialogs now provide feedback when an unsupported file type is selected
In TinyMCE 8.4.0, the dropzone in the link and image dialog upload tabs previously provided no feedback when users inserted only files with disallowed extensions. This left users unsure whether the upload had failed or the dialog had not responded. The dropzone now displays an error message when all selected files have disallowed extensions, informing users that the selected files do not have allowed extensions and prompting them to choose different files.
Directionality buttons now always apply to blocks and only appear active when directionality is set
Previously, the directionality buttons would not apply the directionality attribute or style when toggling to the default directionality. This could cause non-default directional content to appear in the opposite direction.
In TinyMCE 8.4.0, each directionality button always applies or removes the directionality attribute on the selected block, and only appears active when directionality is explicitly set on the block.
Additions
TinyMCE 8.4.0 also includes the following additions:
New table_default_header_rows and table_default_header_cols options to set the default header size for new tables
Previously, integrators had no way to set default header rows and columns when creating tables through the editor UI. This affected the accessibility of tables and required manual intervention for integrators aiming to meet accessibility standards. The new table_default_header_rows and table_default_header_cols options enable integrators to set the number of default header rows and columns for new tables created through the editor’s UI, providing a supported way to meet accessibility requirements.
New errorHandler option for dropzone dialog components
In TinyMCE 8.4.0, the dropzone dialog component supports a new onInvalidFiles callback (exposed as errorHandler in the changelog) that runs when all dropped or selected files have disallowed extensions. This enables custom error handling for invalid file uploads in dialogs that use dropzones, such as the link and image dialogs.
The noneditable feature can now be disabled with the new allow_noneditable option.
Previously, the noneditable plugin was converted to a feature in core in TinyMCE 6. The feature was always enabled with no documented way to turn it off, which was not always desirable for integrators.
In TinyMCE 8.4.0, a new allow_noneditable option is available. It is enabled by default. When set to false, the noneditable feature is disabled, equivalent to disabling the plugin prior to TinyMCE 6.
New view_show option to display a specified view on initialization.
In TinyMCE 8.4.0, the new view_show option allows specifying which view to display when the editor is initialized. The option behaves similarly to sidebar_show but takes precedence for views; both sidebars and views can be configured to show on init.
Changes
TinyMCE 8.4.0 also includes the following changes:
The border-color style with multiple rgb colors would be compressed into border incorrectly
Previously, when border-color used multiple rgb values (for example, for different sides of an element), the style compressor would incorrectly compress them into a single border shorthand. The border shorthand only supports one color, so this produced invalid CSS. This could affect tables and other elements with multi-colored borders.
In TinyMCE 8.4.0, a check was added to prevent compression when border-color contains multiple rgb values. The styles are no longer compressed into invalid shorthand.
Bug fixes
TinyMCE 8.4.0 also includes the following bug fixes:
Dialogs did not retain focus when using the block/unblock API.
Previously, when a dialog was blocked (for example, while loading) and then unblocked, the loading spinner disappeared without automatically focusing any other element. As a result, focus escaped the editor entirely. When using an inline editor, this caused the dialog and the rest of the editor UI to disappear.
In TinyMCE 8.4.0, unblocking a dialog now focuses the first focusable element automatically, the same as when opening a dialog. This prevents the dialog and the rest of the editor UI from disappearing when using an inline editor.
Some formatting was not applied to items in multilevel list.
Previously, when applying formatting such as background, bold, italic, underline, or strikethrough to a multilevel list and then adding new items before the second-level list, the new items could lose some of that formatting. This occurred because creating a new line in a list item that contained a nested list sometimes trimmed the empty elements that held the applied styles.
In TinyMCE 8.4.0, the trim logic has been updated to avoid removing these elements when inserting a new line inside a list item that contains both an empty element (the styles) and a nested list. The formatting is now preserved as expected when adding new items to multilevel lists.
Now link dialog allows uploading empty files
Previously, when uploading an empty file through the link dialog’s upload tab, the conversion to BlobInfo failed and returned a generic, cryptic error about blob and base64 encoding. As a result, users could not understand what caused the failure or how to resolve it.
In TinyMCE 8.4.0, empty file uploads are now handled by the link dialog itself, which displays a clear, user-friendly error message when an empty file is selected. Users receive a specific error that explains the issue instead of a generic conversion error.
Toggling lists cause selection issues
Previously, repeatedly toggling list formatting (for example, switching between bullet and ordered lists) could cause the selection to extend unexpectedly, including content that was not initially selected. The selection would jump to adjacent lines and expand with each subsequent toggle, making it difficult to apply list changes only to the intended items.
In TinyMCE 8.4.0, the selection logic no longer considers the forced root block when the selection is not collapsed. This prevents the selection from expanding beyond the intended list items, so list formatting can be toggled without unintended selection changes.
Setting width via Table Properties did not apply when table_style_by_css was false.
Previously, when table_style_by_css was set to false, updating the width of a table through the Table Properties dialog did not apply the width attribute. The dialog only applied width when using CSS styles, which broke the functionality for users who rely on HTML attributes for table sizing.
In TinyMCE 8.4.0, updating the width through the Table Properties dialog now ensures the width attribute is applied correctly when table_style_by_css is false. The table dialog behaves as expected for both attribute-based and style-based width settings.
Tables with unitless width or height attributes could not be resized correctly.
Previously, tables that used unitless width or height attributes (for example, numeric values without px or %) could not be resized correctly. Resizing handles and column operations did not behave as expected for these tables.
In TinyMCE 8.4.0, the table resize logic correctly handles unitless width and height attributes. Tables can now be resized and modified as expected regardless of how their dimensions are specified.
Toolbars incorrectly had the role "group" instead of "toolbar". Toolbar groups incorrectly had the role "toolbar" instead of "group".
Previously, toolbars were incorrectly given the role group instead of toolbar, and toolbar groups were incorrectly given the role toolbar instead of group. This resulted in misleading semantics for screen readers, as users heard multiple "toolbars" without clear grouping structure and no accessible names.
In TinyMCE 8.4.0, the ARIA roles have been corrected so that toolbars use role="toolbar" and toolbar groups use role="group". This improves accessibility and screen reader behavior.
Dropdown menus with matchWidth: true would be located to the left of their parent if the content was sufficiently long
Previously, dropdown menus with matchWidth: true could sit to the left of the input when the field value overflowed past the right edge of the viewport, such as when pasting a long URL into the image dialog source field. Misalignment ranged from a slight offset to the menu sitting flush against the left edge of the viewport. The dropdown width was constrained to match the input, but the menu was not repositioned after that constraint, so the list no longer lined up with the field and looked disconnected.
In TinyMCE 8.4.0, the positioning logic now triggers a repositioning whenever the dropdown width is constrained. The dropdown remains aligned with the input as expected.
Attempting to remove a link after a contentEditable="false" element would not be possible.
In previous version of TinyMCE, attempting to remove a link positioned after a `contentEditable="false" (CEF) element could fail because the action flow created a bookmark that normalized the selection and shifted it into the CEF; once the cursor was inside a CEF, the selection check prevented the link-removal action (and other selection-based actions) from running.
TinyMCE 8.4.0 addresses this by capturing the selection’s target before creating the bookmark, reversing the previous order so the selection is copied prior to normalization, ensuring the selection target remains valid and link removal works as expected.
Certain deletion keyboard events in lists could not be prevented
In TinyMCE 8.4.0, an issue was identified where certain deletion keyboard events within lists could not be prevented due to the key handler being registered before the editor setup phase and without verifying whether the event had already been prevented. As a result, attempts to intercept and prevent selection deletion were ineffective, limiting customization and control over list behavior.
TinyMCE 8.4.0 addresses this by updating the key handler registration to occur during the init phase, and additional checks now ensure that previously prevented events are respected.
Directionality of Hebrew was incorrect
Previously, right-to-left (RTL) directionality was not correctly set for Hebrew in the language pack. This caused the editor to render the wrong directionality when Hebrew was set as the language.
In TinyMCE 8.4.0, this issue has been addressed by ensuring that the directionality is correctly set for Hebrew in the language pack.
Bundled content CSS is now loaded into preview iframes
Previously, when the editor content CSS was bundled, it was not loaded into preview iframes. This caused a visual mismatch between the editor content area and what users saw in the Preview dialog, Suggested Edits view and Revision History view.
In TinyMCE 8.4.0, the fix checks if the content CSS is available as a bundled resource and applies it to the Preview Iframe through style tags. Bundled content CSS is now correctly loaded in the Preview Iframe.