Problem Statement
After upgrading to version v26.03.20-01, the Universal Visual Editor (UVE) stops loading on all pages for all users. The edit/add content buttons do not appear, making the authoring environment completely unusable.
Root cause: In v26.03.20-01, the dot-uve.js script injection mechanism was moved from the Angular frontend to the Java backend via two paired commits:
If the backend fails to inject the script — due to cache, proxy/CDN stripping, deploy skew (only one of the two PRs deployed), or an exception in buildUVEStyleEditorScripts() — the SET_CONTENTLET event is never fired and the floating edit/add UI never appears.
Impact: Critical — affects all users, all pages, both authoring and production environments. Customer-reported production outage (Freshdesk #36029).
Browser & OS: All browsers/OS — issue is server-side.
Steps to Reproduce
- Upgrade a dotCMS instance from v26.03.17-01 to v26.03.20-01
- Log in to the admin UI and navigate to any page in the UVE editor (Edit mode)
- Hover over any contentlet on the page
- Expected:
dot-uve-contentlet-tools (edit/add buttons) appear on hover
- Actual: No edit/add controls appear; the page renders but is not editable
Verification:
- Open browser DevTools → Elements tab → search for
dot-uve.js in the iframe document
- If the
<script src="/ext/uve/dot-uve.js"></script> tag is missing from the rendered HTML, the backend injection failed
- Also check the Network tab for 403 errors on
/ext/uve/dot-uve.js (CDN/proxy blocking)
Key files:
- Backend injection:
dotCMS/src/main/java/com/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java — injectUVEScript() method
- Frontend (script removed):
core-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/edit-ema-editor.component.ts — #insertPageContent()
- API flow:
dotCMS/src/main/java/com/dotcms/rest/api/v1/page/PageResource.java — getPageRender()
Acceptance Criteria
Acceptance criteria — To be refined. (Quick draft; details to be added later.)
dotCMS Version
- Affected: v26.03.20-01
- Last known good: v26.03.17-01
- Relevant commits between versions:
Severity
Critical - System unusable
Links
Problem Statement
After upgrading to version v26.03.20-01, the Universal Visual Editor (UVE) stops loading on all pages for all users. The edit/add content buttons do not appear, making the authoring environment completely unusable.
Root cause: In v26.03.20-01, the
dot-uve.jsscript injection mechanism was moved from the Angular frontend to the Java backend via two paired commits:89e5da9e7b): Backend now injects<script src="/ext/uve/dot-uve.js">intoentity.page.renderedfor non-LIVE modes viaHTMLPageAssetRenderedBuilder.injectUVEScript()6b87762eda): Frontend removed its own script injection (addEditorPageScriptmethod inEditEmaEditorComponent)If the backend fails to inject the script — due to cache, proxy/CDN stripping, deploy skew (only one of the two PRs deployed), or an exception in
buildUVEStyleEditorScripts()— theSET_CONTENTLETevent is never fired and the floating edit/add UI never appears.Impact: Critical — affects all users, all pages, both authoring and production environments. Customer-reported production outage (Freshdesk #36029).
Browser & OS: All browsers/OS — issue is server-side.
Steps to Reproduce
dot-uve-contentlet-tools(edit/add buttons) appear on hoverVerification:
dot-uve.jsin the iframe document<script src="/ext/uve/dot-uve.js"></script>tag is missing from the rendered HTML, the backend injection failed/ext/uve/dot-uve.js(CDN/proxy blocking)Key files:
dotCMS/src/main/java/com/dotmarketing/portlets/htmlpageasset/business/render/page/HTMLPageAssetRenderedBuilder.java—injectUVEScript()methodcore-web/libs/portlets/edit-ema/portlet/src/lib/edit-ema-editor/edit-ema-editor.component.ts—#insertPageContent()dotCMS/src/main/java/com/dotcms/rest/api/v1/page/PageResource.java—getPageRender()Acceptance Criteria
Acceptance criteria — To be refined. (Quick draft; details to be added later.)
dot-uve.jsscript tag is present inentity.page.renderedfor EDIT_MODE and PREVIEW_MODEdot-uve.jsscript tag is NOT present inentity.page.renderedfor LIVE modebuildUVEStyleEditorScripts()failures fall back gracefully to the plainSDK_EDITOR_SCRIPT_SOURCEtag (defensive Try.of wrapper)injectUVEScriptto trace injection/skip decisionsdotCMS Version
89e5da9e7b— PR add script for style editor in the BE side #34927 (backend: inject UVE script into page.rendered)6b87762eda— PR 34905 move dot uvejs script fe deletion #34995 (frontend: remove UVE script injection)9c0834db27— PR 34907 implement data dot style properties in rendered for uve #35046 (post-release: added style editor schema support to injection, changedinjectUVEScriptsignature)Severity
Critical - System unusable
Links