Check the rendered layers first
Follow the sequence below from start to finish. The order matters: later steps assume the earlier ones are done.
- Publish or preview at the affected viewport width.
- Open the Layers panel and confirm the menu trigger is above decorative overlays.
- Check that the open menu has a visible height, width and z-index.
- Confirm the close interaction changes the same state that opens the menu.
- Test each link from the published domain, including anchor links.
Preview versus mobile causes
The list below breaks this down into the parts that matter most. Read through each one and note anything that applies to your own setup.
- A desktop visibility setting may hide the mobile trigger.
- A fixed overlay can intercept pointer events.
- An interaction may target a renamed component variant.
- A menu can open outside the viewport because its position is relative to the wrong parent.
- An anchor can land under a fixed header without a scroll offset.
Diagnostic sequence for a stuck menu
Here is the process broken into clear steps. Take them one at a time and check each off before continuing.
- Tap the trigger once and check the open state is registered in the Layers panel.
- Tap it again and confirm the same interaction closes it rather than a second, separate one.
- Scroll the page while the menu is open and check it stays fixed rather than scrolling away.
- Rotate the device or resize to landscape and check the menu still fits the viewport.
- Reload the page directly on a subpage and confirm the menu still opens without visiting the homepage first.
Warning signs of a deeper structural problem
Before making changes, work through the points below. Each one covers a different part of the picture, so treat them as a set rather than picking favourites.
- The menu works on one page but not another built from the same header component.
- Links work in the editor but 404 once published, which points to a routing or slug mismatch.
- The trigger only responds after a delay, which usually means an interaction is queued behind an entrance animation.
- Different browsers show different results, which points to a CSS feature rather than the interaction itself.