A lot of them were festival apps, they totalled around 200k downloads, not the most useful app but had a large, temporary influx of users. Around 5 of them achieved top 10 in the iOS music category.
On the other hand, one of the more useful ones of mine is Patient View, this probably the proudest points as a developer as I could literally see it helping people with people's illnesses on their day to day life facebook.com/patientview/posts/207....
I've developed quite a few apps for startups too, definitely helps out people with tight budgets who can't afford two native developers and a website developer.
No, I would never use Expo for a serious project. I imagine what ends up happening in most projects is they reach a point where they have to ultimately eject the app (e.g. needing a native module) which sounds very painful.
The majority of the apps I've wrote have definitely reached that point, for the individual benefits expo provide (e.g. code push) I've considered trying out using just expo kit but I'd rather just uses a tool specifically for that purpose. Above all, I always like to reduce the level of magic in any application, mobile or not.
Regarding "What package do you recommend for UX", I guess it really depends what you mean. But hopefully this gives you everything you need to know:
For navigation I use react-native-navigation, can't recommend this enough as it adds a massive difference in fidelity vs using JavaScript based lib like react-navigation.
For interactive elements (drag drop, sliders, parallax etc) I use a forked version of react-native-interactable.
For custom vector animations e.g. button icons I use Lottie.
I do not use a framework for developing styles/grid layouts (e.g. glamourous), I've got my own base-layout of styles and components.
is such a radical decision that I didn't expect to hear from someone in your experience, knowing that Expo is greatly supported by the makers for React Native.
I know this thread has aged. But I felt a need to respond in particular to this comment.
In my experience, Kyle's response is by far the norm among industry professionals I interact with. It's easy to confirm this. Simply post a comment on the Discord channel Reactiflux #react-native that states, "Expo should be the go-to choice for serious react-native projects. Discuss." Then wait for the comments to roll in.
This is true even in 2023, I recently had to eject from a pretty complicated app and waste about a week to get everything working as is in the bare workflow.
Yo! I'm Adam. I'm a web developer based in London, UK and I'm open for messages and questions about work or code or anything really.
P.s I'm the one with the beard in my profile pic ✌🏻🐵
That's a crazy work rate! Well done, man! Do you see yourself producing a similar amount over the next 3 years or will you be aiming to slow down at all? ✌🏻
There's always more side projects! :). The company I work for has definitely focused more towards making mobile apps so there will be plenty more to come!
1 - Upgrading projects from very early versions of React Native. This has been, at times, an absolute nightmare (mainly iOS)! Especially when your project relies on several libs that require native changes. In the end, it was often easiest to create a new react native project from scratch and manually link libraries one by one.
Thankfully, this is rarely an issue now as it has matured. Having said that, I think it's really important to stay on top of React Native versions if your project has longevity.
2 - I had to integrate a react native app to read sensors for a car HUD, no simple way of overcoming this I just had to learn Objective C to write a React Native Bridge. Getting comfortable doing this is really valuable if you run into projects that require specific native functionality.
3 - Once, I hit an error which I could only replicate at the point of uploading a react native app, it would error out with "You must supply a CFBundleIdentifier for this request". This had me banging my head against my desk for a few days. In the end, it was something simple like the way I was creating my release scheme in xcode.
I feel like it’s actually more useful to learn objc if the purpose is purely for react native. The reason I say this is a lot of the big native modules for rn are written in it, rarely came across swift implementations.
How and what do you recommend developers who have never written native code to go about learning and implementing native modules? Are there any specific courses or just start with any iOS/Android courses found online which don't relate to react native ?
I've gone from having a big boilerplate with having everything I could want (e.g. camera support, contact lookup) to stripping back to what I'd use 90% of the time. It's easy enough to add modules when you want them now with react-native link.
The rest is down to if I'd need it, charts, contacts etc generally all have libs nowadays.
By mobile backend do you mean what server? That totally depends on what the project is, maybe sometimes I (or maybe even sometimes the company I work for) wouldn't even have a choice on this.
If it were me developing on my own though it'd be node.
Only a handful, which is a bit annoying because my xcode organiser / itunes connect etc ends up looking like this :D. prntscr.com/klu0jm
A lot of them have been released for a temporary period, due to them being PoC's or only having a limited shelf life (e.g. my festival apps). Other's just get taken over by other people post MVP.
A few that I'm maintaining, I'll add to this list in the coming weeks too if there's appetite :)
The biggest changes I've seen with React Native is the introduction of bigger native bridges. Proper native modules like react-native-navigation and react-native-charts-wrapper are basically making it so apps can be made to be completely indistinguishable from their native counterparts. So hopefully, assuming the community stays massive it means more of that.
I can see it easily becoming the de facto tech choice for startups. Having said that I think we'll also see React Native used more and more for parts of existing native apps that (e.g. some screens) as an attempt to gain cross platform sharing without rewriting whole apps.
React Native's benefits come into play when you start sharing across platforms (including sharing react native codebases with web), and being able to develop on a codebase where web developers could easily get onboard. That being said, I guess it comes down to how you'd find the learning curve of each. If you're not savvy with JS and don't want to reach the point of having a shared codebase with Android, maybe go with Native.
A side note on this, I think there's a real untapped opportunity for native developers to work with React Native developers to build out the box native components that perhaps they use as a toolbelt to make cross platform apps way more efficiently but perhaps offer a bit more fidelity than most React Native Apps.
What is the major benefit over React (web)? Of course for apps where you need access to the users music for a music player it makes sense, but for festivals for example a web app app should be sufficient.
It ended up being an amazing app store SEO hack, a lot of the time we were the top search result for x festival - that's a lot harder to achieve on a website.
Also, quite simply, people take their phones to a festival not their laptop. This worked offline and tapped into things that only fit well on an app (e.g. find my tent, chat with image upload). It was definitely a lot easier to compete against the official app than website.
I have great experience in IT over 12 years: front / back - ends, mobile, system administration and deployment cycle. I implement effective and great software products.
I have great experience in IT over 12 years: front / back - ends, mobile, system administration and deployment cycle. I implement effective and great software products.
What do you think about the fluidity of react-native apps ?
So far, I've seen apps made by Chinese e-commerce giants like Alibaba's Taobao and Jindong, their apps requires lots of resources and are all very slow even on last end Android devices.
I've also seen some startup using it for chat app and it's simply become unusable after a while because all the memory leaks.
Do you think these are just poorly made app or react-native is just not ready to replace native development ?
Which app would you recommend to check out in order to see how powerful this framework can be ?
The only case I've seen that can be tricky to keep performant at the moment is when you're doing CPU heavy tasks whilst listing out uncompressed images >2mb. Memory consumption of images this size do seem to be a tricky problem, though libs like react-native-fast-image aim to solve this sort of thing.
I'd say almost certainly they were developed badly, there's no reason now why you couldn't make apps indistinguishable from native. My top tip for this is to move away from JS based navigation libraries (e.g. react-navigation), that's where you see a lot of the performance gains.
Performance wise the Patient View app I made shows this off, I sync and encrypt thousands of records and chart them out whilst keeping everything 60fps.
I think I've got a post somewhere in GitHub saying this is the biggest pain point at the moment with core React Native, and I posted that in 2017 github.com/facebook/react-native/i....
I just use a combination of the keyboard avoiding view and react-native-keyboard-aware-scroll-view, I've always been able to achieve what I want but it's always fiddly.
I don't, and to be honest I've always been out of my comfort zone doing it. Ironically, as a result, I'm more comfortable reading ObjC than Java as I've bridged more in iOS even though I spent the first 2 years professionally writing Java.
I'd love (if I had the time) to progress more in native development, I think it'd be the thing that'd help me become a better React Native developer. Realistically you can achieve absolutely anything so long as you have the Native Code to back it up.
How we can get a better debugging experience? When I was trying to develop some React Native apps and has an error, the stack trace were so confusing. There is a way to have a great debugging session with breakpoints, watches... and don't need to keep changing our code until it works?
I guess it depends where the error sits, some errors are hard to debug yes , either errors in the render markup itself or in native modules.
However I would say apart from that it's pretty much like debugging any web app in chrome with watches and other stuff you mention. I'd even go as far as to say developing with hot reloading is better than the react/webpack equivalent.
Oldest comments (165)
Why? Are they all useful?
They range quite drastically.
A lot of them were festival apps, they totalled around 200k downloads, not the most useful app but had a large, temporary influx of users. Around 5 of them achieved top 10 in the iOS music category.
On the other hand, one of the more useful ones of mine is Patient View, this probably the proudest points as a developer as I could literally see it helping people with people's illnesses on their day to day life
facebook.com/patientview/posts/207....
I've developed quite a few apps for startups too, definitely helps out people with tight budgets who can't afford two native developers and a website developer.
What do you think about start app using expo? Is better start app with react-native Cli?
What package do you recommend for UX?
This is a really good question, in a meeting at the moment but will definitely respond to this!
No, I would never use Expo for a serious project. I imagine what ends up happening in most projects is they reach a point where they have to ultimately eject the app (e.g. needing a native module) which sounds very painful.
The majority of the apps I've wrote have definitely reached that point, for the individual benefits expo provide (e.g. code push) I've considered trying out using just expo kit but I'd rather just uses a tool specifically for that purpose. Above all, I always like to reduce the level of magic in any application, mobile or not.
Regarding "What package do you recommend for UX", I guess it really depends what you mean. But hopefully this gives you everything you need to know:
I'm very grateful for your answer, this is very helpful !! 😊
I use always expo because I'm starting programming in RN, but I think I will start starting project with react-native-cli.
"I would never use Expo for a serious project"
is such a radical decision that I didn't expect to hear from someone in your experience, knowing that Expo is greatly supported by the makers for React Native.
I know this thread has aged. But I felt a need to respond in particular to this comment.
In my experience, Kyle's response is by far the norm among industry professionals I interact with. It's easy to confirm this. Simply post a comment on the Discord channel Reactiflux #react-native that states, "Expo should be the go-to choice for serious react-native projects. Discuss." Then wait for the comments to roll in.
lol! If I could like this comment twice I would.
This thread aged like crazy but this question could be relevant.
We know your thoughts regarding Expo Managed, but what about Expo Bare Workflow?
This is true even in 2023, I recently had to eject from a pretty complicated app and waste about a week to get everything working as is in the bare workflow.
Ok, I'll keep in mind... Thanks...
No problem! :)
That's a crazy work rate! Well done, man! Do you see yourself producing a similar amount over the next 3 years or will you be aiming to slow down at all? ✌🏻
There's always more side projects! :). The company I work for has definitely focused more towards making mobile apps so there will be plenty more to come!
What are the most 3 troublesome issues with React Native and how did you overcome?
1 - Upgrading projects from very early versions of React Native. This has been, at times, an absolute nightmare (mainly iOS)! Especially when your project relies on several libs that require native changes. In the end, it was often easiest to create a new react native project from scratch and manually link libraries one by one.
Thankfully, this is rarely an issue now as it has matured. Having said that, I think it's really important to stay on top of React Native versions if your project has longevity.
2 - I had to integrate a react native app to read sensors for a car HUD, no simple way of overcoming this I just had to learn Objective C to write a React Native Bridge. Getting comfortable doing this is really valuable if you run into projects that require specific native functionality.
3 - Once, I hit an error which I could only replicate at the point of uploading a react native app, it would error out with "You must supply a CFBundleIdentifier for this request". This had me banging my head against my desk for a few days. In the end, it was something simple like the way I was creating my release scheme in xcode.
on #2 you said that you have to learn Obj-C.
Is is still worth it to learn Obj-C or go straight with Swift if we need to write native modules for our RN project?
I feel like it’s actually more useful to learn objc if the purpose is purely for react native. The reason I say this is a lot of the big native modules for rn are written in it, rarely came across swift implementations.
Thank you Kyle!
From point 2:
How and what do you recommend developers who have never written native code to go about learning and implementing native modules? Are there any specific courses or just start with any iOS/Android courses found online which don't relate to react native ?
What are most used react-native plugins in your apps?
What do you use for mobile backend ?
I've gone from having a big boilerplate with having everything I could want (e.g. camera support, contact lookup) to stripping back to what I'd use 90% of the time. It's easy enough to add modules when you want them now with react-native link.
This is what I'd consider core:
The rest is down to if I'd need it, charts, contacts etc generally all have libs nowadays.
By mobile backend do you mean what server? That totally depends on what the project is, maybe sometimes I (or maybe even sometimes the company I work for) wouldn't even have a choice on this.
If it were me developing on my own though it'd be node.
How many of them do you actively maintain?
Can you give a few examples of some of them?
Only a handful, which is a bit annoying because my xcode organiser / itunes connect etc ends up looking like this :D. prntscr.com/klu0jm
A lot of them have been released for a temporary period, due to them being PoC's or only having a limited shelf life (e.g. my festival apps). Other's just get taken over by other people post MVP.
A few that I'm maintaining, I'll add to this list in the coming weeks too if there's appetite :)
Where do you think react-native is headed in the coming years? Do you n think it's evolving at the same pace as the native counterparts?
The biggest changes I've seen with React Native is the introduction of bigger native bridges. Proper native modules like react-native-navigation and react-native-charts-wrapper are basically making it so apps can be made to be completely indistinguishable from their native counterparts. So hopefully, assuming the community stays massive it means more of that.
I can see it easily becoming the de facto tech choice for startups. Having said that I think we'll also see React Native used more and more for parts of existing native apps that (e.g. some screens) as an attempt to gain cross platform sharing without rewriting whole apps.
For someone with a good background in Android Native development, does it worth the hassle to learn React Native or just learn Native IOS development?
React Native's benefits come into play when you start sharing across platforms (including sharing react native codebases with web), and being able to develop on a codebase where web developers could easily get onboard. That being said, I guess it comes down to how you'd find the learning curve of each. If you're not savvy with JS and don't want to reach the point of having a shared codebase with Android, maybe go with Native.
A side note on this, I think there's a real untapped opportunity for native developers to work with React Native developers to build out the box native components that perhaps they use as a toolbelt to make cross platform apps way more efficiently but perhaps offer a bit more fidelity than most React Native Apps.
What is the major benefit over React (web)? Of course for apps where you need access to the users music for a music player it makes sense, but for festivals for example a web app app should be sufficient.
It ended up being an amazing app store SEO hack, a lot of the time we were the top search result for x festival - that's a lot harder to achieve on a website.
Also, quite simply, people take their phones to a festival not their laptop. This worked offline and tapped into things that only fit well on an app (e.g. find my tent, chat with image upload). It was definitely a lot easier to compete against the official app than website.
Emotions:
Sounds fantastik! This is your glory day, horray!
Each 10th day – new app!
I would like to give you 100 hundred copy-pasted emoji beer.
Question:
What is percentage of bridging to native modules?
Low, less than 10% maybe, but I've worked on some weird projects. There's so many repos now on GitHub when comparing to 2015.
Here are the times I've had to delve into native modules.
Was anything except Keyboard Extension on iOS? For example connection ABAddressBook written on ObjectiveC.
Interesting your integration approach with CoreML for example.
All the above required me to write ObjC. The HUD app in particular required me to bridge a pretty beefy SDK that was pretty closed off to the public.
I haven't integrated with core ml, I do want to play around with using tensorflow and React Native at some point.
What do you think about the fluidity of react-native apps ?
So far, I've seen apps made by Chinese e-commerce giants like Alibaba's Taobao and Jindong, their apps requires lots of resources and are all very slow even on last end Android devices.
I've also seen some startup using it for chat app and it's simply become unusable after a while because all the memory leaks.
Do you think these are just poorly made app or react-native is just not ready to replace native development ?
Which app would you recommend to check out in order to see how powerful this framework can be ?
The only case I've seen that can be tricky to keep performant at the moment is when you're doing CPU heavy tasks whilst listing out uncompressed images >2mb. Memory consumption of images this size do seem to be a tricky problem, though libs like react-native-fast-image aim to solve this sort of thing.
I'd say almost certainly they were developed badly, there's no reason now why you couldn't make apps indistinguishable from native. My top tip for this is to move away from JS based navigation libraries (e.g. react-navigation), that's where you see a lot of the performance gains.
Performance wise the Patient View app I made shows this off, I sync and encrypt thousands of records and chart them out whilst keeping everything 60fps.
I see, thanks for the answer and cheers for the 100 apps, that's a hell of a pace :)
How did you do the encrypting/decrypting? Pure JS libs tend to be poor performance wise. Anything native you used?
How do you handle Keyboard hiding inputs ?
It's a bloody pain!
I think I've got a post somewhere in GitHub saying this is the biggest pain point at the moment with core React Native, and I posted that in 2017 github.com/facebook/react-native/i....
I just use a combination of the keyboard avoiding view and react-native-keyboard-aware-scroll-view, I've always been able to achieve what I want but it's always fiddly.
Also do you have any tutorials you could point out to building react native bridges and projects which android native requires libraries written in C
I don't, and to be honest I've always been out of my comfort zone doing it. Ironically, as a result, I'm more comfortable reading ObjC than Java as I've bridged more in iOS even though I spent the first 2 years professionally writing Java.
I'd love (if I had the time) to progress more in native development, I think it'd be the thing that'd help me become a better React Native developer. Realistically you can achieve absolutely anything so long as you have the Native Code to back it up.
How we can get a better debugging experience? When I was trying to develop some React Native apps and has an error, the stack trace were so confusing. There is a way to have a great debugging session with breakpoints, watches... and don't need to keep changing our code until it works?
I guess it depends where the error sits, some errors are hard to debug yes , either errors in the render markup itself or in native modules.
However I would say apart from that it's pretty much like debugging any web app in chrome with watches and other stuff you mention. I'd even go as far as to say developing with hot reloading is better than the react/webpack equivalent.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.