TinyMCE 7.9.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 7.9.0 was released for TinyMCE Enterprise and Tiny Cloud on Wednesday, May 14th, 2025. These release notes provide an overview of the changes for TinyMCE 7.9.0, including:
Accompanying Premium self-hosted server-side component changes
The TinyMCE 7.9.0 release includes accompanying changes affecting the TinyMCE self-hosted services for the following plugin:
-
Spell Checker plugin
tinymcespellchecker
.
For information on:
-
The Spell Checker plugin, see: Spell Checker plugin.
-
Deploying the server-side components, see: Server-side component installation.
The Java server-side component has been updated to the following version:
-
ephox-spelling.war
: 2.130.1
Updating the self-hosted server-side components
The new versions of the server-side services provide updates for the Java-based server-side components. To deploy the updated version of the server-side components:
The ephox-<plugin>-docker-starter-kit.zip is no longer supported as of TinyMCE 7.7.2. However, until further notice, WAR files will continue to be included in the ZIP distribution of TinyMCE. These files require manual updates when deploying self-hosted services. To update:
|
-
Update your Java Application Server to the minimum required version:
-
Eclipse Jetty:
-
9.4+ (with extended support)
-
-
WebSphere Application Server (WAS) 8 or later
-
Apache Tomcat:
-
10 (See note below)
-
9+
-
8.5.12+
-
8.0.42+
-
7.0.76+
Tomcat 10 will require WAR files to be placed in the webapp-javaee directory rather than the webapps directory due to the change to Jakarta servlets. Jetty 11 is not currently supported due to this change. -
-
-
Replace the existing server-side
.war
files with the.war
files bundled with TinyMCE 7.9.0 or later.
For information on:
-
Deploying the server-side components, see: Server-side component installation.
-
Deploying the server-side components using Docker, see: Containerized service deployments.
There are no functionality changes in these updated server-side components. |
Accompanying Premium plugin changes
The following premium plugin updates were released alongside TinyMCE 7.9.0.
Accessibility Checker
The TinyMCE 7.9.0 release includes an accompanying release of the Accessibility Checker premium plugin.
Accessibility Checker includes the following fix.
Adjusted spacing in accessibility checker component for better visual alignment
Previously in TinyMCE, the error card for the Accessibility Checker had slightly more space between content than necessary, making the dialog appear less compact.
With the release TinyMCE 7.9.0, the design has been updated to reduce the padding within the error card, ensuring a more compact and cohesive design.
For information on the Accessibility Checker plugin, see: Accessibility Checker.
Spell Checker
The TinyMCE 7.9.0 includes an accompanying release of the Spell Checker premium plugin.
Spell Checker includes the following improvement.
Spellchecking with a language that does not match the content no longer overloads the spelling server.
Previously, using the spellchecker with a language that did not match the document content could cause server overload due to the large volume of unrecognized words. This issue led to excessive CPU usage on the spelling server. In 7.9.0, TinyMCE now processes words in manageable chunks, reducing the load on the server and preventing performance degradation during spellchecking operations with mismatched language settings.
For information on the Spell Checker premium plugin, see: Spell Checker plugin.
Image Optimizer
The TinyMCE 7.9.0 release includes an accompanying release of the Image Optimizer premium plugin.
Image Optimizer includes the following fix.
Aspect ratio was not properly calculated when uploading images wider than the editor.
Previous version of the Image Optimizer plugin, an issue would occur where images wider than the editor were distorted when uploaded to the CDN.
This occurred when the image being uploaded replaced a resized version rendered from a srcset
alternative, and the aspect ratio was incorrectly calculated using the naturalWidth
of the original image and the naturalHeight
of the new image. This mismatch led to a distorted aspect ratio post-upload.
TinyMCE 7.9.0 addresses this issue. Now, the aspect ratio is now correctly calculated using both the naturalWidth
and naturalHeight
of the original image, ensuring consistent and undistorted rendering after upload.
For information on the Image Optimizer plugin, see: Image Optimizer.
Spelling Autocorrect
The TinyMCE 7.9.0 release includes an accompanying release of the Spelling Autocorrect premium plugin.
Spelling Autocorrect includes the following improvement.
Spelling Autocorrect no longer requires the spelling service.
Previously, the TinyMCE autocorrect plugin depended on a server-side spelling service to retrieve its list of autocorrect entries. This setup increased server load and introduced latency due to REST API calls. As of 7.9.0, the autocorrect list has been relocated to the client side, eliminating the need for a spellchecker server. This change improves performance by enabling caching and bundling of the autocorrect functionality with other client-side assets, resulting in faster load times and reduced backend dependencies.
For information on the Spelling Autocorrect plugin, see: Spelling Autocorrect plugin.
Improvements
TinyMCE 7.9.0 also includes the following improvements:
Bullet list icons were changed to better represent default styles.
TinyMCE 7.9.0 has updated the icons used for bullet lists to better represent the default styles. The new icons are more visually distinct and align with the overall design language of TinyMCE.
Resize cursor is now the correct direction for each resize mode.
Previously, when the TinyMCE editor was configured with resize: true
, which restricts resizing to the vertical axis, the editor incorrectly displayed a diagonal resize cursor. This was misleading, as the visual cue did not match the actual resizing behavior. In 7.9.0, the cursor style now accurately reflects the resizing direction: a vertical resize cursor is shown when resize: true
is used, and a diagonal cursor remains for resize: 'both'
, which allows resizing in both horizontal and vertical directions.
Tiny Technologies would like to thank daniloff200 for contributing to this improvement. |
Additions
TinyMCE 7.9.0 also includes the following addition:
Added new disc
style option for unordered lists.
Previously, TinyMCE did not offer a separate disc
styling option for unordered (bullet) lists, causing confusion as users expected the default list style to behave like a true disc style, especially for nested lists. This release introduces a distinct disc
style option, allowing users to explicitly apply disc-styled bullets to their lists.
<ul style="list-style-type: disc;">
<li>Item 1</li>
<li>Item 2
<ul style="list-style-type: disc;">
<li>Nested Item 1</li>
<li>Nested Item 2</li>
</ul>
</li>
</ul>
New onboarding
option
TinyMCE 7.9.0 introduces a new onboarding
option to enhance the developer experience during the 14-day trial period. This option controls the display of a cloud promotion banner highlighting paid features available during the trial. The banner is automatically hidden when the trial ends or when the editor is correctly configured, ensuring a smoother and less intrusive setup experience.
For more information, see onboarding.
Changes
TinyMCE 7.9.0 also includes the following change:
ContextFormSizeInput
lock button has been repositioned between the "width" and "height" inputs.
In previous versions of TinyMCE, the "lock aspect ratio" button in the ContextFormSizeInput
component was positioned at the end of the "width" and "height" input fields. This placement made it difficult to understand the relationship between the inputs and the lock functionality.
TinyMCE 7.9.0 addresses this issue. Now, the lock button has been repositioned between the "width" and "height" inputs.
Bug fixes
TinyMCE 7.9.0 also includes the following bug fixes:
The mceInsertContent
command could delete the parent block element when an anchor was selected.
The TinyMCE mceInsertContent
command could inadvertently remove the parent block element when an anchor (<a>
) tag was selected.
In scenarios where an anchor element was fully selected, the surrounding block-level parent tag, such as <p>
or <div>
, could be incorrectly removed, leading to unexpected changes in the content structure. This issue primarily affected Chrome users and did not reproduce consistently in Safari or Firefox.
This issue has been resolved in 7.9.0. The mceInsertContent
command now properly retains the parent block elements when inserting content into a selected anchor element.
Japanese keyboard could insert content while the editor was in readonly
mode
In previous versions of TinyMCE, an issue was identified where the editor permitted content insertion via IME (Input Method Editor) input, such as using a Japanese keyboard even when the editor was configured with readonly: true
.
With the release of TinyMCE 7.9.0, this issue has been addressed by implementing event handlers that intercept and block IME-related input events and their default behaviors while in read-only mode. This enhancement ensures that the readonly setting is strictly enforced, preventing content modifications from all input sources, including IME.
Autolink behavior was updated to preserve existing links.
Previously, the Autolink plugin could incorrectly re-link content that was already part of a hyperlink when the user pressed Enter at the end of a line. This occurred when the cursor was placed immediately after a link element rather than inside it and the visible text resembled a URL. As a result, Autolink could unintentionally overwrite link attributes, modify the destination URL, or alter otherwise valid markup.
TinyMCE 7.9.0 resolves this issue by treating any text inside or directly following a hyperlink as the end of its search scope. This prevents Autolink from creating a new link if the content is already hyperlinked. The behavior now consistently mirrors the existing handling for cases when the cursor is inside a link.
<p><a href="https://www.google.com" target="_blank" rel="noopener">www.google.com</a></p> <!-- before -->
<p><a href="https://www.google.com">www.google.com</a></p> <!-- after -->
This update improves reliability when working with links, ensuring that attributes and destinations remain unchanged unless explicitly edited.
Editor did not scroll into viewport on receiving focus on Chrome and Safari.
Previously the editor did not scroll into the viewport when focused via the keyboard Tab
key, causing a poor user experience as users had to manually scroll to find the editor.
The toolbar did not always account for the full available space during horizontal scrolling.
In previous versions of TinyMCE, the toolbar did not accurately account for the actual available space. As a result, the layout area allocated for the toolbar was smaller than the effective free space, leading to inconsistent resizing and positioning during horizontal scrolling.
This issue has been addressed in 7.9.0. The toolbar now correctly utilizes the available area, ensuring stable and consistent rendering within the intended layout.
Improved handling of overlapping matches in abbreviation detection.
Previously in TinyMCE, an issue occurred during pattern matching where overlapping regular expression matches caused duplicated content when processing abbreviations. For example, in the string D. dd.D.
, multiple overlapping patterns such as D.
, dd.D
, and a final D.
could be incorrectly matched and processed more than once. This resulted in unexpected duplication in the editor, such as D. dd.DDD.
.
This behavior was caused by insufficient overlap detection when identifying match regions, leading to multiple reinsertions of already matched substrings. The issue has now been resolved in TinyMCE 7.9.0 by refining the pattern-matching logic to accurately detect and avoid overlapping matches. The updated implementation ensures that each abbreviation is matched and processed only once, eliminating duplicated insertions and preserving the original content structure.
<!-- Original content typed by the user -->
<p>D. dd.D.</p>
<!-- Result after pattern matching (incorrect behavior) -->
<p>D. dd.DDD.</p>
<!-- Original content typed by the user -->
<p>D. dd.D.</p>
<!-- Result after pattern matching (correct behavior) -->
<p>D. dd.D.</p>
Inline dialog dropdowns reposition when the dialog is dragged or the window is scrolled.
Prior to TinyMCE 7.9.0, opening the preferences menu from within the Search and Replace dialog in inline mode caused the dropdown to remain fixed in its original position, even when the dialog was moved or the window was scrolled. This resulted in the dropdown becoming visually detached from its associated button and dialog, leading to a disjointed and confusing user experience.
In TinyMCE 7.9.0, this issue has been resolved. The dropdown menu now remains visually and functionally anchored to the dialog when it is dragged or when the window is scrolled. This ensures consistent and intuitive behavior, aligned with the handling of other dropdowns across the application.
Tabbing inside a figcaption
element no longer shows two text insertion carets.
Previously, when tabbing within a figcaption
element, the fake text caret was not properly hidden, resulting in both the browser’s native caret and the fake caret being rendered simultaneously. This visual duplication caused confusion for users during text navigation and editing. The issue occurred because the focus event inside editable captions did not trigger logic to hide the fake caret.
This has been resolved by updating the focus handling behavior to detect whether the focused element is within an editable context and hide the fake caret accordingly.
As a result, only a single, correct text caret is displayed when tabbing inside figcaption
elements, improving editing clarity and user experience.
Pressing enter
before a floating image sometimes duplicated the image.
Previously, when pressing Enter
before a floating image, the image could be duplicated instead of a new line being correctly inserted. This issue was due to limitations in the native content-editable behavior of Firefox, which TinyMCE previously relied on for handling new lines. In particular, Firefox did not clear line content correctly when it included floated elements, resulting in duplicated images.
With the release of TinyMCE 7.9.0, an internal new line mechanism has been introduced to replace the unreliable browser behavior. This ensures consistent and correct handling of new lines around floating content. Pressing Enter
before a floating image now behaves as expected, and duplicate images no longer appear.
Removed deprecated CSS media selector -ms-high-contrast
.
The -ms-high-contrast
media feature was previously used to apply a darker border color for improved accessibility in Internet Explorer 11. However, this feature is no longer supported and has been officially deprecated by Microsoft Edge. Its continued use triggered warnings in browser developer consoles, potentially affecting user experience during development. To enhance cross-browser compatibility and eliminate these warnings, the deprecated selector has been removed from TinyMCE in 7.9.0.
Table resizers are now visible when inline editor has a z-index
property.
Previously, table resizers were rendered outside the editor’s stacking context, causing them to appear beneath the editor when a z-index
property was applied, making them unusable.
TinyMCE 7.9.0 addresses this issue, by moving the resizers inside the editor content area, which unifies the resizer behavior across all editor modes.
Key Improvements/Benefits:
-
Integrators can now add a
z-index
such as<div id="editor1" style="min-height:200px; z-index:1;">
to the inline editor without affecting the visibility of the resizers. -
UI elements are consistently placed within the controlled stacking context, improving layout reliability.
If style_formats
is empty the button is now disabled.
Previously, when the style_formats configuration was explicitly set to an empty list, the Formats toolbar button remained enabled, displaying an empty and non-functional dropdown menu. This led to confusion, as the button appeared interactive and suggested available formatting options, despite none being configured.
In 7.9.0, the TinyMCE editor now disables the Formats button entirely when no style formats are defined. This change improves usability by clearly signaling that there are no available style options, preventing unnecessary interaction and enhancing clarity for end users.
Select UI elements were not properly styled on Chrome version 136.
Previously, the Select
UI elements were not properly styled in Chrome version 136, resulting in no visual indication of the currently selected option, which lead to usability issues.
TinyMCE 7.9.0 addresses this issue. Now, the styling for Select
UI elements had been updated to ensure the selected option is clearly displayed, restoring proper visual feedback. This improvement ensures consistent and intuitive styling for Chrome 136 and earlier versions.