WP Rocket

Elementor menu not working after WP Rocket: the fix

Title image: Elementor menu not working after WP Rocket

Step 1: Exclude jQuery

Open Settings → WP Rocket → JavaScript & CSS. Right below Load JavaScript deferred you’ll find the Excluded JavaScript Files field. Add this line:

/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js
WP Rocket, JavaScript Files with jQuery in Excluded JavaScript Files
JavaScript & CSS → JavaScript Files: the line goes into the second “Excluded JavaScript Files” field, right below “Load JavaScript deferred”

Careful, there are two fields called Excluded JavaScript Files. The first belongs to Minify JavaScript files. You need the second one, right below Load JavaScript deferred.

Step 2: One-click exclusions, if you use Delay JavaScript execution

If Delay JavaScript execution is on, open the One-click exclusions below it, expand Plugins and tick Elementor, Elementor Pro and Elementor Pro – SmartMenus. If you use Elementor’s lazy loading for background images, also tick Elementor – Lazy Load Background Images.

WP Rocket, One-click exclusions with Elementor and Elementor Pro
JavaScript & CSS → Delay JavaScript execution → One-click exclusions → Plugins

Step 3: Save and test properly

Click Save Changes and Optimize. WP Rocket clears the cache as part of that. Then test on your phone, like this:

  • in a private window, so nothing comes from the browser cache
  • don’t scroll, tap the menu first
  • reload several times and repeat

Several times matters. The bug doesn’t happen every time, see below.

Two phones with the same Elementor page after tapping the menu: on the left the menu stays closed, on the right with jQuery excluded it is open
Our lab: left without the exclusion, right with it. Same page, same settings, only the jQuery line is different.

Why this happens

Load JavaScript deferred moves all scripts to the end, jQuery included. jQuery then reports “ready” while the other scripts are still loading. Elementor starts right away and fires its start signal. If Elementor Pro hasn’t loaded yet at that moment, it misses the signal.

Menu, slider and popup come from Elementor Pro. They are then never activated. There’s no error message, the page looks completely normal, it just doesn’t respond.

It’s a race: sometimes Elementor Pro is fast enough, sometimes not. That’s why the bug is so hard to pin down. How often it went wrong in our lab, 24 fresh loads on a phone each (two rounds of 12):

jQuery excludedEnable for CSS background imagesMenu and slider work
nooff23 of 24
noon6 of 24
yesoff24 of 24
yeson24 of 24

With the jQuery line, jQuery loads normally again and only reports “ready” once all other scripts are there. That costs a little load time, 0.4 seconds on a phone for us. In return the page works on every load.

If it still doesn’t work

  • Check that WP Rocket really is the cause: add ?nowprocket=1 to your page address. WP Rocket then serves it without optimization. If the menu works that way, WP Rocket is the cause.
  • Turn off Load JavaScript deferred as a test. If the menu works then, an exclusion is missing. If you use Elementor add-ons (menu add-ons, for example), their scripts may need their own exclusions. Many of them are already in the One-click exclusions.
  • Delay JavaScript execution without exclusions: in our test the menu only opened about a second after the first tap, and the slider only started after the first touch. The option didn’t make the page any faster. We leave it off with Elementor.
  • Server or CDN cache: if your host or a CDN caches as well, clear it there too.

All numbers and the full setup are in WP Rocket for Elementor: every setting measured.

For the technically curious: how we checked

  • Lab: WordPress 7.1.4, PHP 8.4, Elementor 4.3.6, Elementor Pro 4.3.2, WP Rocket 3.24 with “Remove Unused CSS”, “Load JavaScript deferred”, LazyLoad and fonts. Reference page with burger menu (Elementor Pro Nav Menu), testimonial slider and popup. Methodology
  • Test: two rounds of 12 fresh browsers per variant, phone view, load the page, wait 1.5 seconds, check the slider, tap the menu, check after 1 second whether it is open.
  • Proof of the cause: we recorded when elementorFrontend.init() is called and when elementorProFrontend exists. In 14 of the 19 failing loads, Elementor demonstrably started before Elementor Pro, for example after 1,828 and 1,849 milliseconds. In the other 5 our measurement showed no difference in order; the jQuery exclusion helped there too. There were no console errors.
  • The exclusion: exclude_defer_js = /jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js. jQuery and jQuery Migrate then no longer get defer.
  • Raw data: raw data of the second round with all loads and timestamps (the first round was only recorded as totals). Checked on November 7, 2026.

Ben Marten

Ben Marten testet WordPress-Plugins im eigenen Labor auf Shared Hosting und schreibt auf, was die Messungen zeigen: mit Zahlen, Einstellungen zum Nachbauen und einer ehrlichen Empfehlung.
Menu

Topics

Benchnode

Legal

Choose language