You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The data-dot-* attributes that the Universal Visual Editor (UVE) relies on for edit mode (drag-and-drop, contentlet selection, container metadata, etc.) are being rendered into the live / production output by the dotCMS SDKs.
These attributes — e.g. data-dot-object, data-dot-identifier, data-dot-accept-types, data-dot-basetype, data-dot-title, data-dot-inode, data-dot-container, data-dot-uuid, data-dot-on-number-of-pages, data-max-contentlets, data-dot-content-type-variable — are only meaningful inside the editor (UVE iframe). When the page is served in live mode they serve no purpose and bloat the final markup.
Impact: Every customer using a dotCMS SDK to render pages ships this editor-only metadata to end users in production. It generates unnecessary noise in the final HTML output, increases payload size, leaks internal identifiers/structure into public markup, and clutters the DOM that customers inspect and debug against.
Affected: All SDKs (React, Angular, JS) — the leak is in the shared rendering logic, not framework-specific.
The reporter's screenshot shows the same wrapper carrying the full set of data-dot-* editor-only attributes while served in live mode.
Acceptance Criteria
When a page is rendered in live mode via any SDK (React, Angular, JS), no data-dot-* editor-only attributes are present in the output DOM.
When the same page is rendered inside the UVE editor (edit mode), all required data-dot-* attributes are still emitted so editing continues to work.
The mode distinction (edit vs. live) is driven by the SDK's existing editor-context detection — no new configuration is required from the customer.
Container and contentlet wrappers in live mode contain only the attributes the customer/app legitimately needs (e.g. classes), not internal identifiers (data-dot-inode, data-dot-identifier, data-dot-uuid, etc.).
Verified across the React/Next.js, Angular, and JS SDKs.
A regression test asserts that live-mode rendering produces markup free of data-dot-* attributes.
Problem Statement
The
data-dot-*attributes that the Universal Visual Editor (UVE) relies on for edit mode (drag-and-drop, contentlet selection, container metadata, etc.) are being rendered into the live / production output by the dotCMS SDKs.These attributes — e.g.
data-dot-object,data-dot-identifier,data-dot-accept-types,data-dot-basetype,data-dot-title,data-dot-inode,data-dot-container,data-dot-uuid,data-dot-on-number-of-pages,data-max-contentlets,data-dot-content-type-variable— are only meaningful inside the editor (UVE iframe). When the page is served in live mode they serve no purpose and bloat the final markup.Impact: Every customer using a dotCMS SDK to render pages ships this editor-only metadata to end users in production. It generates unnecessary noise in the final HTML output, increases payload size, leaks internal identifiers/structure into public markup, and clutters the DOM that customers inspect and debug against.
Affected: All SDKs (React, Angular, JS) — the leak is in the shared rendering logic, not framework-specific.
Steps to Reproduce
data-dot-*edit-mode attributes (see screenshot below).Expected: In live mode, the SDK should emit clean markup with no
data-dot-*editor metadata.Actual: Edit-mode
data-dot-*attributes are present in the live output.Reference
Acceptance Criteria
data-dot-*editor-only attributes are present in the output DOM.data-dot-*attributes are still emitted so editing continues to work.data-dot-inode,data-dot-identifier,data-dot-uuid, etc.).data-dot-*attributes.dotCMS Version
Latest from main branch.
Severity
Medium - Some functionality impacted
Links
NA