← Journal
Engineering

Why AskWP Has Zero Dependencies


AskWP was designed from the ground up to be simple. No build tools, no package manager, no transpiler, no bundler. Just PHP and JavaScript files that work the moment you upload them. Here is why we made that choice and what it means for you.

The WordPress Way

WordPress itself is a zero-dependency system. You upload PHP files, and they work. That simplicity is one of the reasons WordPress powers over 40% of the web. We wanted AskWP to follow the same philosophy.

Too many modern WordPress plugins ship with node_modules folders, require build steps, or depend on external services just to function. That adds complexity, potential points of failure, and makes the plugin harder to understand, modify, and debug.

What We Mean by Zero Dependencies

  • No npm packages — The frontend widget is vanilla JavaScript. No React, no Vue, no jQuery. A single JS file that works in every modern browser.
  • No build step — Edit the PHP, JS, or CSS files directly. No need to run a compiler, bundler, or watcher. Changes take effect immediately.
  • No external services — AskWP does not phone home, does not require registration, does not depend on any service we run. The only external calls are to the LLM provider you configure.
  • No PHP packages — No Composer dependencies. Every line of server-side code is in the plugin directory.

The Trade-Offs

This approach means the widget JavaScript is not as small as it could be if we used a tree-shaken framework. It means we write some utility functions by hand that would come free with a library. It means our admin page uses WordPress's native settings API rather than a React-based SPA.

We think those trade-offs are worth it. A WordPress site owner should be able to open any file in the plugin, read it, understand it, and modify it. That is the level of transparency we aim for.

File Sizes

  • widget.js — ~45KB (unminified, readable)
  • widget.css — ~30KB (unminified, well-commented)
  • Total PHP — ~15 files, ~4,500 lines
  • No images, no fonts — Icons are inline SVGs. Fonts inherit from your theme.

The entire plugin compresses to under 100KB as a ZIP file. No bloat, no dead code, no unused dependencies.