I'd recommend (at a high level, without knowing your exact app) that for most Single Page Applications (SPA), utilizing a combination of DTM/Launch, Data Layer and Direct Call rules. Timing is almost always an issue for SPA's so fine control of when things are happening are probably the best way of tackling this.
The DTM/Launch script still needs to be added as per normal by the developer.
Since SPA's don't follow the usual convention for setting a data layer on the page, you could ask your developers to set your data layer object first, then when the object is ready, issue a _satellite.track('your-string-here') which would trigger your rule in the tag manager to send your values to Analytics. The track call would typically be set in the code after the success callback of the page being rendered.
There are likely other modules and tools which people have created on Github to help, but the above method would adapt if you should decide to change your framework in the future.