Your comments reflect my feelings at the time. Trying to push a round peg into a square hole. Angular had (and still has) some really useful features and so do many other frameworks/libraries. However, it's the combinatorial complexity of having a dozen of them at the same time, each with their own DSL, coding conventions, community (or lack of it), that makes it overkill.
By the way, as the nature of these messaging apps is mostly in async messaging, it proved quite hard to unit-test.
I imagine designing thorough unit tests for 2000 lines of code could take a few weeks, and continue to have sparse edge cases crop up over the course of years. They're nice to have for mature software components. If you're prototyping, they're a waste of time.
By the way, as the nature of these messaging apps is mostly in async messaging, it proved quite hard to unit-test.