I feel like the ultimate goal to handle technical debt is to use as much native languages and self developed components and assets as possible. I have been upgrading a couple of "old" Angular v2 micro applications for the past 6 months now in my consultancy job. Moving them from blank linux servers to Openshift platform and upgrading Java backend and Angular frontend in the process. Backend side is quite straight forward as there is now much going on, just serving assets and proxying http calls to the service layer. But frontend is a completely different story. I do not have my work laptop with me right now but I have a list of almost 20 major steps I have had to repeat with every single application when it comes to technical debt. These include a lot of deprecated syntaxes, compatibility errors, outdated libraries, upgraded modules etc. The biggest overhead comes when a library has been introduced to the codebase to handle a very simple but important task but that library has not been maintained for years and is completely not compatible with the latest versions of the framework. This requires to get rid of that library and either replace it with a new library or handwrite the logic. I went with the latter one.
What I have learned during this process is that if you have time and money to spend and you have to choose to handle a specific task and either introduce a new library or handwrite the logic, try to see if it is possible to choose the latter. It's not nice to reinvent the wheel but a lot of good might come out of it, who knows maybe a better library with a longer lifecycle.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.