In my opinion both has strong and weak point.
I love how flow can capture generic for higher order function and I love flow non-null types.
In the other end typescript seems 'safer' especially in the field of type inference, sometimes flow infer union types where you really would not expect to happen. Which ends up with some weird bugs.
I've worked at a couple of startups, two groups at Apple, two groups at Google and now at Twitter. I've learned two things chasing a feeling of fulfillment, like you seem to be:
1. You can't expect your job to give you the all of the fulfillment you need.
The authors makes it sound like after designing the UX, the implementation will become trivial. I think this is a bit naive because most serious applications go through many iterations of UX. Some of these changes will be small and not require significant re-plumbing, but others will necessitate a lot of behind-the-scenes churn.
My point is that it's better to design the plumbing of an application with some longer-term considerations than just "what do we need to implement that UI wireframe."
Minimal viable products are cool and all, but let's not use that as an excuse to write something that will need to be thrown out wholesale to add that big traction-building feature.
That's completely contrary to what I've experienced. Only browsers that "need" a little extra JS/CSS are the old IE versions. Quotes indicate you don't necessarily need to enhance pages in those browsers at all these days.
If your experiences indicate otherwise, you are simply doing something wrong.
PS. jQuery is horrible. Every time you think you've figured out all of their undocumented quirks, they change the logic. It's famously inept in IE 6/7.
If you don't understand basic memory management without ARC, you have no chance of ever understanding the weak reference annotations that ARC requires in certain cases (e.g. to avoid retain loops).