Compatibility and migration
The Forge version of Custom HTML, CSS & JavaScript preserves the two historical Confluence macro module keys so existing page content can continue to render.
Macro modes
| Macro | New insertion | Existing macro rendering | Source model |
|---|---|---|---|
| Custom Code Macro HTML CSS JS | Available | Supported | HTML body fragment |
| Custom Code Macro HTML CSS JS Advanced | Hidden | Supported and editable | Complete HTML document |
The Advanced macro remains hidden to prevent new uses of the legacy mode, but it is retained so existing pages do not need to be manually recreated.
Existing Connect macros
Earlier versions stored custom code in the Connect macro body. When the Forge app encounters an existing macro without a saved Forge source value, it uses that legacy body to render the macro.
The first time an editor saves that macro, the body is copied into the Forge source configuration parameter. This is a one-time storage-format migration for that macro instance. Publish the Confluence page after saving to retain the migrated configuration.
Compatibility changes
The move from Connect to Forge intentionally keeps self-contained inline content while removing integrations that would weaken isolation.
| Behavior | Current result |
|---|---|
| Inline HTML, CSS, and JavaScript | Supported |
| Existing Normal and Advanced macro content | Rendered without reopening the macro |
Connect AP.* API | Not supported |
Connect CDN all.js script | Does not load |
| New Advanced macros | Not available |
| External scripts, styles, images, frames, and network requests | Blocked |
Native alert(), confirm(), prompt(), and print() | Blocked |
| PDF or Word export rendering | Not supported |
If a legacy macro depends on AP.*, an external library, a remote image, or a network request, rewrite it as a self-contained macro or host the needed content in a supported Confluence-native location.
For the reason behind these limits and the remaining risk boundary, read Security and limitations.