I'll try to be concise so as to not make this into a blog post. If there are specific questions, let me know and I'll do my best to answer them.
Basically, I'm interested in what methodologies people have come up with, and what benefits and short-falls they experienced, for managing the transition of a project from one framework (or one programming language, or one technology stack) to another.
Suppose you had a simple web application written in a once-popular back-end framework that ran on a single Apache/Nginx/whatever server and delivered server-side rendered pages. Each time a user clicks a link to perform an action, the request is sent to the server, the one server handles the request, connects to the one database, makes the changes, then delivers a new page with the results of their action visible.
Now suppose 10 years down the line your app has grown into a widely popular behemoth and you're running into scaling concerns, you're having performance issues, you can't create features very quickly because all of the code is tightly coupled, some big names have started depending on your service being "Always Available" ™, or for some other reason you now need to change the engine underlying your app.
After weeks of research you may have made one small decisions like "Let's use React and offload a lot of the processing and display logic to the client's CPU", or you may have made multiple decisions involving splitting out your app into several micro-services and re-inventing the database using a map-reduce algorithm and a splash of machine learning. Whatever the final decision was, you need to retain feature parity with your old app and get it moved over to the new framework.
This question isn't about the technical details of this decision (e.g. "How do you do that") -- this is about the managerial details of this decision. How do you manage such a change?
Do you treat it like you're building a new app from scratch and every feature in the old app is just a user story in the new one?
Or do you treat it as a new feature for the existing app?
Should you branch off of the old code and begin the rework on a new branch of the old repository?
Or should you start a new repository for the new framework, since merge conflicts are not only expected but almost a roadblock as your underlying models and assumptions could be entirely different?
What becomes of the old app during the transitional period? Should you feature-freeze it to make parity easier? Or should you continue to develop in parallel?
I literally had no idea what tags to choose. Please help.