Chirag Jain (twitter)
(github) is the cofounder of
Lrn, a React Native iOS app released to the app store on
July 28th that jumped to the top of ProductHunt in the same day. It was also
reported on by
Creator,
TNW and BusinessInsider.
Some of his notable contributons to the React Native community include commits
to add rotateX
, rotateY
, rotateZ
and perspective
to the style
transform property (check it out
here),
an open source library for creating custom tooltips called
react-native-tooltip and
another for handling in-app purchases called
react-native-in-app-utils.
what’s your background in software development? have you written other mobile apps before react native?
I started with php and then been doing node.js for last three years. I had zero experience writing native mobile apps before react native. I did do small projects on phonegap only to be dissatisfied and discarding them.
yeah i had a similar experience [with phonegap] :) were you using react before getting into react native?
No. I saw react native keynote talk in the f8 developer conference. That is the first time i was introduced to the world of react and react native. Felt like i was doing it wrong for so long. haha. Wish i met react [earlier]
so you got into react native early and it has changed so much since its original release, what would you say are the biggest improvements that you have noticed?
I have seen react native getting better with each and every commit. The animated api was one major thing i liked. There are so many cool things that will be released in future versions of lrn that will use the animated api. Performance of course got better and better. Inspect element and profiling made it look like i'm doing front end development again.
so now that you have had a chance to talk about the nice things, what would you say are the most frustrating aspects of working with react native?
There was only one thing in particular that was frustrating for us. ie the
<Text>
api for highlighting. For an app like lrn, we wanted do heavy syntax
highlighting, With react-native you need to nest each and every word in a
tag to highlight. We ended up writing custom generator which would
create all the static components from "<b>var</b> <g>name</g> = "##### chirag"
to
render something like <Text style={styles.blue}> {'var'}<Text style={styles.green}>{'name'}></Text> ...</Text>
and so on. I'm sure there must
be a better way to do this which i need to find. Apart from this, i had to
learn some objective-c to extend ios stuff. I do believe we should not support
each and everything in core that can be in userland. So learning objective-c
was not too much of a pain. especially after having your code examples :)
if you could have 1) a feature of your choice added to react native & 2) a bug fixed, what would those be?
-
improve the text api for better highlighting.
-
Definable distance pagination for ScrollView by rxb. We need to get this in react-native for being able to launch flashcards in our next version 😉
So now you know what's coming next in lrn app. haha. and of course, react native for android :)
did you ever get close to giving up on react native for lrn?
We were really committed with react native because we knew all the befits we will have in future. There were time when it was really frustrating to understand the bridge and extend ios as well as reactnative components for tooltip. But thanks to @robertjpayne you and @ide, we got it resolved
i remember that! lots of irc discussions around it :)
yeah. tooltip was so important and we had to get it right.
do you plan to use the over-the-air update functionality made possible by react native on lrn?
By over-the-air you mean load the main.jsbundle from a server?
right - like shipping app updates without going through the app store by updating the bundle
I got really excited when i saw someone on IRC mentioning it that rn-play is using this feature. We just realized this feature few days ago. With lrn we want to keep the app be available offline at all times. Loading from a server everytime is not an option. However we can cache the bundle somewhere and use it. This is something that i def. want to explore now.
how many engineers work on the lrn app?
Right now it's three of us. I lead the development but we all collaborate on design and tech since it's all javascript at the end.
how long did it take to build the app?
It took about 2.5 month from idea to no. 1 on producthunt 😉
that’s pretty impressive for no previous native mobile development experience!
the docs and early adopters like your self made it really easy to adopt and understand things.
what advice would you give to people who are just getting into react native?
Don't worry about the questions and doubts you may have on the react-native tech. Just go for it and build it app. Feel free to ask the community if your stuck!
:) anything else you want to say?
I think react-native is an amazing tech and facebook is really the game changer. Hope to see more and more apps using react-native in production.