Macros only render in Edit mode

#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

  1. Edit the page and verify that the macro looks correct in the editor.

  2. Publish or preview the page in View mode and check whether the macro is missing or collapsed to a placeholder.

  3. 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.

#Fix options

#Option 1: Manual cleanup (page-by-page)

  1. 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).

  2. Replace complex containers that trigger legacy wrapping where possible.

  3. Publish and verify the macro now renders in View.

  4. 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?

  • 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.

#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.