Job legacy-jquery-or-angularjs-feature-replacement · revised 11 October 2026
Replace one jQuery or AngularJS feature with maintained code and keep the page working
Replace one feature on a page built with old jQuery plugins or AngularJS with maintained code, proved by the same browser checks passing before and after and the rest of the page unchanged.
You might be seeing
- A feature depends on a plugin that no longer has a maintainer
- The library version appears in a security or dependency report as no longer supported
- Changing the feature is avoided because nobody is sure what else on the page depends on it
No passwords, keys, card details or admin invites needed to start.
What usually happened
The jQuery project says versions 1.x and 2.x are no longer supported and 3.x gets only critical fixes, and AngularJS support ended in January 2022. A full front-end rewrite is too large to start, so the old code stays and ages. A feature built with plugins or directives hides its contract: which markup it expects, which events it listens for or emits, which hidden fields or data attributes other code reads. Replacing it without writing that contract down breaks the neighbours: a handler that stops firing, a form field that is no longer submitted, a counter that no longer updates.
Who it’s for: A founder or engineering lead whose product still runs on jQuery 1.x or 2.x plugins or on AngularJS, and who wants to retire it one feature at a time rather than rewrite the front end.
Usually starts when: A plugin the feature depends on is abandoned, a security review flags the library version, or a new requirement cannot be built on the old stack without making it worse.
The result: One feature on one page is rebuilt with maintained code. A browser test script of the agreed behaviours, run first against the old feature and then the new one, passes both times. The old plugin or directive is no longer loaded for that feature, and other features on the same page behave as before.
Check whether this job fits
Five short questions. Your answers stay on this page unless you choose to email them.
Checks you can run yourself
Find the library versions the page loads
Open the page, view its source and search for script tags that mention jquery or angular. Or run this read-only search in a copy of the project folder; it prints only the matching file names.
grep -rhoiE "jquery[-.0-9a-z]*\.js|angular[-.0-9a-z]*\.js" --include='*.html' --include='*.erb' --include='*.php' --include='*.twig' --exclude-dir=node_modules --exclude-dir=dist --exclude-dir=build . | sort -uLook for: File names with version numbers. Send the file names, not the surrounding code.
Count how many files use the feature's plugin or directive
Replace YOUR_PLUGIN_OR_DIRECTIVE_NAME with the name of a plugin or directive the feature uses, such as the one in its script tag. Run this read-only search in a copy of the project folder and send the number.
grep -rlE "YOUR_PLUGIN_OR_DIRECTIVE_NAME" --include='*.js' --include='*.html' --include='*.erb' --include='*.php' --include='*.twig' --exclude-dir=node_modules --exclude-dir=vendor --exclude-dir=dist --exclude-dir=build . | wc -lLook for: A number. A feature whose plugin or directive appears in one or two files is a good candidate; one spread across many is not.
What you get
- The replacement feature and the removal of the old code as a pull request
- The feature contract and the browser test script, with results before and after
- A list of the remaining uses of the old library on the page, so you can see what is left
Included
- One user-visible feature, such as a multi-step form, data table, filter, date picker or modal flow, of up to about 600 lines of feature code and up to three plugins or directives
- A written contract of the feature: the markup it expects, its inputs, its outputs, the events it listens for or emits, and any hidden fields or data attributes that other code reads
- An automated browser test script of up to 15 agreed behaviours, run against the old feature before any change
- A replacement written in plain modern JavaScript or in the framework your team already uses elsewhere, agreed at scoping, that satisfies the same contract on the same page
- Removing the old feature's plugin or directive from that page, with the rest of the page's jQuery or AngularJS left running
Not included
- Replacing the whole front end, the framework or the router
- Redesigning how the feature looks or behaves
- Server or API changes, beyond what the replacement strictly needs
- Support for browsers older than your current requirement
- Upgrading jQuery or AngularJS themselves
How we know it’s done
Agreed with you before work starts. Each check produces evidence you keep.
The agreed browser test script of up to 15 behaviours passes against the old feature on the copy, and then passes unchanged against the replacement
Evidence: Two test run logs, one per version, with the same list of behaviours
Every field, event and data attribute in the written contract that other code reads is still produced by the replacement with the same name and value format
Evidence: The contract with a check result per item, including the neighbouring code that reads it
After the change, the page no longer loads the replaced plugin or directive for that feature, and a search of the page's scripts finds no remaining reference to it
Evidence: A network request list and a search result, before and after
Two named features on the same page that were not replaced pass the same manual check before and after the change, and the agreed keyboard actions work on the replacement
Evidence: A before-and-after checklist signed by the reviewer
Sign-off. You review the contract, the before-and-after test runs and the list of remaining old-library uses, then merge and deploy under your own gates. A passing script covers the listed behaviours, not every possible user action.
If it fails. If the agreed acceptance checks do not pass, you do not pay and you keep the contract and test script.
When it fits, and when we stop
It fits when
- The feature is on one page that you can run on a copy, with test data and no real customers
- The feature's behaviours can be listed, up to about 15, and exercised in a browser
- A person on your side can say what correct behaviour is and can review the pull request
- Other code that depends on the feature, such as handlers that read its fields, is in the repository and visible
We stop and tell you if
- The feature depends on code that is minified, lost or cannot legally be changed
- The feature is so entangled with the rest of the page that it cannot be separated without rewriting the page
- The behaviour cannot be exercised without live customer data or real payments
- The only available option is a framework your team does not run and cannot maintain, and no agreed alternative exists
What could go wrong
The change is a pull request your team merges, so it can be reverted like any other. The old feature's code stays in the repository history, and the page can be switched back by reverting the single change that swapped it.
Scroll the table sideways to read it all.
| Risk | How we handle it |
|---|---|
| A neighbouring script depended on a hidden detail of the old feature | The contract lists every field, event and data attribute found in the repository, and two untouched features on the page are checked before and after. |
| The replacement is less accessible than the old feature | Keyboard operation for the agreed actions is part of the browser script, run against the old feature and the new one. |
| A third-party script outside the repository reads the old markup | You list the third-party scripts on the page; any that read the feature's markup are named in the contract and checked. |
A second reviewer compares the written contract with how other code on the page uses the feature, checks the browser test script covers each listed behaviour and re-runs it from the handover notes alone.
How we deliver
We arrange the work and independent review, then show you the result against the agreed checks. You keep authority over your systems.
- Agree the feature, the list of behaviours and the definition of done, then run the page on a copy and write the feature's contract: markup, inputs, outputs, events and hidden fields
- Write the browser test script for the agreed behaviours and run it against the old feature to record the baseline
- Build the replacement to satisfy the same contract on the same page, in the approach agreed at scoping
- Switch the page to the replacement and remove the old plugin or directive for that feature, leaving the rest of the page's code in place
- Run the browser test script against the replacement, check keyboard use for the agreed actions and run a before-and-after check of two untouched features on the same page
- Independent review of the contract, the replacement and the leftover list, then hand over the pull request with the evidence and the steps to revert it
This is a one-off job, not emergency cover or a subscription. We confirm eligibility, the total price, a start window and a delivery date before you accept. Work starts only after agreed inputs, secure access, any licences and necessary permissions are in place. Hosting, platform and supplier charges are excluded unless the written quote includes them. No charge or booking is created by an enquiry.
Need to keep it working?
Discuss a follow-on to replace the next feature, or a front-end modernisation programme.
Ongoing work is separately scoped and quoted: no monitoring, response-time guarantee or automatic subscription is included in this job.
Explore an ongoing engineering lane, or mention the responsibility you need in your enquiry.
What you can check
This is a new service. We have not delivered this job for a client yet.
Other ways to get this done
- If the issue is only the library version, the jQuery project recommends upgrading and offers the jQuery Migrate plugin to restore deprecated features while you fix them. That keeps the old plugins but does not replace an abandoned one. jquery.com
- The jQuery support page also describes commercial security support from third-party providers for old versions. That buys time; it does not retire the dependency. jquery.com
- Angular's documentation describes a hybrid mode in which AngularJS and Angular coexist in one application, with components and services shared between them, which can let a team move one feature at a time. That route suits teams that have decided to adopt Angular. angular.dev
Questions
Do I have to pick a framework?
No. We normally build the replacement in plain modern JavaScript so it adds no dependency. If your team already runs a framework, we can use that instead, agreed at scoping.
Does this remove jQuery or AngularJS from my site?
No. It retires one feature's dependence on it and lists what remains. The library stays for other features until they are replaced.
What if I have ten features to replace?
Each is its own job with its own contract and test script. A programme can package several with a front-end build move.
Send an enquiry
Send us
- Which page and which feature, and a short description of what it does for the user
- The library and version: the jQuery version and plugin names, or the AngularJS version and directive names
- What other features on the page depend on it, if you know
- How the front end is built and served, and what your team already uses for new work
Later, once you agree
- A controlled copy of the page, its scripts and templates with secrets removed, through the agreed company-controlled secure handoff
- A way to run the page on a copy with test data
- Any existing tests, and a test account if the page needs a login
- A company-controlled secure handoff agreed before access: no live passwords, keys, private code or customer records by ordinary email.
You own the code, hosting and data. We work from an authorised copy with secrets removed and return a pull request that your team reviews, merges and deploys. We never ask for passwords or tokens in the first enquiry.
Email fallback: open your mail app
If website submission is unavailable, review and send the fallback email yourself. An email fallback is not a website receipt. Or write to hello@syntheticindustry.ai with “legacy-jquery-or-angularjs-feature-replacement” as the subject.