• Resolved Dazze Studio

    (@dzzstudio)


    Hi,

    I wanted to raise a performance issue we are experiencing on mobile devices with the Simple Cloudflare Turnstile plugin.

    On pages where Turnstile is active, we are seeing a consistent 4-5 second delay before all page elements render fully on mobile. In some cases, scroll is also temporarily stuck during this period. As soon as the plugin is disabled, both issues disappear entirely and the pages load as expected.

    Some context on our setup:

    • WordPress with WooCommerce
    • Turnstile is enabled on the WooCommerce registration form and one appointment booking page
    • Appearance Mode is set to Interaction Only
    • Performance Plugin Compatibility is enabled
    • Defer Scripts is disabled
    • Resource Hint (Preconnect) is enabled
    • We are using Perfmatters (Defer JS is disabled)
    • Hosting is Pressable (NGINX, no server-level CSP)
    • EWWW EasyIO CDN is active
    • Patchstack is active

    The issue is mobile-specific. Desktop loads without any problem. Testing on Chrome DevTools mobile simulation also shows no issue, which suggests the problem occurs on real mobile devices under real network and CPU conditions.

    We have already ruled out the following:

    • Double-loading (we had both the global enable and individual form tags active simultaneously, now fixed)
    • Caching conflicts
    • Defer JS interfering with Turnstile script loading

    The most likely cause appears to be Turnstile’s proof-of-work challenge competing with the mobile browser’s rendering engine during script initialisation, even in Interaction Only mode.

    Is there anything in the plugin configuration that could reduce the impact on mobile render performance? And is this a known issue with any planned improvements?

    Thanks for your time and for maintaining such a great plugin.

    Jamie

    The page I need help with: [log in to see the link]

Viewing 15 replies - 1 through 15 (of 19 total)
  • Thread Starter Dazze Studio

    (@dzzstudio)

    I thought it worked as expected, without a delay etc, if we disabled EWWW > All resources (Use Easy IO for all resources in wp-includes/ and wp-content/, including JavaScript, CSS, fonts, etc.) to load via the EWWW EasyIO CDN.

    Sadly, it still loads with the delay on pages using turnstile.

    I can reproduce and confirm this with the exact same issue. Only on mobile does the page not render wel and are other actions seemingly blocked (such as a click on a hamburger menu).

    I also notice a lot of challenges of which quite a few return a 401 and a big number of blobs in the network tab, such as blob:https://challenges.cloudflare.com/0436ae22-4ef0-44f4-8e02-079576551f5f

    I am unsure whether I’ve seen those before or if that is new.

    Thread Starter Dazze Studio

    (@dzzstudio)

    I’ve been testing on other websites, using different hosting providers and ways to integrate turnstile – one is using the WP Forms integration, and I can replicate the same issues mentioned above. Dare I say it, is this a Cloudflare specific issue?

    Thread Starter Dazze Studio

    (@dzzstudio)

    @mark-jansen when you say you can reproduce the issue, is this on your own website?

    @dzzstudio Ah yes, I was unclear I’m sorry. I meant one one of my clients website yes.

    Worth flagging: Cloudflare opened a Bot Management incident on May 5. The timing lines up with when we started seeing issues. So it might have something to do with it.

    Plugin Author Elliot Sowersby / RelyWP

    (@elliotvs)

    Thanks for the details all, I’ll take a look into it.

    Though may also be Cloudflare related.

    If you spot any other potential cause or have any other useful information let me know.

    Hi @elliotvs . Thanks and will do. We have disabled the plugin for now temporarily (so visitors can at least use the site again). I will revisit this in a day or 2 and let you know what comes up.

    Thread Starter Dazze Studio

    (@dzzstudio)

    Hey @elliotvs . Thanks for the update. I’ve removed the [cf7-simple-turnstile] from the appointment form for now as well. Hopefully a simple fix?! Keep me posted please.

    tmivdesign

    (@tmivdesign)

    I am experiencing the same thing on all my sites where this plugin is installed. I have turnstile activated on other sites that are not affected. Unfortunately, it seems like the issue is with the plugin itself. Once deactivated all sites run perfectly fine and fast, with it they are delayed and scroll-locked (only on mobile). Any updates on where support is on this issue?

    Plugin Author Elliot Sowersby / RelyWP

    (@elliotvs)

    Thanks for the details – I will take a look into it this weekend.

    You’re welcome, and thank you for your work. Let me know if there’s anything I can do to help you in troubleshooting. Enjoy your week!

    We experience the same issue, whenever we have a turnstile widget on a page and visit in iOS Safari we get the page freeze. We reached out to Cloudflare support and received the below in reply that may help you investigate. They do mention switching to invisible mode should help but we get the issue using managed or invisible.

    This is a documented problem affecting Turnstile on Safari/WebKit (both iOS and macOS). The Proof-of-Work calculation blocks the main JavaScript thread on WebKit, causing UI freezes. The issue is notably more severe when Turnstile is running in invisible mode.
    Available mitigations

    1. Switch from invisible mode to managed mode
    If you are currently using mode: ‘invisible’, switching to mode: ‘managed’ significantly reduces the severity of the freeze as the challenge behavior differs between modes:
    turnstile.render(‘#container’, {
      sitekey: ‘YOUR_SITE_KEY’,
      // Change from ‘invisible’ to ‘managed’
      theme: ‘auto’
    });

    2. Use execution: ‘execute’ to defer the challenge
    Defers the PoW calculation until a specific user action rather than on page load:
    turnstile.render(‘#container’, {
      sitekey: ‘YOUR_SITE_KEY’,
      execution: ‘execute’
    });
    // Trigger only on user action e.g. form submit
    turnstile.execute(‘#container’);

    3. Reduce simultaneous Turnstile instances per page
    Each widget runs its own PoW calculation. Reducing to one per page reduces total CPU impact.

    Thread Starter Dazze Studio

    (@dzzstudio)

    Changing to Managed Mode has improved things on one of our websites. It’s for the WooCommerce registration page only, and so far testing on mobile shows zero issues. It’s not an ideal fix, as the turnstile challenge is pig ugly, but it has stopped the spam registrations from appearing. Hoping for a similar fix for the invisible mode.

    Plugin Author Elliot Sowersby / RelyWP

    (@elliotvs)

    Hi,

    Thanks for the details.

    Even though it is partially a Cloudflare issue, I am investigating this and looking to make some changes that would limit or resolve the issue on the plugins end.

Viewing 15 replies - 1 through 15 (of 19 total)

You must be logged in to reply to this topic.