Title: QueueForge – Interaction to Next Paint Fixer
Author: Gunjan Jaswal
Published: <strong>July 2, 2026</strong>
Last modified: July 2, 2026

---

Search plugins

![](https://ps.w.org/queueforge-inp-fixer/assets/banner-772x250.png?rev=3594458)

![](https://ps.w.org/queueforge-inp-fixer/assets/icon-256x256.png?rev=3594470)

# QueueForge – Interaction to Next Paint Fixer

 By [Gunjan Jaswal](https://profiles.wordpress.org/gunjanjaswal/)

[Download](https://downloads.wordpress.org/plugin/queueforge-inp-fixer.1.0.0.zip)

 * [Details](https://mlt.wordpress.org/plugins/queueforge-inp-fixer/#description)
 * [Reviews](https://mlt.wordpress.org/plugins/queueforge-inp-fixer/#reviews)
 *  [Installation](https://mlt.wordpress.org/plugins/queueforge-inp-fixer/#installation)
 * [Development](https://mlt.wordpress.org/plugins/queueforge-inp-fixer/#developers)

 [Support](https://wordpress.org/support/plugin/queueforge-inp-fixer/)

## Description

Google’s Core Web Vitals now use **Interaction to Next Paint (INP)** instead of 
First Input Delay. Caching plugins make pages _load_ fast, but they do nothing about
the bloated JavaScript from other plugins, themes, ads, and analytics that blocks
the browser’s main thread and makes mobile interactions feel choppy.

QueueForge INP Fixer attacks INP directly:

 * **Delays eligible JavaScript** until the visitor’s first scroll, tap, key press,
   or mouse move. The main thread stays free during the critical early window, so
   the page responds immediately.
 * **Yields the main thread between scripts** when the deferred code finally runs,
   using the native `scheduler.yield()` (with a `setTimeout` fallback) so the queued
   scripts do not re-block the thread in one long task.
 * **Fallback timeout** loads delayed scripts automatically after N seconds even
   with no interaction, protecting analytics and ad impressions.
 * **Live INP overlay** for admins shows measured INP and long-task blocking time
   right on the front end, using `PerformanceObserver` (`event` + `longtask`).

#### Key Features

 * Delay all eligible third-party / theme JavaScript until first interaction
 * Main-thread yielding between deferred scripts (`scheduler.yield()` + fallback)
 * Configurable fallback timeout (0 = interaction only)
 * Optional jQuery delay (off by default for safety)
 * Keyword exclusion list, plus per-tag `data-no-optimize` opt-out
 * Skips logged-in editors so page builders keep working
 * Live INP + blocking-time debug overlay (admins only)
 * `?queueforge_off` URL switch to bypass the delay for one page load
 * No database writes on the front end; nothing is cached or stored per visitor

#### Why INP?

INP measures how quickly the page visually responds to _every_ interaction across
the whole visit, not just the first one. The single biggest cause of poor INP is
JavaScript executing long tasks on the main thread while the user is trying to interact.
Delaying that JavaScript until it is actually needed — and breaking its execution
into yield-separated chunks — is the most direct fix.

#### Developer-Friendly

 * `qfinp_exclusions` filter to programmatically add never-delay keywords.
 * Uses an output buffer on `template_redirect`; no edits to your theme or other
   plugins.

## Installation

 1. Upload the `queueforge-inp-fixer` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the ‘Plugins’ menu in WordPress.
 3. Visit **Settings  QueueForge INP** to tune the delay, exclusions, and debug overlay.
    Defaults work out of the box.

## FAQ

### Will this break my site?

Delaying JavaScript can affect scripts that expect to run before interaction (consent
banners, some sliders, reCAPTCHA). Add a keyword for those scripts to the exclusion
list, or add `data-no-optimize` to the tag. Logged-in editors are skipped by default
so you can preview safely.

### Does it delay jQuery?

No, unless you enable “Delay jQuery”. Many themes assume jQuery is present at load,
so it is opt-in.

### How do I test the effect?

Enable the **Live INP overlay** in settings and browse the front end while logged
in as an admin. Compare against a page loaded with `?queueforge_off` appended to
the URL.

### Does it work with caching plugins?

Yes. It rewrites the HTML as it is generated; the result can be cached normally.
It complements page caching rather than replacing it.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“QueueForge – Interaction to Next Paint Fixer” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ Gunjan Jaswal ](https://profiles.wordpress.org/gunjanjaswal/)

[Translate “QueueForge – Interaction to Next Paint Fixer” into your language.](https://translate.wordpress.org/projects/wp-plugins/queueforge-inp-fixer)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/queueforge-inp-fixer/),
check out the [SVN repository](https://plugins.svn.wordpress.org/queueforge-inp-fixer/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/queueforge-inp-fixer/)
by [RSS](https://plugins.trac.wordpress.org/log/queueforge-inp-fixer/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * Initial release: interaction-delayed JavaScript, main-thread yielding, fallback
   timeout, exclusions, logged-in skip, and live INP/long-task overlay.
 * All output is escaped late, including the admin-notice nonce passed to inline
   JavaScript via wp_json_encode().
 * Every function, option, and the localized config object uses the qfinp prefix
   to avoid conflicts with other plugins.

## Meta

 *  Version **1.0.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/queueforge-inp-fixer/)
 * Tags
 * [core web vitals](https://mlt.wordpress.org/plugins/tags/core-web-vitals/)[inp](https://mlt.wordpress.org/plugins/tags/inp/)
   [javascript](https://mlt.wordpress.org/plugins/tags/javascript/)[performance](https://mlt.wordpress.org/plugins/tags/performance/)
   [web vitals](https://mlt.wordpress.org/plugins/tags/web-vitals/)
 *  [Advanced View](https://mlt.wordpress.org/plugins/queueforge-inp-fixer/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/queueforge-inp-fixer/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/queueforge-inp-fixer/reviews/)

## Contributors

 *   [ Gunjan Jaswal ](https://profiles.wordpress.org/gunjanjaswal/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/queueforge-inp-fixer/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://ko-fi.com/gunjanjaswal)