An iOS Developer’s take on React Native

updated 8 months ago; latest suggestion 8 months ago

The promise of writing code for iOS and having it “just work” out of the box on Android is a tempting one. That along with hot reloading code and the ability to push over the air updates to published apps make React Native a tempting proposition.

This sounds too good to be true so what’s the catch? React Native is a framework for building native apps using Javascript. Many native developers rightly associate hybrid Javascript apps with disappointing consumer experiences and frustrating development environments. Over the years the same promises have been made by many other Javascript based frameworks, so why is React Native any different?

This talk will be from the perspective of an experienced iOS developer who has been working with React Native for the last 6 months and has shipped several cross platform apps with it.

I will talk about:

  • The pro's and cons of developing with React Native.
  • An overview of how React Native works and why its different from Cordova or other hybrid app approaches.
  • The design and code structure of a medium complexity React Native app (sample code on github).
  • Things an iOS developer should learn when getting started with React Native.
  • When to go native and when to use Javascript with React Native.
  • Performance issues I encountered with React Native along with examples showing how to profile and solve these issues.

I will also provide an example github repo with some sample code to illustrate some of the points about performance I am talking about.

Suggestions

  • 8b2f2d3e6553c2b4048b93300959895ab76b4154?size=100x100 8b2f2d3e6553c2b4048b93300959895ab76b4154 suggests 8 months ago

    Now this is a talk even a Javascript-sceptic like myself would be willing to attend. :) Excellent job pivoting to a topic that will be of interested to the general audience. Not everyone will be able to apply the details of the talk, but it's always important to be at least conversant on alternative approaches.

  • The proposal author responds 8 months ago

    Thanks for the great feedback on my talk. I'm primarily a native iOS developer who has been working with React Native for the last 6 months. I'm not a web developer or someone who is a hardcore Javascript evangelist.

    I've also worked with some hybrid apps in the past, React Native is very different from any of those (cordova etc) as its not actually based on webviews.

    Based on my background, it might be better for me to change my talk to be an iOS Developer’s take on React Native. I could give an overview of the pro's/con's of react native and the pain points I encountered while developing/shipping several apps.

  • 8b2f2d3e6553c2b4048b93300959895ab76b4154?size=100x100 8b2f2d3e6553c2b4048b93300959895ab76b4154 suggests 8 months ago

    I'll freely admit to being very squarely in the never Javascript camp. That's not to say Javascript is the wrong answer if I'm writing a Web application – it's the only answer, but even then I'd still rather balance the processing on the server with processing on the client.

    I've built hybrid iOS apps. They were huge disappointments to us the developers and our customers. Hybrid iOS/macOS apps I use are a huge disappointment too.

    So, with all that out of the way…

    I've got two specific issues:

    1. Using a real world example is always fraught with peril. Especially a real world example that's not necessarily something everyone is likely to agree with. Marijuana is entirely legal here, but not everywhere. I'd encourage you to come up with a simple example just for the talk. It will make it easier to distribute sample code should you chose to.

    2. The challenge you'll have with the laundry list of when to bounce to native code is keeping the attention of folks who aren't using React and aren't familiar with it. What will they take away from your talk? Is there some way to structure your talk so even they take something away from it?

    I'm sure you will do a good presentation on React Native and how bits of the app will need to be in native code to take advantage of sophisticated parts of the platform, or get good performance, or make sense, or whatever. :) Of course, it's not necessary for every talk to appeal to every audience member. But it's not a bad goal to want to appeal to as broad a segment of the audience as you can.

    I may sound like the ultimate downer. And I know you probably really like React Native, but maybe you could entice people over to the Dark Side™ by showing them the power of adding a wee bit of dynamic scripting? Sort of like offering them some Evil Cookies™ in exchange for a tiny bit of their immortal soul. Quite a few applications could benefit from writing basic business logic in a scripting language like Javascript. Maybe some validation rules. That kind of thing.

    Once they're hooked on the Evil Cookies™, you'll have them in your clutches and at a later date you can suggest they trade you the rest of their soul in exchange for React Native.