Doing "react" in the native environment is hard, you have to fight UIKit really hard to get to a good place.
[ReactiveCocoaLayout](https://github.com/ReactiveCocoa/ReactiveCocoaLayout) is a good example of how much work it takes to get close to this pattern, but the view lifecycle as a whole (adding and removing subviews, layout passes, etc.) makes it hard.
From what I understand React-Native does this for you natively under-the-hood, but using JS as an implementation detail.
I really don't think that anyone is advocating for JS being the "better language", but rather one that has a framework (read: React.js) being used in practice which will work with native view as well.
It's not about "Write once, run everywhere" but rather about "Learn once, write everywhere". React-Native encourages better design patterns for UI, especially on iOS.
As someone who spends most of their day in Xcode, Alcatraz is an invaluable tool to grooming my Xcode setup and keeping up with the latest plugins and what not.
Congrats on the launch Marin! Been following the repo for a few months now, I'm really digging the design.
Great write-up. I've started recently to compose a lot of table view cells just using subviews, not thinking back to the days where I had to drawRect the subviews. Performance has seemed to catch up, as this article notes. Thanks, Florian!
Should you call the singleton on multiple threads, there is a chance you could get inconsistent results based on a race condition. Using GCD ensures that the singleton is truly only created once.
I don't think you ALWAYS have to run on your device. Emulators are much faster at launching and getting to it. I use the emulator for a majority of quick fixes, layout changes, API debugging, etc. I move over to the device when things are nearing a point where I need to test real-world things.
Using the emulator is fine, just be sure to test on the device before you deploy.
[1]: https://github.com/facebook/relay/pull/2293
[2]: https://github.com/relay-tools/relay-compiler-language-types...