This conversation is all pervasive in enterprises that are supporting mission critical customer functions.
All approaches have different purposes, effects, values, costs, risks and impacts. The answer is more often than not a combination of the available solutions. It is never one versus the other.
Historically, the modernization spend on an application is about 3x the cost of initial development and deployment. This has to be aligned with the greater functional capabilities sought by the various stakeholders.
Provide an API layer on top of traditional applications where years of customer feedback and internal innovation is invested. The complexity of the implementation will be hidden behind the API layer. This ensures a refresh on the look-and-feel without impacting the critical functions.
Rectify & refactor
This is to set up a constant agile process in place to seek user feedback and prioritize the technical debt to refactor the code and be positioned for functional relevance with the stakeholders.
Re-architect and rebuild
This approach is the drastic and bold step of rewriting the application to take advantage of the emerging technologies to completely reposition the product/platform to the forefront of current innovations.
This offers the ability for the application to be more broadly available without being limited by the constraints of internal IT infrastructure.
Upgrade the technology framework
This is to ensure the application with all its current functions is migrated to the latest stable release of the core framework. For instance, a legacy .NET application may be migrated to the latest release of the framework to take advantage of the performance and security features. This sets for greater longevity of the platform for making future investments into the application with the talent pool generally available.
All of the above require an able partner that has the breadth of experience across a multitude of industries to ensure the stakeholder value is constantly prioritized and delivery risk is mitigated.