GeneratePress troubleshooting

GeneratePress Mobile Menu Not Working: Find the Layer That Broke

At 768 pixels wide, GeneratePress stops drawing your menu and draws a button instead. Everything after that tap depends on one small script, a few lines of inline CSS and, on sites with GP Premium, three modules that can each take the button over without telling the others.

October 14, 2026 · 9 min read

The short answer

When the GeneratePress mobile menu fails, check in this order: a speed plugin delaying, combining or trimming the theme's menu script and CSS; the Off Canvas Panel set to Mobile only with no Off Canvas Menu assigned; the Mobile Header or navigation disabled on that page; and the 768px breakpoint. Purge every cache after each change and test on a real phone.

On this page
  1. What visitors run into on a phone
  2. One script, inline rules and three premium modules
  3. Seven suspects on a GeneratePress site, ranked
  4. 768 pixels, tablets and the breakpoint you can move
  5. Getting the GeneratePress menu to open again
  6. Keeping the button alive after the next plugin
  7. When the menu is a symptom of the stack

What visitors run into on a phone

A broken GeneratePress menu rarely announces itself. The owner checks the site on a laptop, where the horizontal menu works, and the complaint arrives weeks later from a customer who could not find the contact page. When you finally pick up a phone, the failure usually looks like one of these.

  • The button does nothing. The three lines may flip to an X, or may not, but no links appear.
  • The panel opens empty. A slide-in panel appears with a close button and nothing to tap.
  • The menu opens but sub-items are out of reach. Tapping a parent item loads that page instead of showing its children.
  • Tablets get a squashed desktop menu. At 800 or 900 pixels wide the links wrap onto two rows and there is no button at all.
  • The button vanishes on certain pages. The home page has a menu; a landing page or a product page does not.

Each symptom points to a different layer, which is why guessing wastes an afternoon. The general mobile menu troubleshooting guide covers the problem across themes; this page sticks to the parts only GeneratePress has.

One script, inline rules and three premium modules

The free theme keeps the mobile menu small. It loads a file called menu.min.js only when a Navigation Location is set, so choosing No Navigation in Appearance > Customize > Layout > Primary Navigation removes both the menu and its script. Just before that file, the theme prints a tiny inline variable named generatepressMenu holding labels and one setting the script reads when a sub-menu arrow is tapped. Tapping the button adds a class called toggled to the navigation, and a rule in the theme's main stylesheet shows the list once that class is present.

The rules that hide the desktop list and show the button at 768 pixels and below are not in that stylesheet. Reading the 3.6.1 source, they are generated in PHP and printed inline on every page, outside the cached Customizer CSS. With Navigation Location on Float Right, the default, the button sits inside the header itself. GP Premium's Menu Plus module then adds the Mobile Header, the Off Canvas Panel and Sticky Navigation, plus a Mobile Menu Breakpoint slider. Any of these can own the button on a given site.

Seven suspects on a GeneratePress site, ranked

The list runs from the quickest test to the slowest, and the first two cover the most moving parts. Work down it and stop at the first test that fails. None of them requires editing theme files.

  1. 1.A speed plugin rearranged the script. Delay, defer or combine settings can run menu.min.js before its inline variable exists, or hold it until the visitor's first interaction, so the first tap goes nowhere. Test: open the browser console on the live page and look for an error mentioning generatepressMenu, then turn off JavaScript optimization and retest.
  2. 2.Unused CSS removal stripped the open state. No element carries the toggled class when the page loads, so a tool that keeps only the CSS it sees in the initial HTML can discard the rule that shows the list. Test: switch that feature off and purge.
  3. 3.Off Canvas Panel is set to Mobile only with an empty menu. In that mode the panel replaces the mobile menu. Test: Appearance > Menus > Manage Locations, and confirm a menu is assigned to Off Canvas Menu.
  4. 4.The page has the menu switched off. GP Premium's Disable Elements tab in the Layout meta box can hide the Mobile Header or Primary Navigation on one page; a Layout Element can do it on hundreds. Test: compare a working page with a broken one.
  5. 5.A custom header removed the button. A Site Header Block Element, or a Hook Element on generate_header with Disable Site Header ticked, replaces the theme header. With a floated navigation, the button lived inside it. GeneratePress header not showing covers this from the other side, and Elements not displaying covers rules that misfire.
  6. 6.The breakpoint does not fit the menu. Between 769 and 1,024 pixels the desktop menu stays, and long menus wrap. The next section covers this.
  7. 7.Something is sitting on top of the button. A cookie banner, chat bubble or sticky bar with a higher stacking order catches the tap. Test: inspect the button area and see which element receives the click.

If the button only fails while your cache is warm, the problem is an old page, not the menu. Our GeneratePress CSS not updating guide explains where stale copies hide.

768 pixels, tablets and the breakpoint you can move

The vendor's documentation is plain about the default: below 768 pixels the navigation becomes the mobile menu. GeneratePress treats 769 to 1,024 pixels as tablet, and a tablet in portrait mode gets the full desktop menu. That suits a short menu. A menu with eight items and a phone number button will wrap or overflow on an iPad-sized screen, and owners report it as broken even though the theme is doing exactly what it was told.

