8 ms·
Ask HN: Is React Native still popular?
I've been browsing a few react native repos and I notice a lot of them haven't been touched in a few years. Is it still popular? If not what's the current equivalent, or is native the flavor of the year?
- Tronno 3y agoEvery tech has abandoned repos, especially popular ones. As React Native matured in the past few years, the community developed improved solutions to common problems, and many older stop-gaps were rendered obsolete. Perhaps that's what you're seeing. The only major competitor to React Native that I'm aware of is Flutter, but it has several drawbacks that make me hesitate to recommend it.
- fakedang 3y agoWhat disadvantages do you see with flutter though? The jank issue has been fairly minimized with Impeller, so performance-wide, it's fairly on par with RN. The only 2 issues I seem to find are the core Flutter team leaving Google, and Flutter web being unstable (and honestly I just wish they stopped developing for web and focusing on mobile). Another issue is learning a new language, but Dart being strongly typed makes it much easier to work with than Javascript. In either case, RN and Flutter should be used only for the MVP stage, and once you can, you have to immediately switch to building on native at the right time.
- akmarinov 3y agoThe talent pool is non-existent. You’d be crazy to use tech in your stack that you can’t find people for. At least with RN, there are thousands of React devs out there.
- fakedang 3y agoYou don't hire for the tech stack though. Flutter has a much faster learning curve than RN, evidenced by its growing popularity among beginners. In my experience, it's not going to be hard for a React developer to pick up Dart or Flutter than it is the other way round - in fact, there are blog articles by eBay and BMW, where their tech teams easily learnt flutter and deployed production apps within a week. Of course, most companies hiring mobile devs do it wrong. Flutter hasn't been around long enough the same way React has, so years of experience is a meaningless metric here.
- akmarinov 3y agoHave to disagree. Yes, every experienced dev can probably pick up any other language/framework and be able to work with it within 6 months - things aren’t fundamentally that different. But these people can easily switch jobs and it’s doubtful most are ok to hitch their wagon to Flutter - a nascent framework with basically no crossover to web development and a big company behind it, known for killing its toys on a whim. Much easier to just go do RN elsewhere.
- realusername 3y agoThe learning curve is very low though, especially for JS/React developers. Flutter did not come from nowhere, Dart is heavily inspired by Javascript and the rendering model is close to React. The issue will rather be that they won't want to work on it due to their career than the pure tech capabilities.
- Tronno 3y agoYou named all of them - jank, a new language, and crucially, long-term support from Google, who are so untrustworthy in that regard that it's turned into a meme.
- fakedang 3y agoFlutter is still open source with a stronger community than any of its competitors. I think it will be around for a long while. For some reason, it's especially popular in Asia, particularly India and China. There are already entire modules being developed just for Flutter in China, so I wouldn't put it too soon in killedbygoogle. The iOS issue is a minimal issue with the new Impeller API (not sure if you're updated on that). There is still a bit of jank, but between putting out an MVP vs another month for a native app, I'd say go with Flutter for the MVP. Then switch to native if your app takes off.
- LordN00b 3y agoI've been working with three flutter apps for the past two years (Android and ios), and the improvements in the platform performance have been consistently trending up. One of our apps has 6 video players running at one point, and that doesn't seem to tank performance, there is an integrated Unity game and several other 'heavy' features. It's resliant and performant for the basic task of getting content on the screen. Then dropping down to the individual OS for certain features (video etc) is a breeze. My only gripe is it's not opinionated enough as framework, and tries to be all things to all devs which makes Architectural changes contentious against competing opinions. (See trying to implement a the latest Router from scratch) The downside is the mess of flutter web. As an engineering team everyone can be Flutter dev, but only a few have to be a Kotlin/Swift dev to implement features. nb: RN, or Flutter are still more competitive than Maui however.
- synergy20 3y agothe flutter tech leader just left Google(Hixie), which cast some doubts on flutter itself to me.
- gardenhedge 3y agoHere's a post from that person on it: https://ln.hixie.ch/?start=1700627532&count=1 https://ln.hixie.ch/?start=1700627532&count=1
- davidmigloz 3y agoHixie is still working on Flutter as he mentions in the post (just check the Flutter Discord)
- Can_K 3y agoGood, that means its slowly getting stable!
- JofArnold 3y agoVery. But a lot of packages I think have been abandoned in favour of those built by Expo.
- blovescoffee 3y agoYes. Check out Expo. It's recommended by the React Native docs and it's very actively maintained/growing. Some big names are switching though. AirBnb has a few blog posts about switching to true native.
- tentacleuno 3y agoI'd say so, though after trying Expo (pretty much what most people use, FWIU) the experience can be... trying at times. I had a lot of dependency errors, weird errors which involved digging through issues to find (I believe Expo didn't support .tsx by default... what?) This isn't coming from the usual "JavaScript is bad" crowd, but from someone who is generally quite favourable to JavaScript in general (while also recognizing its downsides). Overall, the experience is far from perfect, but I imagine you could make wonderful apps when you get the stack to work. (In general, if there's one thing I can't stand, it's debugging toolchains and build systems. Extremely boring, frustrating and tedious.)
- pleoxy 3y agoIt's been a while, but this was my experience. Lots of dev hours burned fighting with expo.
- atomicnature 3y ago100% my experience as well. Expo dependencies and build troubles never seem to end.
- plagiarist 3y agoMost of the discussion I hear about React Native is that it's fine for the basics but very quickly ends up needing special code to handle all the platforms' various eccentricities. And then you have web-like latency that is kindof a turnoff compared to native apps. I have heard people recommend Flutter recently, but I have even less knowledge about that than the anecdata I have about React Native.
- nwienert 3y agoNot true if you use Tamagui, which has a very smart optimizing compiler and emits near optimal web code utilizing all the platform features. Flutter is sort of dying, it works for games or Android only apps, but anything with web or iOS will feel incredibly strange, slow and non native.
- dave78 3y ago> Flutter is sort of dying Do you have a citation or data to back that up? We've recently launched several cross-platform app rewrites in Flutter and from our perspective it seems like Flutter is really hitting its stride.
- tarruda 3y agoMaybe this: - https://news.ycombinator.com/item?id=38401242 https://news.ycombinator.com/item?id=38401242 - https://ln.hixie.ch/?start=1700627532&count=1 https://ln.hixie.ch/?start=1700627532&count=1 (this is one of the main Flutter contributors which has left google, which might be indicative that the project might lose funding)
- synergy20 3y agosame concerns here, I will use RN
- cybrox 3y agoHave you tried Flutter in recent times? And in general, why would it be dying? We deploy a Flutter app to Android and iOS with a lot of native parts and it works flawlessly, fast and with native-feeling UI on both platforms. Even porting to Windows and Mac OS was relatively easy and provides a very fluent, albeit mobile-y application.
- nwienert 3y agoIt’s incredibly popular and imo has been having a bit of a resurgence as Meta has reinvested into it more heavily in the last couple years. Evan Bacon does some tweets on it, but it’s one of the most popular libraries when you filter for top 100 apps in almost any category in the App Store. If you want an active community and a bootstrap repo that is very robust, check out Tamagui (my project) which makes building universal native and web apps a breeze.
- charrondev 3y agoAnecdote here: Recently I started working on an mobile application as a personal project. It involves scraping web pages and generating ebooks from them with an inbuilt reader with visual controls. I’d never worked with Swift or UIKit previously and I’ve worked professionally with React for a few years so I considered using React Native. 100s of abandoned repos, janky build tooling, a and a weird split with something called expo caused me to avoid React Native altogether and I’ve been happily learning SwiftUI and UIKit.
- nwienert 3y agoHeh, I did the opposite migration due to SwiftUI :) we ran into some completely blocking bugs where we couldn’t work around them. Plus managing data with their observables are so hard to work with.
- tschellenbach 3y agoAt Stream we used to hire for react native quite easily. Nowadays it's impossible to find experienced people who want to work with RN. Don't see that issue on Go, or any of our other SDKs. In case anyone is looking for a lead RN role remote EU or amsterdam: https://getstream.io/careers/job/5714344003/ https://getstream.io/careers/job/5714344003/
- danielvinson 3y agoImpossible to find? You don’t have salary info on that listing and a quick google shows that your salaries are something like half what I’m making as a remote RN engineer. Very unlikely that it’s because of RN.
- tschellenbach 3y agocould be that's the problem, we went up though, not down in rates. think its around 120k base + 120k in equity. how much do you make?
- danielvinson 3y agoWhen I googled your company the only results listed total comp under $100k for software engineers. 120k is slightly better than that. Equity is worth zero at private companies unless there is a system in place to sell it, so don't try to claim that is worth anything to most people. I make around $200k + equity as a Staff Engineer, fully remote, though as my company is also private, equity === 0. I would say I am moderately underpaid in the current market but I'm happy with that tradeoff since my company is fully remote, great work life balance, and I work with great people.
- tomduncalf 3y agoThat’s a US salary though, right? So you would expect it to be higher. Granted some companies might pay the same salary regardless of country but in my experience it’s usually adjusted
- k__ 3y agoCheck out Expo, that's probably the most active React Native project.
- utybo 3y agoI'd say yes, although somewhat through Expo nowadays
- hn_throwaway_99 3y agoIn my experience React Native has definitely "lost its luster", primarily because it occupies a bit of a weird middle ground that nobody wants: 1. If you truly need all the advantages of native performance and integration, just go native. Yes, you'll need to "write it twice", but you'll find that it's actually easier to hire top notch iOS or Android devs in the first place (in my experience they tend to be partisans) with high productivity. 2. I think the biggest thing that has changed since React Native first came on the scene is that the browser-based cross-platform toolkits, things like the Capacitor framework (and starting with Progressive Web Apps in the first place), have gotten much better, and browser tech now gives loads of access to underlying devices and sensors (accelerometer, cameras, biometrics, etc.) React Native really came out with the idea of "I've got all these web devs, can I make them productive on native mobile?" I think things like Capacitor and their ilk are a much better option for this issue now. So in my opinion, if you really need native, use the native frameworks, but if your app doesn't need that and you can do cross-platform, use one of the web-view-based cross-platform frameworks.
- theultdev 3y agoWhat if you can't afford to hire a "top notch" iOS and Android dev? (or any extra devs for that matter) You don't think there's a lot of companies in that boat? I was able to make a react-native app, targeting web first. Took a little under a year. Took 1 month to get it working and deployed on both app stores to replace the apps our iOS and Android team used to work on natively. I now maintain web, iOS, and Android, solely, with one codebase, 95% code shared. We used to have at least two devs on each native platform. That saves about $600k/yr. (browser-based cross-platform toolkits are a joke, they are not flexible, and are hard to extend)
- hn_throwaway_99 3y ago> (browser-based cross-platform toolkits are a joke, they are not flexible, and are hard to extend) I would have agreed with you say 5 or more years ago, but completely disagree now. I certainly don't think the better web-view-based frameworks have any more issues than React Native, and on the contrary I've seen React Native usually have more.
- cplantijn 3y agoI think React Native is fantastic for getting out basic applications that may need camera, map, browser, and storage, etc capabilities. However, once you need more intricate functionality, I think it's best to write modules in Swift/(Kotlin/Java) and have your React Native UI communicate with your modules via the bridge. I think React Native solves an organizational bandwidth issue. Building true native applications per platform will always outshine any results you get from React Native, both in performance and capability. However, if you have just a few developers, I think React Native is a practicable compromise. Companies like Airbnb have the engineering bandwidth to develop bespoke platform specific applications, it's up to you and/or the company you work for to know what compromises can be made.
- nwienert 3y agoI don’t think this is so true anymore now that you have such huge investment by the likes of Shopify, with many slick libraries, or for example Reanimated which makes very bespoke and interactive animations performant. Add something like my library which uses an optimizing compiler to make things much faster on native/web when sharing code and I think you can make just about any experience you want. People like Catalin Miron do tweets replicating native UX quite successfully across many examples. You will still have to invest a lot to make a truly drop dead experience, but you have to do that anyway even in SwiftUI, which I found to be not so easy to just snap your fingers and have nice UX. There are many performance pitfalls there, and having to write your app 2-3 times means you have a lot less to invest into it.
- pedro_rtm 3y ago[dead]
- hn_throwaway_99 3y ago> I think React Native is fantastic for getting out basic applications that may need camera, map, browser, and storage, etc capabilities The thing is, though, browser-based APIs let you do all of that now, in a way that is usually a lot simpler to access. In these cases it's often a lot easier to just build a Progressive Web App for Android (Google let's you put PWAs directly in the Play Store), and wrap that with a thin native wrapper for iOS. One of the big "aha" moments I had was a couple years ago when I was trying out Stripe's Identity product, which lets you take a selfie and a picture of your ID for identity verification purposes. It's pretty amazing how Stripe was able to do the full image analysis (i.e. edge detection when you take a picture of your ID) solely with browser APIs. With the big exception of games, there are a vanishingly small number of apps that really require native functionality these days, given what you can do in the browser.
- jacobp100 3y agoYes it is still popular. Take a look at the showcase who is using it - Amazon was just added Libraries have always been a unique problem to React Native. A lot of the time not maintained, and can be low quality too - like half baked re-implementations of existing native components, skipping the whole ‘native’ part There’s not really another cross platform mobile framework in the same league. Flutter exists, and has its positives, but will never be an amazing experience on iOS. They don’t use native components, and the native components can access OS stuff not accessible by people other than Apple
- grensley 3y ago- Update code in iOS, Android, React - Most of that work is just maintaining fidelity between the platforms - Forever - Likely unpaid - The primary beneficiaries of your work are two of the biggest companies in the world - Not be appreciated anyways Takes a very specific kind of person to do it.
- CerebralCerb 3y agoI picked up React Native and Expo last year for a medium-sized hobby project and found it a better experience than when I developed a Flutter app three years ago. I have always heard the React Native dependencies were a mess, but I did not have that experience. Things were stable and Expo has pretty good documentation.
- bopinto 3y agoAFAIK Microsoft built the latest Office on top of it. https://devblogs.microsoft.com/react-native/2023-09-08-rneu-from-gaming/ https://devblogs.microsoft.com/react-native/2023-09-08-rneu-...
- meiraleal 3y agoNot much anymore, React Native isn't really a better way to develop apps. It is as complex as developing native apps and as you mentioned, the libraries aren't good enough/well maintained.
- wiradikusuma 3y agoDisclaimer: I wrote a book about creating apps, end-to-end, and I use Flutter https://news.ycombinator.com/item?id=38433668 https://news.ycombinator.com/item?id=38433668 It's the same thing with the Flutter ecosystem. Half of the libraries I use in my existing projects haven't been updated in a year (they were active when I picked them). They still work, but considering Flutter (and Dart) move so fast, it gives me the heebie-jeebies. If you're comfortable with JS, go for it (React Native). But before you commit, think ahead of the must-have UIUX features for your app and build a PoC. Don't be surprised when you can use built-in/stock camera access in less than an hour, but you need hundreds of hours to make a custom camera screen.
- robust-cactus 3y agoI'd say yes, I'm seeing big consumer companies switch to it from native these days. If you're just getting started I highly recommend expo. I wrote an article on building a game using it over say unity not too long ago https://parrisneeds.coffee/posts/making-a-game-in-react-native https://parrisneeds.coffee/posts/making-a-game-in-react-nati...
- Mc91 3y agoI look online for Android programmer jobs, I see React Native often enough when someone is looking for an Android or mobile programmer. It's a large skillset people want - you need to know Javascript, then probably some HTML and CSS, then the React framework. Enough to get you a job as a React JS programmer - but then you should know React Native as well. Plus, RN does not cover every case, so know the Android ecosystem (Kotlin and Android SDK, plus maybe some Java) and the iOS ecosystem (Swift and iOS SDK, plus maybe some Objective C). Most large companies tend to have a separate Android and iOS app, although not all (Discord is React Native IIRC). It makes some sense in a startup possibly - have a few RN programmers and have one or two dive into RN and do Android and iOS apps for your product, some of it using your existing codebase. From all I have heard, it does not scale, although maybe companies like Discord make it work for their use case. Once a Series A or series B kicks in, engineering has to stop and look whether they want to continue adding on to this rickety future, or get a small Android and iOS team together and do native apps.
- rattray 3y agoYou might be interested in Jebtrains' Kotlin Compose Multiplatform, which lets you cross-compile to native UI in iOS, android, and others - and pretty smoothly interop with native iOS code (especially UI code). https://www.jetbrains.com/lp/compose-multiplatform/ https://www.jetbrains.com/lp/compose-multiplatform/ I think it's new, and I haven't tried it myself.
- sambeau 3y agoI recently built a couple of apps in it and I found it to be great—I would recommend it, assuming that your app has similar functionality to a web app—text, images, data fields, fairly standard navigation (some of the more sophisticated interactive/canvas-based apps look a little trickier). The only issue I've stumbled across is that React Native added a new rendering engine recently, and some of the animation libraries need updating to work with it (but, that work seems under way). In general, it was straightforward to work with, I found working libraries for pretty much everything I wanted, and I had a nice little iOS app with swiping, infinite scrolling with lazy loading, pull-to-refresh, streaming audio, native icons, popup sheets, and supabase integration, working in under a week.
- chromakode 3y agoDiscord's iOS and Android apps are built using React Native [1]. This enables business logic to be shared with the desktop and web clients, as well as shared UI components between both mobile apps. Part of the reason you see abandoned repos is because the community has adopted libraries like Reanimated, React Native Gesture Handler, and React Navigation, which offer a lot of leverage to implement ambitious animations and native experiences in JS/TS. React Native is mature enough to build big apps, and the community is active. It's still necessary to reach into Swift/Kotlin to implement some things, but for large apps that's not an unexpected lift. For cross platform JS/TS apps, no alternative offers the code sharing and delivery flexibility advantages of RN. I expect it'll remain relevant due to it's unique advantages and the community library stack will continue to mature. [1] https://discord.com/blog/android-react-native-framework-update https://discord.com/blog/android-react-native-framework-upda...
- toastercat 3y agoI uninstalled Discord when they transitioned the Android version to the React Native version. It was such a drop in performance and stability, it was unbearable. Less distractions on my phone at least!
- tomduncalf 3y agoThe Discord app is a bit janky though, it’s not too bad but text entry is weird on iOS in ways that I can’t quite recall but are definitely non-standard. I did work with RN for several years though and I do still think it can be a great choice.
- bamazizi 3y agoGithub open source projects are not at all an indicator of "popularity". There are vast amount RN apps on the appstores and closed source. As someone who has tried most of the options for streaming realtime mobile app, I landed on RN/EXPO for the sole reason of community size and ease of use. Basically everything is possible! Typical recommendation has been to build MVPs in RN and then switch to native after your raise funds, but strongly advise against it unless the nature of your app demands native implementation. You can stick with RN all the way to FB/Instagram scale!
- danielrhodes 3y agoI’ve built a a couple apps in React Native over the past few years. My reasoning for wanting to use React Native is primarily because I think the iOS ecosystem is a real mess right now. SwiftUI is not mature, and UIKit is antiquated compared to the needs of today. If you’re just starting out, the force multiplier you get from RN is almost too difficult to ignore. 1) Even in the last couple years, React Native has gotten much better. The performance gap is not noticeable anymore. In fact, in some cases I think it has been easier get better performance in RN than using native. 2) It does feel like there was a wave where tons of libraries were created and then abandoned. But overall there are lots of libraries which are good and well maintained. 3) Native is still better if you need really tight experiences, but this gap is also closing. Since you can easily drop down to native, this issue shouldn’t be a big deal.
- bilalq 3y agoReact Native has been great. Until recently, updating old versions of React Native had been a real challenge though. The complexity all comes from the native layer bits though. A lot of SaaS providers offer React Native components that are ready to go, even newish startups. The ecosystem feels strong and it's way more economical than writing two separate apps.
- turnsout 3y agoFrom what I’ve seen in the corporate world, it’s the overwhelming default. The business simply will not pay for separate native iOS & Android apps, even if you present convincing evidence that it’s better, faster and cheaper. It’s not the worst thing in the world, but React Native makes your entire app feel kind of janky and clunky. It’s frustrating when something as simple as a push transition looks and works 1000X better with a few lines of SwiftUI.
- noname120 3y agoWhy not Flutter or any other cross-platform framework?
- tomduncalf 3y agoIn my experience, apps rewritten in Flutter are janky, to the point where I can spot them a mile off - especially in animations/transitions and fake native widgets (based on a sample of 2 apps which I use often and have been rewritten in Flutter recently: Philips Hue and EE mobile network). Same can also be true of RN (or native!) of course, and I’m sure with enough work the apps in question could be made slicker and it probably wasn’t a priority; but they’re both developed by large companies and to me as an iOS user, feel pretty bad compared to their previous native implementation, so Flutter is definitely not a magic bullet.
- sdflhasjd 3y agoFlutter is React Native jank times two because it tries to render the entire UI itself. MAUI has just gone through a rough migration from Xamarin and has some maturing to do, and developers are feeling neglected by Microsoft. Cordova is Electron for phones - just do a PWA. Kotlin multiplatform is good, but the Compose multiplatform has only Alpha support for iOS.
- davidmigloz 3y agoFlutter jank is almost non-existent with Impeller, the new rendering engine that Flutter uses in iOS (and in preview in Android). Compose multiplatform uses Skia, so it suffers from the same shader compilation issues in iOS that Flutter has been suffering from all these years.
- samyar 3y agoAll these react haters here are just scared of losing their jobs. I love it I can build what I want easily with RN. I know that I sound stupid but that's the reality
- flopriore 3y agoWhat about Flutter?
- gardenhedge 3y agoI tried RN and Flutter and I liked Flutter more.
- mdwagner 3y agoI've really enjoyed using Hyperview (https://hyperview.org/ https://hyperview.org/) recently, which uses React Native as a base. I used to think PWA/Ionic/Capacitor apps were better, but have really fallen in love with the simplicity of Hyperview and tools like HTMX.
- 8n4vidtmkvmk 3y agoI don't see how anything can be easier than a PWA if you already have a Web app that works ok on mobile. You can do it in a day and only needs updating once every year or two. I know because I had to fill out a few questionaires last Saturday to upgrade for Android 14 support but that was about it. (And those some questions apply to all mobile apps on Play store)
- synergy20 3y agoPWA's issues are with iOS and MacOS? last time I read, Apple are not really into supporting PWA, if at all.
- 8n4vidtmkvmk 3y agoThere's experimental support with pwabuilder.com but yeah, Apple still isn't really supporting it IIUC, and you still need a MacBook to publish which it ridiculous.
- synergy20 3y agoI just found out hyperview yesterday and am learning it, seems interesting to me.
- chfalck 3y agoI’d say it’s definitely got its merits. If you have a React web app built for desktop browsers, and you’ve cleanly separated your code so that the data layer of API calls, types, utilities, etc… is separate from the desktop UX layer, you suddenly have an awesome way to save time and money. You write the data layer, and then your desktop and mobile apps can all save a ton of duplicated work and maintenance and stay in sync with each other.
- tomwilson 3y agoExpo has taken over the react-native scene - look at the libraries they use and you will find them pretty active. The expo approach to generating the native projects is just better than the OOB react-native stuff which makes upgrades extremely tedious.
- atomicnature 3y agoMy thinking on this: Avoid React Native if at all possible. You want a primarily information-oriented software, without lots of manipulation/interaction, then go with Webview based solutions (capacitor + react). You want performant manipulation/interactive software, go native.