5 ms·
I really admire Basecamp's culture of being thoughtful and forward-thinking, without crossing the line into fad-chasing and reinventing the wheel for no reason.
by ryanwaggoner 9y ago
I really admire Basecamp's culture of being thoughtful and forward-thinking, without crossing the line into fad-chasing and reinventing the wheel for no reason.
I'm a native iOS developer who is horrified by 95% of the "hybrid" or cross-platform approaches to mobile development out there today. They all seem to primarily be driven by a desire to use Javascript, or some manager naively thinking they can cut their mobile dev budget in half, rather than any concern for what's best for the user. I thought React Native might finally be a sensible approach, but there's a long list of things I really dislike about it.
However, Basecamp's mix of native and webview here is thoughtful and appropriate. Rendering those web-based views with 100% native views would be a huge pain for very little gain, and this approach allows them to retain much of the advantages of an overall native architecture.
- gozzoo 9y agoWhat about Fluter?
- ryanwaggoner 9y agoEven more skeptical, especially since it hasn't caught on yet. Now I have to learn Dart, trust that Google doesn't kill Flutter, trust that they'll give it their full support even though they're also supposed to be safeguarding and advancing native Android dev, etc. Plus, I still have to deal with all the issues that any hybrid or psuedo-native solution adds. Things like feature lag, crappy and non-native UI / UX, more pain during debugging / optimizing, extra layer of bugs to deal with, lower community and support, etc, etc. Just learn Swift! It's not that hard! :)
- htormey 9y agoAll good points. Also accessibility is not great with flutter right now as they don’t wrap native components. They take a qt like approach, I.e they attempt to simulate these native components.
- ryanwaggoner 9y agoAgreed, that's my "crappy and non-native UI / UX" point :)
- on_and_off 9y agoRight now it more feel like 'uncanny valley' native. They don't look as bad as a rendered webview, but they look distinctively different from the native implementation. For example on Android, the ripple implementation is very different on Flutter. It might even be that Flutter more closely adheres to the design spec, but since what I am used to is the actual Android implementation, the Flutter one feels wrong. On top of some missing features like accessibility. Perfs are also not entirely where they are promised, but that's a separate issue.
- htormey 9y agoWhat do you dislike about ReactNative?
- ryanwaggoner 9y agoTo be fair, I didn't spend a ton of time on it and I'm probably wrong about many of my impressions, but... My impression is that it's "native" only in the loosest sense of the word. On iOS, it creates a single view controller and then draws everything in there, I guess technically with UIView objects? But there is no use of native controls, so you're at the mercy of whatever crappy controls someone has created. Quality is seriously lacking for most of those. Essentially zero adherence to the greater platform standards or settings. Feels exactly like Java applets or Flash sites from the 90s. Blank canvas, roll your own everything. I guess the drawing of whatever you want is fast, but that doesn't make it "native". A glance at the dumpster fire that is the "navigation controller" situation is enough to turn me away. There's still not even a standard way to handle multiple views and the transitions between them?? Also, I really dislike Javascript. Why would you prefer to write code in JS instead of Swift? The entire npm / dependency / build situation also felt incredibly brittle. Felt like if I came back to this app in 6 months and touched anything, there was basically 0% chance it'd still work without a ton of fiddling with dependencies, etc. It just seems terrible. I basically agree with most of what's written here: https://arielelkin.github.io/articles/why-im-not-a-react-native-developer.html https://arielelkin.github.io/articles/why-im-not-a-react-nat... (this also ignores all the baggage that any non-native platform faces, no matter how good. things like: feature lag, crappy and non-native UI / UX, more pain during debugging / optimizing, extra layer of bugs to deal with, lower community and support, etc, etc.)
- chrisa 9y agoReact Native actually does use native controls - when you say you want a ScrollView for example, you're getting a real native scroll view. That is one thing that makes it different from many other cross platform libraries. It is true that not everything is wrapped, but if you run across something you need, it's not that bad to create the wrapping yourself; here's more details: https://facebook.github.io/react-native/docs/native-components-ios.html https://facebook.github.io/react-native/docs/native-componen...
- cabaalis 9y agoYour experience differs from mine. Having deployed around 15 production apps for various clients and my own companies, there's just one thing you're leaving out: Apple is not the only maker of smartphones that exists. The choices for Hybrid were made for this reason, and very few ill side effects have been encountered.
- ryanwaggoner 9y agoI'm aware. You can build two native apps, you know. And it's very wrong to say that there are very few ill side effects to hybrid. Both have their pros and cons. I just think that native wins for all but the simplest or lowest budget apps.
- WA 9y agoI think hybrid wins for all but the most widespread or highest budget apps. Most apps have only few users. Most apps don't have a million dollar budget. Most users don't care or notice whether an app is native or not. They use it to get a job done and don't care if that button is slightly less responsive than another.
- ryanwaggoner 9y agoMaybe most apps being a steaming pile of shit is part of why they only have a few users. Million dollar budget is a strawman. I've built dozens of complex apps for five figure budgets. Very few ran into six figures, and they'd have been a train wreck on hybrid. Most things don't need to be an app at all. Those that do need an app should at least consider making a reasonable investment. Besides, it's not like hybrid is some magical unicorn technology that enables creating a great app at a tiny fraction of the budget of a native one. You save like 30-50% in the best case, and get what you pay for.
- smokeyj 9y ago> Besides, it's not like hybrid is some magical unicorn technology that enables creating a great app at a tiny fraction of the budget of a native one It actually is.. You cite saving "50%" likes it's no big deal. Clearly you're in charge of coding and not in charge of the business. > Most things don't need to be an app at all Well then you'll be writing this logic in JS for a web-app anyways. I'm curious, what part of your native app couldn't be done in a hybrid model?