Avoid this temptation.
When you come into a project with a lot of legacy code that has many problematic issues, it is tempting to throw in the towel and start over from scratch. After all, greenfield development allows you to use the latest versions of all the libraries and avoid all the legacy ickiness.
Many people forget that the existing code has been reviewed, tested, and run in production for a long time—several years in most cases. Your new code has not. As a result, your code will likely repeat many of the problems addressed and fixed long ago in the older code. Suffering through these problems all over again will be highly frustrating to the business.
Your new code will probably miss something important. It will probably not have all of the features the customers of the old code base enjoyed. This lack of functionality will lead to more headaches.
The better solution is to refactor the old code into components and services. Then, upgrade them separately.
Refactoring and improving are better than replacing and regretting.