Macros only render in Edit mode
This guide explains why some macros appear correctly while editing a Confluence Cloud page but disappear or show placeholders in view mode, and provides clear steps to diagnose and fix the issue.
#At a glance
Root cause is often legacy-content wrappers created during migration from Server/DC to Cloud
Nested/bodied macros (e.g., Tabs/Accordions/Sections) commonly trigger this behavior
Fix by restructuring content (manual) or using automated migrators to extract content from legacy blocks
#Why this happens
After migrations from Confluence Server/Data Center to Cloud, complex page structures that Cloud cannot safely convert are preserved inside an internal wrapper called legacy-content. Any macro or app-based macro that remains inside that wrapper may:
Render in Edit but not in View
Be skipped by migration tools
Appear duplicated (one visible copy, one hidden inside legacy blocks)
Typical triggers:
Nested or bodied macros (tabs, accordions, complex section layouts)
Marketplace app macros where Cloud storage/behavior differs from DC
Older storage formats or heavily nested macro trees
#How to confirm you’re affected
Edit the page and verify that the macro looks correct in the editor.
Publish or preview the page in View mode and check whether the macro is missing or collapsed to a placeholder.
Inspect the surrounding layout: if the macro sits inside tabs/accordions/complex sections, or the page was migrated, it’s likely wrapped by
legacy-content.
Rule of thumb: If a macro renders in Edit but not in View after migration, it is very likely still trapped inside a legacy-content block or a complex nested container that Cloud cannot fully render.
#Fix options
#Option 1: Manual cleanup (page-by-page)
Identify the affected area: Find the tab/accordion/section that contains the macro.
Move the macro macro out of the nested container.
Rebuild the layout with native Confluence structures where feasible (for example, use Expand sections instead of custom tab macros).
Replace complex containers that trigger legacy wrapping where possible.
Publish and verify the macro now renders in View.
Remove any leftover duplicate macro fragments.
Best practice: Keep macros in the top-level flow of the page or inside simple native containers (paragraphs, headings, Expand), not nested inside third-party tab/accordion macros.
#Option 2: Automated cleanup (at scale)
For large sets of migrated pages, use automated migrators that detect nested/bodied macros, extract inner content from legacy-content, and replace complex containers with native Confluence patterns (commonly Expand). This approach:
Removes legacy wrappers that hide macros
Normalizes layout for consistent Cloud rendering
Prepares inner macros for reliable view-mode display
Migrators known to extract body from legacy-content blocks include:
Refined Tabs
Mosaic Tabs
Aura Tabs
Vectors Tabs
#Troubleshooting checklist
Does the macro render in Edit but vanish in View?
Is it inside tabs/accordions/complex sections or an app macro container?
Was the page migrated from Server/DC and likely wrapped by
legacy-content?Have you tried moving the macro outside nested containers?
For bulk cases, have you run an automated migrator to remove/replace legacy containers?
After changes, did you verify View mode and remove any duplicates?
#Recommended patterns for reliable rendering
Use native headings, paragraphs, and Expand for structure
Avoid nesting macros inside marketplace tab/accordion macros
Minimize macro nesting depth—keep macros close to the page’s top-level flow
After edits, always verify in View mode before considering the page complete
#Examples of safe restructuring
Tabs to Expand: Replace tabbed sections containing macros with one or more native Expand blocks.
Deep nesting to flat layout: Move the macro block out of inner containers into a top-level section, then link or reference from the complex area.
App macro container to native wrapper: If a macro lives inside a third‑party container macro, place the macro directly on the page or inside an Expand below a heading.
Outcome: macros render reliably in View mode, migrations proceed cleanly, and future edits are simpler.
#FAQ
Does this affect only one macro app?
Not necessarily. Any macro or macro inside legacy-content can be affected regardless of vendor.
Can I keep my exact layout?
Yes, but it may require careful manual restructuring for specific pages. Automated tools favor stable Cloud-native layouts.
How do I know if a page still contains legacy-content?
Look for view-mode rendering gaps after migration, especially where complex containers were used. Migration and cleanup tools can also report pages that contain legacy wrappers.
