Most client side processing in TYPO3 use jQuery to build new DOM elements dynamically. While this is fine for tiny adjustments it becomes pretty difficult for applications that required much more templating and logic such as conditional rendering or iterations.
Rich application frameworks (e.g. Angular, Vue, Polymer, React, ...) would simply be too much for the first step, besides that it would raise requirements on the build chain and lower the possibility of extensibility through extensions at the same time. For the future it could be considered to introduce a lightweight data-binding framework as well - e.g. Rivet.js or similar solutions.