Great analysis, but I’m skeptical of the quality of Kotlin’s static analysis. Automatic type inference is very helpful with languages like JavaScript where creating objects of arbitrary shape is very easy. Understanding inheritance and checking for null /undefined dereferencing is critical as well. When you’re working with data returned from the server, it’s also nice for that to be strongly typed.
I’ve had great success with Facebook’s Flow. It plays well with React and is a much better solution than the PropTypes runtime checking you get by default with React. Other libraries such as Relay create flow types for GraphQL APIs. It’s not perfect (namely due to language limitations around arrays) but it greatly reduces the occurrences of silly and sometimes not so silly mistakes.
Also, inline with your “don’t reinvent the wheel” theme, I think Flow for JSX and JS in general is a must, since it’s a type checker that works everywhere. With this all said, getting up and running with flow has a number of pain points which I’m planning on writing about myself.