AssetPilot – Granular control over frontend assets
AssetPilot helps you speed up WordPress by controlling which scripts and styles load on which pages — without guessing handle names in functions.php. Scan a real page URL, see every enqueued asset (and many from the HTML), then create rules to disable, defer, async, preload, or set fetch priority — only where your conditions match (homepage, shop, mobile, logged-in users, specific URLs, and more). Built for site owners who want measurable wins and for developers who want conditional dequeue with guardrails: validation warnings, dependency insight, scan history, and Safe Mode if something breaks. Why AssetPilot instead of a simple “unload” plugin? See before you change — scan a URL and browse assets with origin, size, and usage hints. Rules, not one-off hacks — reusable conditions (page type, archive, WooCommerce views, device, auth, URL). Bulk actions — one rule for many handles (e.g. a plugin’s scripts everywhere except checkout). Safer changes — conflict checks, impact preview, optional verification, automatic runtime pause after repeated errors. Stay in control — dependency graph, recommendations, debug logs, and Safe Mode. What you can do Disable scripts and styles you do not need on specific views Defer or async JavaScript to reduce render-blocking work Preload critical scripts, styles, fonts, and images Set fetchpriority on images and preloads Target by singular page, post type, archive, URL fragment, query string, device, login state, user role, WooCommerce page type, and scan URL Create bulk rules from the asset list Review optimization recommendations from scan data Explore asset dependencies in a visual graph Keep scan history and compare what changed over time Typical use cases Stop a plugin’s CSS/JS on pages where it is not used (blog posts, landing pages, archives) Defer non-critical scripts on catalog pages while keeping checkout intact Preload hero fonts or LCP images on key templates only Audit what Elementor, WooCommerce, or form plugins actually enqueue before tightening rules How it works Open AssetPilot → Assets and scan a page (your homepage, a product page, a form page, etc.). Pick an asset (or select several for a bulk rule). Choose an action and conditions (where the rule applies). Review validation and impact, then save. Visit the front end — use Safe Mode anytime you need to disable all runtime rules instantly. The block editor includes an AssetPilot sidebar on supported setups so you can jump from a post to asset management with context. Requirements WordPress 6.2+ PHP 8.1+ Administrator access to configure rules Frontend runtime changes apply to public site views, not the WordPress admin dashboard. Getting started First rule in a few minutes Assets → enter your site homepage URL → scan. Find a script or style from a plugin you suspect is unnecessary on the homepage. Click to create a rule → choose Disable (or Defer for scripts). Set a condition such as “this scan URL only” or “non-WooCommerce pages” if you are testing carefully. Save, open the homepage in a private window, and confirm the site still works. Use Recommendations after a few scans for ideas (duplicate libraries, large files, low usage patterns). Create Rule is opened from assets or recommendations — it is the guided wizard for actions, conditions, validation, and review. Safe Mode If the site looks wrong after applying rules, enable Safe Mode while logged in as an administrator: /wp-admin/?assetpilot-safe-mode=1 Safe Mode turns off all frontend runtime rule changes for the whole site. The admin UI, REST API, scanning, and rule editing still work. Clear any page cache after enabling if changes seem to stick. If repeated frontend fatals occur, AssetPilot pauses runtime rules for 30 minutes automatically. Resume early from Settings or: /wp-admin/admin.php?page=assetpilot-settings&assetpilot-resume-runtime=1 Development Source repository: https://github.com/amrelarabi/assetpilot Human-readable UI source is in assets/src/. Production bundles in assets/build/ are built with @wordpress/scripts. Build (contributors only): npm install npm run build PHP lives under includes/ (Composer PSR-4, AssetControl\ namespace). Third-party frontend libraries: @xyflow/react (dependency graph), react-select (rule builder fields). Extension hooks: assetpilot_rest_register, assetpilot_admin_localize, assetpilot_admin_menu_pages, assetpilot_scan_saved, assetpilot_condition_handlers, assetpilot_site_key_scan_urls, assetpilot_site_key_scan_max_urls, assetpilot_key_pages_scan_complete
Top keywords
- assetpilot14×2.02%
- scan13×1.88%
- page9×1.30%
- rule9×1.30%
- rules8×1.16%
- site8×1.16%
- pages7×1.01%
- scripts7×1.01%
- url7×1.01%
- assets6×0.87%
- mode6×0.87%
- safe6×0.87%
Site Scripts & Speed Manager
Site Scripts & Speed Manager gives you full visibility and control over every JavaScript file loading on your WordPress site. Most performance plugins offer a blanket “defer all scripts” checkbox — then you spend hours figuring out what broke. This plugin takes a different approach: see first, then optimize. Crawl your entire site or scan a single page to discover every script See exactly what each script is, where it comes from, how it currently loads, and which pages it appears on Choose per-script: Defer, Async, or None — with visual badges, filter tabs, and live search Master kill switch — if anything breaks, flip it off instantly. No cache clearing needed. Full Site Crawl Don’t just scan one page — crawl your entire site with a single click. The plugin automatically discovers your pages, posts, and category archives (up to 50 pages, 10 posts, and 5 categories), scans each one for scripts, and merges the results into a unified view. An animated progress bar shows crawl status in real-time. Per-Page Script Tracking After a full site crawl, every script shows how many pages it appears on. Hover over the count to see the list of page paths. Scripts that only load on inner pages (not the homepage) are highlighted with an “inner only” badge, so you can immediately spot page-specific scripts from plugins like WooCommerce, contact forms, or page builders. Per-Script Loading Control Each discovered script gets its own dropdown: Defer, Async, or None. No blanket rules — you choose exactly how each script loads based on what it is and what it does. Color-coded dropdowns make it easy to see your choices at a glance: blue for Defer, amber for Async. Protected Scripts jQuery Core and jQuery Migrate are automatically locked and cannot be deferred or async’d. Deferring jQuery breaks the majority of WordPress sites, so the plugin prevents you from making that mistake. Protected scripts show a lock icon and their dropdowns are disabled. Smart Script Classification Every script is tagged with a visual badge: 🔒 Protected — jQuery core / jQuery Migrate — locked, cannot be modified WP (blue) — Registered via wp_enqueue_script() — fully controllable with Defer, Async, or None EXT (amber) — Hardcoded or external scripts — shown for visibility only (must be modified at source) Filter Tabs & Live Search Filter the script table by category: All — every script found Controllable — WP-enqueued scripts you can modify External — hardcoded/third-party scripts (display only) Protected — locked scripts (jQuery) Inner-Page Only — scripts not found on the homepage (appears after a full site crawl) Type in the search box to instantly filter by handle name or source URL. Filters and search work together. Stats Dashboard A real-time stats bar shows total scripts, controllable count, deferred count, async count, external count, and pages scanned (after a full crawl). Stats update automatically when you change strategies. Bulk Actions Defer All — sets every controllable script to Defer in one click Reset All — clears all strategies back to None Save Settings — persists your choices to the database Master Kill Switch A prominent on/off toggle at the top of the page. When active, the plugin modifies script tags on the front-end. When off, all scripts load normally — no changes are applied, no cache clearing needed, and your saved settings are preserved for when you turn it back on. Built-in Strategy Reference Detailed cards built right into the admin page explain exactly what each loading strategy does: None (Default) — The browser downloads and runs the script immediately, pausing HTML parsing. Required for jQuery and scripts that must run before the page renders. Defer (Recommended) — The browser downloads in parallel with HTML parsing, then executes after the document is fully parsed. Maintains execution order among deferred scripts. Best for most scripts. Async — The browser downloads in parallel, then executes as soon as the download is complete — regardless of HTML parsing state. Execution order is not guaranteed. Best only for fully independent scripts like analytics and tracking pixels. Each card includes detailed “When to use”, “Impact”, and “Caution” guidance. Modern Admin UI A completely custom-built interface with CSS custom properties for consistent theming, color-coded dropdowns, change highlighting (modified rows turn amber until saved), responsive layout for all screen sizes, animated progress bar during crawls, and hover-to-expand source URLs in the table. Zero Bloat No external API calls. No tracking or analytics. No ads, banners, or upsells. No additional database tables. All settings are stored in a single wp_options row. Who Is This For? WordPress developers who want granular script control without writing code Site owners looking to improve Core Web Vitals and page speed scores Agencies managing multiple client sites that need per-site optimization Anyone tired of blindly deferring scripts and breaking things