19 ms·
State of React Native 2018
- spicyj 8y agoHi! I'm the author. Let me know if you have questions that aren't covered in the post.
- dman 8y agoAny plans for desktop support? (especially Linux)
- spicyj 8y agoNo concrete plans, but I'd love to see it happen someday!
- mephitix 8y agoHi - What's the latest philosophy/best practices on interop with React web? Is the philosophy still 'learn once write everywhere'? There are so many different approaches now to reuse React Native with React, like react-native-web and react-native-dom, it's confusing. Some of those solutions are non-starters for me since I started with a React webapp and want to now have a React Native app that shares most of my existing code. My gut feeling is just stick with HOCs, SFCs, proper isolation of the views and I'll be able to share the bulk of things like action creators, reducers, etc. Is this reasonable? Are there other good practices?
- spicyj 8y agoYour plan of sharing business logic sounds good. We don't currently have any recommended way to share code between web and iOS/Android, although I'm hopeful we will at some point in the future.
- madeofpalk 8y agoI'm actually curious - how does the React (Native) team feel about such efforts? Initially RN was pitched not for cross platform app development, but "learn once, write anywhere". I guess this is the reason why sharing more code between RN and web hasn't been prioritised by the FB RN team, but do you see your team wanting to encourage this?
- rpeden 8y agoFor sharing code (even view code) between React Native and React web projects, also consider Microsoft's ReactXP project[1]. It is very actively developed and might be what you're looking for. [1] https://github.com/Microsoft/reactxp https://github.com/Microsoft/reactxp
- mephitix 8y agoHave you used it? I saw it before but felt wary about having yet another layer above RN and React. I’ve been burned by taking on too many dependencies doing magical/black box things in the past...
- empyrical 8y agoIs there any of this new architecture on the master branch yet? I am currently working on a React Native renderer and would like to try and make sure it will be compatible with this re-architecture.
- spicyj 8y agoMost of the code is in the repo in React/Fabric/ and ReactCommon/fabric/ but unfortunately it's not runnable yet due to some missing dependencies that aren't currently in the open source repo.
- empyrical 8y agoWill the ability to make synchronous JS calls allow for something like preventDefault() on events?
- spicyj 8y agoYes, we'll likely support some form of this. It's important for controlled native components too (ex: text inputs).
- ItsMe000001 8y agoI already posted a comment before seeing your question, so here is just the main point: Will React Native finally support exchanging BINARY data (ArrayBuffer, TypedArray) across the bridge?
- Jonovono 8y agoAwesome, thanks for posting this! Been hearing/reading some of the claims that FB is done supporting RN and it got me spooked :p We've been working on a RN project [1] for the list 6 months or so. Although it's been a bumpy ride - overall I have loved it. RN mixed with Firebase has been an awesome experience. [1]: https://itunes.apple.com/us/app/bunch-group-video-chat-games/id1294869021?mt=8 https://itunes.apple.com/us/app/bunch-group-video-chat-games...
- akavel 8y agoCould you possibly say in more detail where in the RN codebase can I find the exact code which generates the "single JSON message that lists mutations to perform" that you claim? I'm super interested and desperately trying to pinpoint it, but I'm having really serious trouble with that :( (Cross-posted this question to: https://stackoverflow.com/q/50873408 https://stackoverflow.com/q/50873408) (I've already asked this in a post on the parent thread, but I let myself copy it here in hope there may be higher chance you'll read it that way...)
- zitterbewegung 8y agoThis seems to dissuade some of the rumors on HN about React Native not being supported by Facebook.
- bnt 8y agoSounds more like a quick response to the news that Microsoft is building Office on RN.
- dabockster 8y agoThey already converted Skype to RN, so I wouldn't be surprised if they did that. That would also be the day that I stop using MS Office as my go-to.
- reimertz 8y agoWhy would you stop using it just because the migrate over to RN?
- kuschku 8y agoDo you know why LibreOffice moved away from Java? Because the performance was just not good enough. They had custom, native UI while the backend was running in Java. And it just wasn't fast enough. Even when hot, throughput and latency weren't good enough. So, they started moving to C++ as much as possible, as fast as possible. By now you can run Writer without Java at all. Current JS runtimes are all slower than HotSpot. Yet somehow we're to believe that doing the exact same mistake again will work better this time? It'll still end up being slow and a memory hog. Moore's law is dead. RAM is more expensive than at any other point in almost 10 years. You can't just throw abstractions at everything at the cost of performance anymore, expecting the hardware to catch up.
- pjmlp 8y agoAnd even Java is adding AOT and value types as a way to increase the performance. Somehow I got the feeling that MSFT has been invaded by JavaScript developers.
- com2kid 8y agoMy largest issue with RN is that despite being "cross platform" there are numerous times it is not, and the documentation may or may not reflect this. From the image cache policy for remote objects not being obeyed on Android, resulting in all images being cached all the time (open for multiple years, never even acknowledged), to basic features like tiling an image just now coming to Android. Heck even making something as simple as the keyboard not occlude the field being typed into is not cross platform, with the docs just saying that some props may work better than others on android versus iOS. That and just how very fragile the entire JS eco-system is. Running NPM Update ranges from doing not much at all, to breaking my entire system making deleting all of node_modules the only realistic fix. React Native is partially magic, and JSX is really nice to work with. But the complicated things take minutes[0], and the simplest things take hours[1]. All that said, I'm still thankful to Facebook for putting out this project. Even if it does behave... weird at times. [0] Networking? Stupid easy. Even if my linter is unhappy about 'fetch' not being declared anywhere. Great libraries mean things that are normally a nightmare, like, authentication become really easy. And the community has a to of tutorials. [1] Want to make an image responsive? Or just learn how to render an image properly at all? It is the opposite of intuitive. Also React-Navigation is bad-but-getting-better to work with.
- brentvatne 8y agore: react-navigation, I am one of the two primary maintainers of this project and I started working on it in January of this year because it was in a pretty rough state. I think it has come a long way in that time even though there is still plenty to do. I would love to hear what simple things have taken hours for you when using it, feel free to reach out on Twitter in DM @notbrent or email brent at expo dot io. Also, the roadmap for our next major version is here: https://github.com/react-navigation/react-navigation/issues/4434 https://github.com/react-navigation/react-navigation/issues/....
- reimertz 8y agoJust want to thank you for your effort, you rock!
- 8y ago
- plopz 8y agoThe biggest problem I've run into with React Native has been their handling of issues. Far too frequently I'll google an issue I'm having and click a link to a bug report that matches the exact problem I'm having and provides a repro only to see that the issue was closed for inactivity. Never mind the issue is still valid, and the comments on the issue will ask for it to be re-opened and the response is to open a new issue. So then you start this goose chase of hunting down the current issue since it starts getting into this loop of closed, open a new issue, closed, open a new issue, closed, open a new issue, etc. And everytime this happens relevant information gets lots because its not transferred to the new issue. And then you finally find the newest, currently active iteration of the issue and find out that its still not fixed and the workaround is to stop using the React Native version and re-implement the feature yourself natively on both ios and android.
- arcticfox 8y agoI've had this exact experience multiple times. Ironically if you wrote this up as an issue in their tracker, I would surely have one more such experience when they closed it shortly after. That said I complain out of love, because React Native is just awesome when it works.
- 52-6F-62 8y agoI've found that to be relevant for a few issues (including one of my own) with Facebook Open Source projects—that or they just go unheeded by staff, but confirmed by a stream of others. I am a distant outsider to that company, I haven't used the platform in years and remain quite critical of it and many business practices especially regarding recent exposures (though I am a fan of their engineering they've released or open-sourced for the web)— yet I can understand somewhat how staff associated with such projects are not necessarily actively and regularly allocated to addressing those issues. At times they're passion projects that still need to gain traction that entreats the company to something worthwhile to the company [re: endpoint-shareholders]—mindshare, general confidence, whatever. Big corps often do what big corps do...
- danabramov 8y ago
- KenanSulayman 8y agoA few years back I was working with Titanium SDK to build apps in my spare time; so it was a pretty obvious choice for me to checkout React Native. It's pretty cool at first but once you dig a little bit deeper and try to tweak things here and there, add extensions, third-party frameworks, ..., the pain becomes very real. In fact, I learned iOS app development using Swift & Xcode just to not work with React Native anymore.
- LeoNatan25 8y agoAnd I am sure your users appreciate it!
- allover 8y agoWhy? Do you think users would really notice the difference between React Native and native?
- curyous 8y agoI'm sure the users appreciate native. Native is the best you can get. Anything else my be better for the developer, but is worse for the user. Especially with something like power consumption
- mephitix 8y agoI think the commenter is saying something I've felt about cross plat for most of the 10 years I've been working in it... ultimately the best user experience is delivered by the native platform and tools. Cross platform tools can get you really close but you'll be spending a non-trivial of your time tinkering/tweaking shared code to fix or create different issues on different platforms. That's time that takes away from creating a great user experience on a single platform. That's not to say Cross-platform tech is all bad. Just that you have to be aware of the tradeoff that you won't be able to 'give it your all' towards the best user experience on a single platform. PS - the one tech stack that gets you really close from all the ones I've tried (Mono, C++, hybrid web apps, RN) is Unity. But that's for an entirely different use case than apps :)
- neals 8y agoI need to interact with a very specific SDK that Bluetooth stuff, is React the going to be able to handle that?
- reimertz 8y agoSure you can. Either you find an native module like this: https://github.com/Polidea/react-native-ble-plx https://github.com/Polidea/react-native-ble-plx Or implement a Native Module yourself(https://facebook.github.io/react-native/docs/native-modules-ios.html https://facebook.github.io/react-native/docs/native-modules-...), then you can use any native frameworks available.
- pier25 8y agoI'm curious if RN will go the way of Flutter and implement their own renderer instead of giving commands to the OS for every little thing.
- symlinkk 8y agoGod, I hope not. They would have to re-implement every tiny little detail of every button, textbox, and every other widget on each platform. Then they'd have to keep it up to date every time the platform updates. That's just an impossible task.
- ex3ndr 8y agoMost of the UI on mobile is custom, material libraries are also not that "native" and usually lagging behind the current specs.
- sureshv 8y agoMost iOS developers writing 'custom' UI, etc. are just customizing UIKit controls. Same for Android. Not many are creating UI controls from scratch with custom hit testing, drawing, and accessibility handling.
- exacube 8y agoIt's pretty possible, and has been for a while: 1) Flutter already implements the Material spec and Cupertino spec, so the biggest cost, the upfront cost, is satisfied. In fact, the Flutter team found inconsistencies with the Cupertino spec vs. what iOS' animation kit implements and filed bugs for them. 2) It's OSS; this problem will minimize as more people are contributing and using Flutter.
- pjmlp 8y agoYou mean just like people are contributing and using Ionic, Cordova, Qt, Xamarin?
- vbezhenar 8y agoMy dream is react native reimplementation (not just bindings but complete rework) with Kotlin. It could compile to Android, iOS, Browser as a native target without any need to bridge between JavaScript and native code, work faster and having first class sane language. I think that only big corporation could make it, Jetbrains, hear me :)
- LeoNatan25 8y agoWhy not check Xamarin? It’s already on a modern language (C#), great cross platform capabilities (Xamarin Forms), but can also directly interop with native APIs when needed (they are always needed).
- pjmlp 8y agoF# as well, Don Syme has even joined Xamarin.
- tluyben2 8y agoI like Xamarin but I do not like the dev process yet for the frontend. I think if that would be leaner (more Core2 and potentially command line and reloading instead of recompile: only for dev ofcourse) it would be more popular. Now it is a very heavy process; thats not because of c# or f#; they can both be very dynamic. Not sure why not more work goes into making development smoother. Having said that, I for one like working with Forms+renderers and a reactive framework a lot more than RN. I can go for years and have my code work fine after updates; I find npm such a nightmare and RN feels too driven (logically) by FB needs.
- zengid 8y agoDefinitely a great idea. This talk explores what that might look like: https://www.youtube.com/watch?v=eR4LjL1h6cE https://www.youtube.com/watch?v=eR4LjL1h6cE
- sgslo 8y agoCheck out Dart with Flutter. You get browser compatibility with Dart alone, iOS/Android through Flutter. Flutter isn't a JS bridge solution as RN is, alleviating some of the pain that RN exposes.
- anoncoward77845 8y agoSTOP SUPPORTING FACEBOOK. You don't need react. Learn real ES6. Use Preact or Vuejs2. Stop depending on EvilCorps. Use your minds. End of Rant.
- whatsstolat 8y agoThis is about react native, not reactjs.
- warpech 8y agoMy problem with React Native is lack of proper ES6 support on Android. The issues are closed on GitHub instead of being addressed. See https://github.com/facebook/react-native/issues/11232 https://github.com/facebook/react-native/issues/11232
- ljm 8y ago> No updates but if you'd like to help financially sponsor the work to get this done... For a project coming from Facebook, this is a bit rich. It's basically saying "you can pay us to build it for you," which isn't wrong, but it's not what you expect from filing an issue on an open source project.
- danabramov 8y agoThis isn't "coming from Facebook". RN isn't maintained by Facebook alone. The surface area is vast, and there are many folks externally who help with different pieces that they depend on or care about. There's a few consulting companies that help maintain RN, and they need to earn money in order to be able to contribute to open source instead of working on their client's projects.
- bastawhiz 8y agoI think this very problem is what makes a lot of people cynical about open source software. HN sees frequent "If you want to see development on [open source project X] continue, money puts fingers to keys" cries for help—from the FSF to Mozilla to Apache. And yet, when one of the most valuable companies in the world writes a blog post about their open source software, leading with: > At Facebook, we're using React Native more than ever and for many important projects. One of our most popular products is Marketplace, one of the top-level tabs in our app which is used by 800 million people each month. has a project that's short on cash, how much money does it really take to make this stuff happen? When a company with tens of thousands of employees and billions in revenue and a billion users can't manage to address the very real and critical problems that their insanely popular framework has, what is a tiny project like PyPy supposed to do? What are the folks that make react-router supposed to do? What about the people that contribute to vim/iTerm2/VLC? Certainly, the world keeps turning and open software keeps getting written and improving. But if you're embedded in open source and you see this kind of nonsense, it's hard not to feel a twinge of cynicism that even a deep-pocketed sponsor can't manage to help a project be exceptional.
- deleted 8y ago[deleted]
- hiram112 8y agoCan someone tell me how React Native is actually working? My initial guess is that it is basically running the same JS in a browser wrapped into a native GUI widget (win32, X, Cocoa, etc). Maybe I'm getting long in the years, but seems like we've played this game many times.
- untog 8y agoIt isn't. It's using a native JS engine entirely separate from the browser, and hooking into the required native APIs.
- ljm 8y agoIn the simplest terms, it renders native UI (the JSX part maps to UI components that the iOS and Android frameworks provide) but it maintains a bridge so that you can write your business logic in JS and have it work against those native components (as far as I understand it). It's not the same as using a web widget as your main interface and having it render the same kind of HTML and CSS you deploy on the web.
- 75dvtwin 8y ago@hiram112. React native works in a 'conceptually' similar way as wxWidgets (if you are familiar with with that). It uses platform's native APIs. It does not rely on a web browser on your mobile device. The integration is also not just for widgets, but underneath it abstracts out Image, network api, basic storage/preference primitives, screen rotation, etc. For the things that it does not abstract, it let's you write a native module, that you register with RN runtime, and then the APIs for your native module will be avialable to your RN java script code. There is an active opensource ecosystem of RN-modules that you can leverage, that will work on Android and IoS , abstracting the platform specific things that RN does not do yet themselves. Everything from non trivial camera interactions to bluetooth specific things. Eg https://github.com/Polidea/react-native-ble-plx https://github.com/Polidea/react-native-ble-plx
- robotkdick 8y agoFacebook can make software great because they have great engineers, but they've suffered a major case of scope creep, which leads to more than a few loose ends as the company assigns their best engineers to [choose your own adventure]: - maximum profits (woohoo!) - reaction to potential regulation - unwanted press attention - wanted press attention - the shiny new thing That's why I never switched to React. It's a good way to organize things and was clearly well engineered from the start, but there are other choices besides React (and RN) where leaders have demonstrated their willingness to stick with it through thick and thin because...it's all they do.
- spicyj 8y agoThis is a pretty unrealistic view of how big companies work. Engineers aren't fungible, and no one has been "pulled off" of React or React Native to anything like you suggest. React is my full time job (I was also the #1 committer before joining FB) and no one is planning to abandon it. Even if Facebook company leadership decided for some reason to divest, React would live on with the support of its community similar to other projects without corporate backing.
- robotkdick 8y agoWhile it may be your full-time job, you're still participating in a larger mission, right? Take the case of the legal problems with the React license that eventually were ironed out or the privacy issues facing the company more recently. Neither of those would have been a factor in your day to day life if React was its own thing, right? If no engineer has left the team, through their own will or through enticement, you have my apologies. I'm not arguing that you're not committed. I'm arguing that working for a large company is a distraction, which is true of all large companies. Would you agree that the licensing issue was unnecessary and distracting? Don't get me wrong, I think you're doing great work and React isn't going anywhere, but there's a broader mission there that is distracting from doing that one thing. Do you ever wish it were it's own thing (if money weren't involved)?
- madeofpalk 8y ago
- deleted 8y ago[deleted]
- ItsMe000001 8y agoWill React Native finally support exchanging BINARY data (ArrayBuffer, TypedArray) across the bridge? Thus far I have to send binary data as base64 encoded strings! See react-native-fetch-blob for an example, when I read a file. Current state: Example, issue: https://github.com/facebook/react-native/issues/1424 https://github.com/facebook/react-native/issues/1424 (closed but not solved, quote: "We are trying to keep issues focused on bugs and this is more of a feature request") Documentation for native modules, which kinds of data can be sent back to Javascript: https://facebook.github.io/react-native/docs/native-modules-ios.html#argument-types https://facebook.github.io/react-native/docs/native-modules-... (here the iOS docs, but it's the exact same for Android/Java)
- nikki93 8y agoI’ve managed to do this with direct access to the JSC C API — you could probably write an interop w/ Obj-C / JNI.
- ItsMe000001 8y agoAny pointers or code?
- morenoh149 8y agohttp://devdocs.io/react_native/native-modules-android http://devdocs.io/react_native/native-modules-android http://devdocs.io/react_native/native-modules-ios http://devdocs.io/react_native/native-modules-ios http://devdocs.io/react_native/communication-ios http://devdocs.io/react_native/communication-ios
- ItsMe000001 8y agoThat's the regular RN documentation - which is of ZERO help here. Please check the topic of this sub-conversation - you missed it. Hint: The parent mentions the "JSC C API". You point to Java and Objective-C - that alone should give you a hint that something is wrong with your links, that they don't quite fit into the conversation. That's the equivalent of a physics question where you want Watts and get Newtons - a unit mismatch as an indicator that you solved the wrong problem or the problem wrong. And just to say that too, I'm the co-maintainer of a popular native package for RN, so I'm already quite familiar with the RN native API for both Android and iOS.
- rawrmaan 8y agoLots of negative or neutral posts in here, so let me chime in: I love React Native. It’s not perfect, but it’s very damn good. One of the most impressive pieces of software I’ve encountered in 9+ years of mobile and full stack development. I do all my projects in RN now, and I believe it gives me a 2-3x iteration speed advantage over my competitors with indistinguishable-from-native interactions (using react-native-navigation) and the ability to be on all platforms. For a solo dev, these advantages are insanely powerful and are the major reasons that my business is viable. Last year I rewrote my game Falcross in RN and I’m so happy with my choice. Seriously, check it out and see if you can tell it’s a “hybrid” app: [App Store]: https://itunes.apple.com/in/app/falcross-logic-puzzles/id500195713?mt=8 https://itunes.apple.com/in/app/falcross-logic-puzzles/id500... [Google Play]: https://play.google.com/store/apps/details?id=com.rawrmaan.falcross&hl=en_US https://play.google.com/store/apps/details?id=com.rawrmaan.f... At 5k+ DAU I believe it is the largest production game written in RN. There are more apps but I’m on mobile and it’s too hard to link them. Major kudos to the RN team for all their hard work. RN makes me feel very dangerous as a solo developer and honestly makes mobile development more fun than I have ever imagined (especially paired with TypeScript). Thank you!
- chris1993 8y agoI'm guessing that DAU in this context means 'daily active users'?
- rawrmaan 8y agoYup.
- ncallaway 8y agoI want to second this post. I've really enjoyed react native, and I dread doing application development work outside of it now. Many of the complaints in this thread are totally justified and reasonable complaints, but even with those issues I find RN to be the best platform to develop cross platform applications.
- MaxLeiter 8y agoHm, I can’t find the app on the App Store when I search “Picross Logic”, however it appears with “Falcross” Consider your DAU +1
- mychael 8y agoIts very unfortunate that that there is not built-in library for navigation in RN or Expo. React Navigation is a capable tool, but the API is very awkward and convoluted, even for doing very basic things like opening modals.
- morenoh149 8y agouse this https://reactnavigation.org/ https://reactnavigation.org/
- je42 8y agohow do people feel about that FB is not using the github build themselves ? and the fact that the opensource build is RED for roughly a year now ?
- je42 8y agothey also mention async rendering. cool. but they also did in ways that breaks the Detox e2e testing framework ,if i am not mistaken, in a way that is difficult to fix without proper support from RN code itself. this kind of stuff is awkward. do something new cool, but break major functionality for some users of RN.
- rhizome 8y ago"Move at a medium pace and break things."
- je42 8y agoi also wonder about the 64 bit support on android ? if they are really supporting it, i would expect more movement in that area...
- tspike 8y agoAny plans to fix the hundreds of build warnings RN causes and the broken configuration settings that make parallel builds impossible? Huge pain points in our hybrid native/RN app.
- valuearb 8y agoReact Native is hot garbage. I work on a commercial project and it's unbelievable that it can't even compile without hundreds of warnings. Talk about low quality development work. And every few weeks I shudder to pull a new version, knowing something will have change that broke our builds. Now let me tell you about debugging in poor network conditions. Ugh.
- myguysi 8y agoThat doesn’t seem to be something I’ve seen any of the core contributors acknowledge and is often overlooked. As a relatively inexperienced developer it seems like a bad thing on the face of it but the builds still succeed... what’s the tradeoff?
- valuearb 8y agoI'm actually a native developer. I'm responsible for a framework that supplies the react app with features it can't implement on it's own (or can't implement efficiently enough). So when I do builds, I need to know if I have any build warnings in my code, but it's almost impossible to see mine in the mass of React build warnings. It also makes me wonder how compatible react apps will be, for example one build warning about a deprecated iOS feature I inherited actually causes a crash on iOS 12. We have over 400 warnings from the react code alone, how many of those are future land-mines? Quality development dictates your builds have few, if any, compiler warnings. Even if they are things you know will never be a problem you fix them or adjust your warnings so they don't potentially obscure other, more dangerous warnings. That's a good rule for any professional development project, but when you are developing a shared class library for other developers to build professional products from, it's far more important. The React team's failure to clean warnings makes me question their actual ability and commitment.
- HectorRamos 8y agoIf I recall correctly, many of these warnings come from the default settings provided by the starter Xcode template. As we mostly integrate React Native into existing projects here at Facebook, this is something that we're mostly blind to. As it happens, someone sent a PR the other day that fixed a bunch of these warnings just in time for the new release candidate we just cut this week. Please give 0.56.0-rc a try. If there's any warnings that still need to be addressed, send a PR or open and issue and ping me. This is something we want to actively clean up :)
- invaliduser 8y agoI have been working on a commercial RN project for 2 years now. As of today, the project is ~50kloc, and provides builds for Android, IOS, Windows, and Macos platforms. I started it using RN after prototyping with an early Ionic2 version and checking Xamarin. The code share between IOS and Android is very high, almost 100% (except a few simple home-made native components), and we are above the 85% of shared code between the mobile and desktop versions (mobile is RN, desktop is react-native-web + rewriting of several components on a Qt WebEngine with native versions of a few RN components rewritten in C++). The C++ part is actually very simple, and under 2Kloc. Note that we use Typescript everywhere on the React side, and we consider it very valuable. Overall, everything works great, we have a few performance issues here and there, but nothing we can't deal with. However the biggest flaw is how indigent the build system is (combining all the flaws of npm and the issues of android upgrades), we still do not manage to have reproducible builds, and it's been sometimes very painful to fix an issue a few weeks later because it would just not build and require a few hours to make it build again.
- mwilliaams 8y ago> all the flaws of npm Can you not use yarn?
- spinningarrow 8y agoWhat flaws of npm does yarn fix?
- Humphrey 8y agoOh my where do I begin -- Yarn (to me) appears to be faster, and breaks less (if ever). With NPM I kept finding things not working, and having to delete node_modules and re-installing. Yarn just works, and I haven't even considered using NPM since installing yarn.
- passivepinetree 8y agoDo you have any actual issues yarn solves for you besides an anecdotal “it just works”?
- oculusthrift 8y agoEveryone’s “biggest problem with react native” seems to be different. Not sure what that means but don’t think it’s a positive sign.
- mkirklions 8y agoMy problems- > Documentation is written with IOS as the primary system. I still consider this to be a betrayal of programming fundementals >Hot reload stopped working overnight once. No way to root cause this. Ive never guessed so hard. Still not fixed, might just reflash my entire computer since uninstalling and reinstalling didnt work. But really, showcasing the native platform for dev being Apple Irks me. They are bottom barrel for programmers.
- allover 8y agoI think sadly a lot of it is just FUD. Refer to the comments about npm I'm addressing elsewhere in this thread. They're just ill-informed, or deliberately throwing shade.
- finchisko 8y agoOne of my main issues (as RN plugin developer) is build system being so fragile. Plugins are usually declaring different library versions. Same thing with gradle versions itself. Currently RN is using gradle 2, but some plugins started to use gradle3, which lead to even more incompatibilities. I also have several suggestion for RN, but have bad experience with ignoring my issues. React team recommends react-native.canny.io for feature request, but those are pretty much ignored too (not seen official response to any of those). This is very frustrating as plugin developer who really want RN to progress forward and works for free in my free time.
- Shinchy 8y agoSo I just thought I would put my thoughts into this, I've been using React Native to create a number of Apps for a very large company for a few years now. These Apps are used out in the wild and I get to see them being used. As a codebase I think it's great - a really nice way of working and creating something. It's got great integration with tools and the general code setup is really nice. However; If I'm being honest I don't think I've ever seen a worse managed project in my career. Each version that comes out seems to be completely incompatible with the previous one. Getting the App to simply run can take far longer than it takes to actually build the app. There is no locking of library versions so things conflict constantly. Often times the team will update React Native to use some new feature, this makes all backwards compatibility with Xcode incompatible. I think I drew the line when the advice was, just update your whole OS, download the latest Xcode, Yarn and then this latest version will work. To be frank, it's infuriating - and I know it's not yet 'officially' released but if this is the state of how they plan to manage React Native in the future, I can't see much hope in it. And that would be a shame, because as a framework I think it's fantastic.
- myguysi 8y agoI never really understood the version numbering. It's still pre-1.0 and yet it's somehow production ready and encouraged. We're using React Native at work but I'm really conflicted about it for a number of reasons. As the sole mobile developer it's my responsibility to deliver our apps but something in the back of my mind doesn't sit comfortably pinning everything on a framework that isn't even v1.0 yet and it shows.
- LeoNatan25 8y agoIndeed. The project has been in development for 5 years, but feels like it is five months old. Full of bugs, every release breaks something major.
- yeeeeeeeeee 8y agoYou've got to give them credit though, it's pretty ambitious (and very useful for some cases).
- akavel 8y agoQuestion to RN experts: does anyone of you know where in the RN codebase can I find the exact code which generates the claimed "single JSON message that lists mutations to perform"? I'm super interested in pinpointing it, but I'm having serious trouble with that :( (Cross-posted this question to: https://stackoverflow.com/q/50873408 https://stackoverflow.com/q/50873408)
- 75dvtwin 8y agoI have very positive experience with React native, and also with React Native Web. Being able to share source of full pages/activities/forms across both Mobile platform + Web browsers, while having Native look and feel -- is incredible. Very rewarding not just being able to use the same 'code base', but also leverage same paradigms to manage UI Layouts between native and web (with flux). As a side note, I absolutely despair when I have to fall back to CSS or even bootstrap. Once I, finally, 'groked' flux -- it was huge productivity booster and I can rely on that learn-once-use-in-many-places knowledge across not just my app, but also when building small web-sites (in web tech only). My approach for the app, is of a 'hybrid'. That is, my app starts out as Native, and then, for some 'activities' (in Android-speak) -- I use react-native. I have implemented native modules to get access to platform specific elements from React native code (eg networking apis, security, hardware device access, device-preference/database stores) -- while basic forms/widgets and navigation logic for some pieces are in React, leveraging React-native and react-native-web underneath. I think the UI paradigm introduced by React is a sweet spot for UI development (concentrating on state as first-class-citizen). I am hoping same paradigm (and similar abstractions) are adapted by MS toolchain for desktop and console UI in .NET-based solutions. Another side note (not RN specific) : C# is really a much better language than JavaScript, but until browsers can supports C#-subset, JavaScript is the only game in town for the 'modern' cross-platform dev efforts (eg. cross mobile, desktop and web-browsers) ). In terms of some challenges I have experienced with RN: a) build system. Creating a release build is a major undertaking. As the solution has to merge the 2 worlds: native and JavaScript-specific asset management pipelines. Error messages are obscure (eg I ran into issues, for example, where a path for an Icon file was too deep, moving it to shorter path, solved that one). Guides are for primitive (and non-hybrid) approaches. b) Lack of standard (RN and RNWeb ) support navigation component. c) Small things like: no Checkbox component for IoS.. d) Cross-platform app-store compatible icon management is not built in. I use react-native-vector-icons -- so that solves that problem for me. But app-store compliancy like this should, ideally be part of such platform. e) As the article points out, the integration bridge between RN and native is not efficient for 'constant interaction'. Because it requires you to serialize data structures back and forth. So impossible to write 'hybrid' apps where small parts are in RN -- instead it has to be 'bigger things' that would not require too much back-and-forth. f) the Debugging with Chrome over TCP bridge -- is basically a horrible/slow/barely working. Navigations from one screen to another take like 2 seconds, while the debug mode. Because my components work on web browsers, thanks to React-native-web - I end up, most of the time, debugging my RN logic using React-native-web within browser debugging tools (rather than starting up the native app and then spawning the debugger with Chrome bridge).
- deleted 8y ago[deleted]
- harrisreynolds 8y agoAdded React Native to our developer dashboard tool at Chart.ly. Project is definitely healthy in terms of activity both in terms of commits and contributors. Here is the dashboard: https://chart.ly/github-dashboard/facebook/react-native https://chart.ly/github-dashboard/facebook/react-native Would love some feedback on our dev dashboards if anyone here is interested!
- rhizome 8y agoThat looks like a great tool for micromanagers, and I'm not sure what other uses those numbers could have.
- harrisreynolds 8y agoWell... the streaks are intended to show consistency in progress of a project. Great for anyone with a vested interest in the project. Also great for just seeing activity in one place. GitHub's website is great, but not really geared to providing much of this information in one place.
- rhizome 8y agoI suppose, but maybe I'm inexperienced: in what context is "longest streak" a useful number?
- harrisreynolds 8y agoYou are right about that one... more of a "glamour" metric than something very useful (like when longest streak equals current streak which is the case for our internal dashboard [1]). In this case you know you've been very consistent over that time period. We will probably remove that one soon. We do believe that at least with our product this kind of information it will inspire more confidence in our users when we publicize this information more (vs. lots of products that end up stagnating over time). [1] https://www.dropbox.com/s/86jik7dvxwzdddd/Screenshot%202018-06-15%2013.13.47.png?dl=0 https://www.dropbox.com/s/86jik7dvxwzdddd/Screenshot%202018-...
- apeace 8y agoI recently started building an app using Cordova. I chose Cordova because I'd used it before and enjoy using VueJS (have used React and have no problems with it, just really enjoy Vue). What a mistake. I run into problems with the build on a weekly basis. I generally have very good debugging skills but in many cases could not figure out what was wrong. Usually `cordova platform remove ios && cordova platform add ios` fixed it. There is a ton of state in there and it's never been clear to me how to make it reproducible from the configs. Many plugins simply don't work as they are outdated and not compatible with new iOS/Android versions. Using Firebase for notifications is one example. Of course, I greatly appreciate the open-source authors who built all this and I don't expect them to solve my problems for free. I'm just pointing out my own mistake in choosing to use this tool, which doesn't solve as many problems as I thought it did. Can any developers here say whether they've had a smooth experience using React Native? I'll definitely be trying it out soon...
- solidr53 8y agoThere is a small step to get all the build tools into your mindset, xcode and gradle. For me the javascript side of things has been very stable. I have built couple of native like applications with react native, and my only recomendation is using native navigation, it is key. https://loremipsum.ueno.co/using-react-native-to-build-a-professional-consumer-apps-7c9c99cd0605 https://loremipsum.ueno.co/using-react-native-to-build-a-pro...
- rglover 8y agoExcellent news. I've had the opportunity to work with the framework while mentoring a customer and the experience has been pretty enjoyable. Hopefully these upcoming improvements will be backed by better documentation—that's the only area that really felt lacking.
- clarktank 8y agoI moved a way from react-native to flutter because developing react-native is frustrating. Note: I love React and Redux but I HATE react-native! a) Flutter's hot reload is a much better experience than react-native or Expo. b) I am more confident with Flutter (React-native makes me feel incompetent since I have no idea about native stuff). With Flutter, I feel that I am in charge of my code, because dart compiles to native arm code. c) I have OCD and don't like RN's console warnings when I am compiling the code. d) Flutter UI widgets are so consistent that I don't even bother testing on both platforms. (one is enough) e) I dislike RN's ecosystem. I don't even bother making canny request on react-native's canny, due to lack of response. None of the most popular planned FRs from last year are done yet ! https://expo.canny.io/feature-requests?sort=top https://expo.canny.io/feature-requests?sort=top f) React-native's libraries are out of date.(I prefer corporate backing over community support) g) lack of response on stack overflow If I wear react-native, I would take Flutter's approach instead of bridge. Completely modernize JavaScript, get rid of its bad parts and compile it to arm. SKIA is open source and if Dart can compile to it, so should JavaScript with more tweaks of course.