Not every interactive feature needs React. When plain JavaScript is the smarter trade-off, how to modernise legacy jQuery safely, and how to keep a site fast.
There is a reflex in modern web work to reach for a framework before asking whether the project needs one. Sometimes it clearly does. But for a handful of interactive features on an otherwise static or CMS-driven site, pulling in a full framework is weight you pay for on every page load and never get back. This guide is about knowing which situation you are in, and building the lighter option well when it is the right one.
When plain JavaScript is the smarter trade-off
The dividing line is state. If your project is a genuine application — lots of views, lots of interacting state — React or Next.js usually earns its complexity, and we will say so. But if you need a filter, a calculator, a booking widget, or a few interactive touches on a content site, a framework is often unnecessary weight for the job. We tell clients which side of that line their project sits on before quoting either, because the honest recommendation sometimes costs us the bigger build. When the answer is genuinely an app, our React work takes over.
Adding features to a site built elsewhere
One of our most common JavaScript engagements is adding a single clean feature to a site someone else built. A filter here, a calculator there, a booking widget on the contact page — dropped in without disturbing the rest of the site or demanding a rebuild. This is where framework-free JavaScript shines: it integrates into whatever is already there rather than insisting the whole page be rearranged around it. Larger interactive builds shade into our full web development service.
Modernising legacy jQuery safely
Plenty of working sites still run on jQuery-era code, and the instinct to rewrite it all at once is usually a mistake. A big-bang rewrite means a risky flag day where everything changes and anything can break. We modernise incrementally instead — replacing old patterns with modern JavaScript modules one at a time, testing as we go, so the site keeps working throughout. It is slower to describe and far safer to live through than a rewrite that holds its breath for a month.
Modern async, done without the pitfalls
Modern JavaScript makes asynchronous work genuinely pleasant when it is used correctly. Promises, async/await, and the Fetch API replace the callback pyramids of a decade ago — but only if loading and error states are handled rather than left to fail silently. We wire features to your data with those states built in, so a slow network or a failed request shows the user something sensible instead of a spinner that never stops. When features need to talk to a backend, this pairs naturally with our Node.js work.
Keeping it fast
The whole point of skipping a framework is speed, so it would be self-defeating to claw it back with a bloated toolchain. We keep the code dependency-light and add build tooling — Vite or esbuild — only where it earns its keep, rather than shipping a forty-dependency setup for a five-page site. Direct, efficient DOM work and careful use of browser APIs keep the footprint small, which is the trade-off you were reaching for in the first place.
Reliability and ownership
Framework-free does not mean untested. We check features across real browsers and devices with sensible fallbacks where support genuinely varies, rather than assuming everyone is on the latest Chrome. Handover includes documentation so your team or the next developer can maintain the code without reverse-engineering it, and the code is delivered to your repositories with IP assigned in writing. Small interactive features typically run in the $500–$2,500 range in our experience, with larger scripted work scoped individually and always fixed-quoted.
Choosing the lighter tool is not about avoiding modern development — it is about matching the tool to the job so the result stays fast and easy to maintain. If you have a feature to add or a pile of old jQuery to modernise, tell us what you need and we will recommend the honest option, framework or not.
Code Craft Engineering
Senior Engineering at Code Craft — the team behind our published work and products and the 39-plugin product suite.