With GP Premium, the Mobile Menu Breakpoint slider in Menu Plus moves the switch anywhere from 0 to 2,000 pixels, and the documentation says it also controls the Mobile Header. Without GP Premium, the same change takes a short PHP filter, generate_mobile_menu_media_query, added through a child theme or a code snippets plugin. Because those mobile rules are rebuilt on every request rather than cached, the new breakpoint shows up as soon as page caches are cleared.

Two details trip people up. Navigation Drop Point, a free setting, is something else: it only decides when a floated menu drops onto its own line under the logo. And any custom CSS written for 768 pixels will not follow your new breakpoint, so search your Additional CSS for media queries and update them together.

Getting the GeneratePress menu to open again

  1. 1

    Reproduce it logged out

    Open the page in a private window on a real phone, not just the browser's device emulator. Note which symptom you see and which pages it affects.

  2. 2

    Read the console

    Connect the phone to desktop developer tools, or use the emulator, and look for red errors after tapping. An error naming generatepressMenu or menu.min.js points straight at script optimization.

  3. 3

    Exclude the theme's menu files

    In your speed plugin, exclude menu.min.js and its inline generatepressMenu script from delay and combine settings, and keep the toggled rules in any unused CSS safelist. Purge the plugin, host and CDN caches.

  4. 4

    Check menu locations

    Under Appearance > Menus > Manage Locations, assign your menu to Primary Menu, and to Off Canvas Menu if the Off Canvas Panel is on. An unassigned primary location makes the theme list every published page instead.

  5. 5

    Check the page's own settings

    Open the broken page's Layout meta box and clear any Disable Elements ticks for Mobile Header or Primary Navigation. Then filter Appearance > Elements for Layout Elements and Site Header Block Elements whose display rules include that page.

  6. 6

    Set the breakpoint to fit the menu

    Narrow the browser until the menu wraps, note the width, and set Mobile Menu Breakpoint (Menu Plus) or the generate_mobile_menu_media_query filter just above it.

  7. 7

    Retest every template

    Check the home page, a post, an archive, a product and any landing page, logged out, on two phones.

Keeping the button alive after the next plugin

GeneratePress itself changes slowly; the free theme's last wordpress.org release was 3.6.1 on December 1, 2025. Mobile menus on GeneratePress sites break when the parts around the theme change: a new speed plugin, a new setting inside an old speed plugin, a consent banner or a header rebuilt as a Block Element. When a menu did break right after an update, start with theme broke after update. Otherwise the habit that works is a short ritual after each of those changes, not after theme updates alone.

  • Keep a written list of the theme files excluded from optimization, so the next person to touch the speed plugin does not undo them.
  • After any change to Elements, open one page of every template on a phone and tap the button.
  • Give each Layout Element a name that says what it hides, such as Landing pages: no navigation.
  • Test with the cache warm, because that is what visitors receive.

If nobody on your team owns that ritual, our hosting and maintenance plans include tested updates and a person who taps the button. For a deeper look at the theme's settings and add-ons, read the GeneratePress review.

When the menu is a symptom of the stack

A mobile menu is three small pieces: markup, a script and a few CSS rules. On a GeneratePress site those pieces are fine when they leave the theme. They break in transit, after a caching plugin, a script optimizer and a premium module have each had a turn. The GeneratePress speed guide shows how to tune that chain without cutting the menu out of it.

Sometimes the tuning never ends. If the site keeps a speed plugin mainly to hide the weight of everything else, a Next.js build ships the menu as part of one tested codebase, where nothing rearranges scripts on the live server. It costs more up front and needs a developer for layout changes. GeneratePress vs Next.js weighs it fairly, and moving GeneratePress to Next.js shows what the move involves. For a fix today, our theme troubleshooting team will find the broken layer and show you.

Questions people ask before they call

No menu is assigned to the Primary Menu location, so the theme falls back to a list of all published pages. Go to Appearance > Menus > Manage Locations, assign your menu to Primary Menu, save, and purge caches. If you use the Off Canvas Panel, assign a menu to Off Canvas Menu too. More GeneratePress quirks are in our repair hub.

Yes. The free theme exposes a PHP filter, generate_mobile_menu_media_query, that changes the width where the button appears. Add it through a child theme or a code snippets plugin. GP Premium's Menu Plus module turns the same change into a Mobile Menu Breakpoint slider from 0 to 2,000 pixels, which also controls the Mobile Header. Our GeneratePress pricing page lists what Premium includes.

On mobile, GeneratePress opens sub-menus from the small arrow beside the parent, so the parent itself stays a link. To make the whole item open the sub-menu, set Navigation Dropdown to Click - Menu Item, which also changes desktop and stops the parent linking, or make the parent a custom link with # as its address.

Only when it is set to Mobile only or On. Then the menu button opens the panel, which shows whatever menu is assigned to the Off Canvas Menu location plus any widgets in its widget area. If that location is empty and no widgets are placed, the panel slides in blank. The Off Canvas Panel is part of GP Premium's Menu Plus module.

Exclude the menu script and its inline variable from delay and combine features, and protect the toggled rules from unused CSS removal. The cost is tiny; the vendor says the whole theme adds under 10kb gzipped. If excluding files leaves you with little to optimize, see Kadence vs GeneratePress and our troubleshooting hub for where the weight really comes from.

Free · No obligation

Get your GeneratePress menu working on every phone

Send us the page that fails and the phone you tested on. We will find the layer that broke it, tell you what we found and quote the fix before touching anything.

Which of these sounds like you? (pick any)

Rather talk now? Call (210) 346-0848.

CallGet a quote