Top
Best
New

Posted by fnthawar2 20 hours ago

Shopify is moving from React Native back to Swift and Kotlin(shopify.engineering)
1074 points | 746 commentspage 2
yanis_t 1 hour ago|
I was just recently thinking about how we have built a lot of abstractions that makes it easier for a human to do useful stuff but they usually come with their own set of trade-offs.

And now in the LLM era, there's is less and less justification for using those very high level abstractions, and we'll see many of them die out in the upcoming years. React (native or not) is not exception.

pranshuchittora 2 hours ago||
My 2 cents on this as a fellow RN dev & contributor. - The performance gains in native compared to RN (new architecture) are minimal for normal UIs (except games) - The most valuable feature which RN have is OTA updates, this has been a game changer for us and many fast moving companies. Ability to release and iterate at light speed. On native you are on the mercy of the app stores for review. - Silos of bugs on native > When you go native you might encounter bugs which appear only on either platform. - The project management of native teams is not always in sync - The teams often drift apart bevy iOS team might need 2 weeks just to make the app compatible with the new iPhone Fold (Duo) or Android team might encountered a blocker. Keeping them in sync for new features is really hard.
gr__or 1 hour ago||
I never understood how that flies by Apple's review. Aren't all code changes supposed to go through their review and thus OTA is effectively illegal?
agos 1 hour ago||
> The performance gains in native compared to RN (new architecture) are minimal for normal UIs (except games)

And yet most apps feels distinctly different than native.

> The most valuable feature which RN have is OTA updates, this has been a game changer for us and many fast moving companies. Ability to release and iterate at light speed. On native you are on the mercy of the app stores for review

That's the real killer feature

> Silos of bugs on native - When you go native you might encounter bugs which appear only on either platform.

This still very much happens with RN on anything bigger than a toy app

> The project management of native teams is not always in sync - The teams often drift apart bevy iOS team might need 2 weeks just to make the app compatible with the new iPhone Fold (Duo) or Android team might encountered a blocker. Keeping them in sync for new features is really hard.

Speaking of which, what is the iPhone Duo support situation of RN right now?

Waterluvian 20 hours ago||
If you put every company that needs/has an app on a spectrum, there is a line somewhere that roughly divides them into two groups: where Electron/React Native/etc. makes sense or not. It's just a normal engineering decision: solving problems given limited resources. Companies have different problems and different resources.

I think people in the tech community have probably also noticed that it's rather popular to have an absolute opinion on the goodness or badness of these tools. There's some magical thinking borne from ignorance that everyone just ought to go native or that React Native is the best thing ever to be used everywhere or that AI makes this line disappear entirely.

I think these takes serve little value and distract from what’s interesting, and what the subtitle to this article says: that this line is moving due to AI. And I think that’s probably right.

paxys 19 hours ago||
And the “makes sense or not” part can change based on a bunch of factors.

It’s actually pretty common for a new company to start fully native (only iOS, few features, limited scope), then switch ro react native/electron (need to support more surfaces, features are being developed too quickly), then back to fully native (can afford individual dev teams for each platform).

nfw2 17 hours ago|||
The main cost of two engineering teams shipping identical products in my opinion isn't the cost of those extra engineers, it is in the product and organizational challenges of keeping those two products that need to be identical in sync. I am very bullish on coding agents but would be wary of this turning into a mess.
tcdent 14 hours ago|||
But here's the thing, across operating systems the products should not be identical.

When you get to the point that your have a significant enough number of users across multiple platforms, generalizing everything into a shared UX doesn't make sense; giving those classes of users the best experience requires embracing their platform.

A simple example: Android has a system-wide convention for a `back` button. iOS has no such standard. Users on each platform have different expectations for how to navigate an app fundamentally, and holding tightly onto the concept of identical gives both camps a compromised experience.

thm76 14 hours ago|||
I took "identical" as in feature wise. The user should be able to accomplish the same things, no matter what platform they're using.

I do think that the way the features are implemented should be platform dependent, i.e. use common UX pattern on each platform, fit in with the UI, and be good platform citizens.

ethin 14 hours ago|||
The solution is to make the common features a part of a statically-linked library that you can pull into your apps. A web app is, IMO, never the answer when you want to address multiple audiences. It is bad for accessibility (because 99.999 percent of web app developers never consider accessibility) and it doesn't solve the problem that web apps are trying to solve (having 8 code bases all that have to remain in sync) because you will inevitably need your code to handle platform-specific differences, standards/conventions and whatnot.
nfw2 14 hours ago|||
Why does Shopify need to use Apple's or Google's branded design language in their app?
sokoloff 12 hours ago||
Because if I’m an iOS user and used to that and you give me a conventional Android app UX, I’m going to feel that as jank.

Same as if I’m an Android user and you give me the conventional iOS experience.

It’s like if I gave a swing or Gtk+ or Xwindows app experience on Windows 11 or MacOS. It would be usable, but feel conspicuously sub-standard.

nfw2 11 hours ago||
What specifically are the ux differences?
bluGill 11 hours ago|||
I don't know iOS so I can't say, but a good UX does depend in part on platform expectations and every system historically been different. The compromises mean the each have good reason for what they do (sometimes anyway), but switching is hard.
nfw2 9 hours ago||
I've used both in the past 2 years and can tell you these particular systems aren't meaningfully different in any way that affects third party apps.
sokoloff 10 hours ago|||
I'm only familiar with iOS and this is the type of question that an LLM could answer better than this specific human.
nfw2 14 hours ago|||
There is an implication here that the back button is a microcosm that represents the differences holistically but it's not. It's a small one-off exception that doesn't even affect the design choices made for the various apps. As I open up app over app on my Android (Audible, Spotify, ChatGPT, etc.), they all have clear in-app "back" functionality where needed. No apps I have installed rely on the Android back button exclusively. Also, none of these apps have any design elements that follow Android's design language.
pmontra 14 hours ago|||
The back button works at its best when it closes an app and it restores the one that opened the previous one. There could be no in app back button to do that. However the back button used to be an always available hardware button or a touch one on the bottom bezel. It's optionally visible now (I'm on an old Android phone so I'm not up to date with the latest OS) or a gesture, right? So app designers must design as if it does not exist.
nfw2 13 hours ago||
I agree. Design as if it doesn't exist incidentally is also how they design for iOS where it doesn't exist.
tcoff91 11 hours ago|||
Also, the back 'button' is mostly a thing of the past in Android and it's more similar to iOS now with the predictive back gesture.

The Android back button is legacy.

serial_dev 13 hours ago||||
> keeping those two products that need to be identical in sync

I agree that most companies do that, but in my opinion that's not really all that important. Some drift between the iOS and Android apps should be expected and accepted.

nightpool 16 hours ago||||
This is a great point that I wish the Shopify article went into in more depth! Would love to hear if they considered this
ninju 14 hours ago||
I believe they have a more in-depth posting that talks about it

https://shopify.engineering/shop-app-migration

canucker2016 9 hours ago||
The blog post doesn't mention the personnel-related challenges with having two native platform teams working on the app.

The post DOES give more information as to why they looked at switching from React Native to native Platform APIs.

React Native is forcing a major refactor of React Native apps in switching to the React Native "New Architecture" (see https://reactnative.dev/architecture/landing-page).

So if Shopify had to do major refactors of all their React Native apps, maybe they could look at what it would take to go back to native Platform APIs.

from https://shopify.engineering/shop-app-migration

  For the Shop App, this coincided with our next major React Native investment: adopting the New Architecture. That work would have required us to revisit native module integrations, rendering, and the boundaries between shared and platform-specific code. Before committing to this investment, we tested whether coding agents could help us build directly in SwiftUI and Jetpack Compose while keeping product behavior aligned across platforms.

The result of that native platform APIs side project involving six devs converting the app's major user workflows?

- startup time reduced: iOS by 23%, Android by 50%

- crashes - 10x reduction

- app size - iOS increased by 1MB (67MB -> 68MB), Android reduced by 109MB (37.2%)

- build time - Android release build time fell ~75%.

- runtime perf - Android builds could draw at 120fps while scrolling feed and switching screens

simonhamp 6 hours ago||||
Agree to a point, but human resource is literally the main cost in most businesses, so there's that

Conway's law also plays a big part here and it's kind of TBD to see if agentic development will minify or magnify its effects

elpakal 12 hours ago||||
Very true, especially when there are different turn around times and review policies for the various app stores, things can get out of sync quickly
sarky-litso 15 hours ago||||
Assuming they have a robust feature flag and experiment pipeline in place they are trying to solve a much more complicated version of this
skydhash 15 hours ago|||
> it is in the product and organizational challenges of keeping those two products that need to be identical in sync.

They're two different platforms where the capabilities and UI patterns differs, so I don't see why they should be in sync. The web platform is not in sync with them. And using native features can give you a nice boost in maintenance and speed, unlike React Native where you always needs to align library semantics.

nfw2 14 hours ago||
The capabilities of Android and iOS don't meaningfully differ for the purposes of Shopify; Shopify doesn't need LIDAR. Most large brands throw the UI design patterns of the platforms out the window in favor of their own UI guidelines.

Saying the web platform is not in sync with mobile is not a relevant metaphor to justify why Android and iOS should be considered separately.

unqueued 11 hours ago|||
> Most large brands throw the UI design patterns of the platforms out the window in favor of their own UI guidelines.

I really wish they would not do that.

The best thing you can do to make your app trustworthy and friendly is to adhere to the host operating system UI guidelines and expectations.

Nobody wants your unique take on the checkbox or textarea please.

skydhash 11 hours ago|||
They vary in terms of architectural patterns and ui widgets. RN tries to prevent a single interface, but you quickly reach the point where it becomes a pain. You can use Expo to help, but their libraries are unstable.
embedding-shape 19 hours ago||||
Yeah, massive parts of our community and ecosystem miss that something can be right today, and wrong tomorrow, and having to change along with your users and needs is OK. You'll never be able to anticipate what the business needs in the future, so stop pretending your software design can be done once and then just coast on that, because that's typically not how a software project should be run long-term or even medium-term.
bluGill 18 hours ago|||
The problem with tomorrow is sunk costs. There are many places I wish we had made a difference decision in the past - but we need to balance that with cost to make changes when what we have works okay.
rafaelmn 18 hours ago||
There's also a recency bias, where you ignore how valuable some decision was in the past and ignore the fact that you maybe wouldn't even get to the place you are if "you made a different decision in the past".
bluGill 17 hours ago||
I can't count how many times I've said "this is really bad, I it is worth rewriting to fix all the issues", only to discover that there were good reasons for all the past decisions and so we end up with the same mess as before - except that now I know what it must be that way.

Not always, but very often people in the past had good reason for what they did.

edoceo 17 hours ago|||
Those are the comments that should persist in the code. I hate when the AI edits and removes my "why" comments. I want the refactor to make it less messy but keep why it's that kind of mess.
bluGill 16 hours ago||
Too Soon often we thought those were obvious and didn't comment. Meanwhile there are detailed comments about things nobody cares about.
tisdadd 15 hours ago||
I just put a comment in yesterday for this very reason - there was a flag I had set to false, and then looking at the library docs for something else thought maybe it should be true but that doesn't work how I would have implemented it if I had created the library and written the docs how I did.

It is a very capable library, and when I first started using it the docs were more Oracle docs looking - but I could find what I wanted easily. Now, it is much more annoying to delve through but looks more modern.

xp84 16 hours ago|||
As relevant today as it was 26 years ago: https://www.joelonsoftware.com/2000/04/06/things-you-should-...

See also: Chesterton's Fence

collabs 18 hours ago|||
In my experience it comes from the business and people who think if we need to touch the same code twice in the same month it is somehow a moral failing of some kind.
whstl 10 hours ago|||
Another factor is design.

A lot of companies go to React Native, etc, because they want one single non-native design on both platforms.

Which IMO can be a mistake most of the time, especially from the POV of a user.

kelnos 19 hours ago|||
> I think people in the tech community have probably also noticed that it's rather popular to have an absolute opinion on the goodness or badness of these tools.

I don't think that's necessarily true. Nuance is a thing.

These tools are bad, objectively! They give inferior user experiences, and waste resources (ever more important now with RAM prices what they are).

But that doesn't mean I can't understand or even agree with a company for using them. Building the same native application for more than one platform is expensive and time-consuming. Most of the time I'm happy to prefer an app built with a cross-platform framework vs. not having one at all.

(To be fair, though, if there's a webapp, 90% of the time I'll prefer that over an Electron app. But nothing meets a well-built native app.)

danisth 19 hours ago|||
I think you contradicted yourself. If a tool provides better value for the time spent for a company, I don’t understand how you can call it objectively bad.

You can say it’s objectively bad from a technical perspective, but clearly that’s only one part of the equation.

shiflett 19 hours ago|||
I think they were speaking as a user. These tools create inferior products. (Still not technically objective, but true nonetheless.)

That doesn't mean companies should necessarily avoid them. As a user, I always want the best possible user experience, but a company can't prioritize that above all else, and I know that.

wredcoll 18 hours ago||
I am so tired of existing react/electron applications being compared against imaginary, hypothetical "native" applications.

Like, it's fine to criticize something, "this component doesn't follow the OS's UI guidelines" or "this scrollbar disappears when the mouse isn't over it which is a bad UX" or whatever, but this generic "oh this is bad but if it was rewritten it would be perfect" is annoying.

pessimizer 17 hours ago||
It's always the preference of people defending bad decisions to compare them to doing nothing.

What you're seeing is people actually making that case instead of forcing it. They're saying that if the app wouldn't exist without this bad thing, then it is appropriate to compare using the bad thing to doing nothing.

You just seem to be demanding that people not mention other ways to do things, or you'll get angry.

joefourier 16 hours ago||
The app not existing would unironically be better in so many instances, though. The web version doesn’t take up 1GB of disk space, install persistent services, send you push notifications by default, and it’s trivial to block ads in comparison.

I’d be very happy if companies didn’t artificially degrade their web version to force installation of an “app” that’s effectively a web browser in disguise.

xp84 16 hours ago|||
Hard agree. Day by day, I become more exhausted with "apps" as they are currently delivered, with native being slightly better than cross-plaform, but not good.

Apps in 2026 deliver all the disadvantages of a plain ol' website (Requires an always-on WAN to have any function whatsoever, UI that doesn't meld with the OS in any way, no integration with things like Shortcuts...) but add huge real costs: Extra time before I can start using it, the hogging of easily 500-1000MB of disk space on day 1, a growing un-clearable cache, sluggish transitions with useless animations, and the need to be "updated" on a regular basis (whether used or not) wasting my time and bandwidth.

One of the few benefits to me as the user of a 'client application' has always been that a well-made app uses an API to speak to the server which is dramatically lower bandwidth than the modern BloatWeb with AdTech™ stack could ever match, which ought to enable the highest performance. But it seems like they rarely actually deliver that benefit.

yoz-y 11 hours ago|||
Yup. Now we have a choice of either using a terrible website with popovers and cookie bars (never remembering the choices) or apps that have insane onboarding, and bombard you with ads through notifications, with zero benefit.
1123581321 19 hours ago||||
I'm not the OP, but my understanding (and I agree) is that it can seem like a better value when a subset of factors are considered (ones that IT can measure, biases in IT against Apple etc.) and it leads the company into making a choice that is worse for them overall.
ToucanLoucan 19 hours ago|||
It's objectively bad because of how hot my phone is.

It's subjectively bad because it's an embarrassment. Like you're seriously going to tell me something like Discord, worth 15 BILLION, cannot afford native apps? Spare me.

0cf8612b2e1e 19 hours ago||
What really grinds my gears is Microsoft replacing native apps with Electron. Trillion dollar company who is so cash strapped they have no choice but to punt to the easy development path.
cosmic_cheese 18 hours ago|||
The thing that makes Microsoft's case particularly annoying is that they have demonstrated how they can develop half-decent Electron apps with VS Code, but have simply elected not to with anything that's not VS Code.

Like yes, I'd prefer native and MS can certainly afford to take that path, but they can't even be bothered to make sure that most of their Electron apps land on the upper half of the quality spectrum.

skydhash 15 hours ago||
> they can develop half-decent Electron apps with VS Code,

Only if you don't compare it with any native or quasi native editors like Notepad++ or Sublime text. And Emacs has been cross-platform for decades.

ToucanLoucan 13 hours ago||
Also they bloated it to death. VSCodium gets you the same solid core app without the oodles and oodles of useless "features" Microsoft has bolted to it.
xp84 16 hours ago||||
Yikes. What apps have they been doing this with?
0cf8612b2e1e 13 hours ago||
Turns out I was mistaken. Outlook was rewritten for Webview, not Electron. So still took a native application and turned it into web nonsense, but I got the specifics wrong.

Regardless, there are a bunch of new visual glitches in the release, with regressed performance all over the place.

ToucanLoucan 19 hours ago|||
What's extra egregious there is I do understand the logic because developing for Windows is such a fucking nightmare, that they're also responsible for.
xp84 16 hours ago||
I assure you, developing for competing platforms is also a fucking nightmare... that's something Microsoft has no monopoly on!
oskxekxmekdj 12 hours ago||
And I assure you, developing for Mac is a delight, and Linux is not so bad either. Windows, however, fucking disgrace.
hylaride 19 hours ago||||
Nuance is always a thing. Native apps are faster and better most of the time. Electron and React Native wouldn't annoy me so much if they were used with small apps where it's not worth over-optimizing.

However, it's now the default for Multiplatform apps that are used constantly, including IDEs, chat apps, etc. They gobble up memory and cpu cycles and are constantly getting updates due to the shitshow that is the javascript dependancy ecosystem.

ojr 12 hours ago|||
React Native apps make more revenue than Flutter and Native apps according to Revenue Cat report published on June 3rd, 2026.

https://www.revenuecat.com/blog/engineering/why-react-native...

WA 20 minutes ago||
Thanks, but from the same article:

"First key learning: execution matters far more than stack choice"

which directly translates to: make a great app and nobody cares about the tech and this includes whether or not to use Liquid Glass.

Capricorn2481 11 hours ago|||
I would rather have the opposite? I don't want 10 people making small apps that use Electron. I would rather that be used for bigger apps where the overhead is negligible.
JeremyNT 18 hours ago||||
> These tools are bad, objectively! They give inferior user experiences, and waste resources (ever more important now with RAM prices what they are).

They can be "bad" in some dimensions (as you mentioned) while being "good" in others (dev productivity).

These frameworks didn't become popular for no reason. They have value. The parts that are "good" can easily outweigh the parts that are "objectively bad" when they enable a smaller team to get things out the door they would have had trouble shipping otherwise.

sfn42 19 hours ago||||
I don't have any actual experience with React Native and Electron, but with that caveat out of the way I personally think tools get far too much blame that should be on developers.

For an example that I actually have experience with, React very frequently gets criticized for being slow, heavy etc. React is not slow. I can make (have made) fast and snappy websites in react. React can render at more than 60fps if necessary, and if the code isn't shit. The fact that someone else has made a slow buggy mess with React does not prove that react is bad, it simply proves that the developers are bad. At this point, someone will typically interject with something along the lines of "but react makes it hard to make fast websites" and to that I simply say no it doesn't. I've seen what makes react apps slow, and it's generally just bad code. The developers who make shitty react apps would make equally shitty apps with any tool because they're the problem not the tool. They don't know how to build good software and literally no tool can help them because it's simply a matter of understanding programming and the sad fact is most developers suck at programming.

I graduated university with about 200 others and out of those people who have the same degree as I do, very few were even decent at programming. I know that because I was the guy who helped them complete their assignments and I was a TA in several different classes, and I'm telling you the overwhelming majority of students sucked at programming even after 2-3 years of studying it.

After graduating I've worked on many different web apps and other stuff, and I've seen an overwhelming trend of trash code and bad developers. The people who actually care about writing good software and have the mental facilities to do so are few and far between. And that's why most software sucks. A good developer can write good software using pretty much any of the popular tools. The tools are just different ways to do the same stuff. Sure there's some overhead with react etc but it's really not that significant, the significant part is all the trash code people put on top of it.

Shitty-kitty 17 hours ago|||
A shitty developer can create a far worst experience on react then on native.
Capricorn2481 11 hours ago|||
Most developers cannot make any experience on Native.
owebmaster 16 hours ago|||
Yes but only because they can actually ship the react app
bushbaba 18 hours ago||||
Most enterprises are comprised of a high proportion of shit developers. So you need to work with what you got
kentm 16 hours ago|||
> React can render at more than 60fps if necessary, and if the code isn't shit.

Sorry, that doesn't really come across as a ringing endorsement. React apps are typically not doing anything complex so rendering at less than 60fps should only happen if you're doing very computationally intensive things or writing bottom-quartile quality code.

sfn42 15 hours ago||
Yeah, obviously your average React app has no need to render anywhere near that frequently. The ones I've worked on will generally only render as a response to user action, server event or polling.

I'm just saying they can render that fast. So if your app takes a second (or several) to render it's obviously not because react is slow, it's because the code is ass.

In most cases if a React app takes a long time to render a page it isn't really rendering that's taking time, it's a slow network call or multiple. So the app being slow has nothing to do with React at all, it's the backend code that's slow or it's the frontend code doing multiple consecutive requests or something like that.

All I'm saying is react is not the reason it's slow.

echelon 19 hours ago||||
None of this matters anymore.

We have LLMs.

It's easy to build native everything now without much resource expenditure.

Android will be Kotlin. iOS will be Swift. Desktop and server will be Rust. Web will be TypeScript / React for now, but maybe one day WASM.

LLMs are the target now.

raincole 19 hours ago|||
Yet, neither ChatGPT desktop app nor Claude Code CLI is native. Mind you these are made by companies with practically infinite tokens.
echelon 14 hours ago||
These apps predated LLMs "getting good".

Both have an enormous number of paying customers and you don't just disrupt that for a language change.

raincole 13 hours ago||
Anthropic literally rewrote the whole runtime CC is based on in another language. And even then they still not dared to migrate it away from React.
echelon 13 hours ago||
Zig -> Rust is straightforward and is a good advertisement for their model.

React -> Rust is ambitious and the models aren't there yet.

Soon.

jjordan 13 hours ago||||
FYI I've been building an app, Android first, and discovered the magic of Kotlin Multiplatform. The LLM modularized everything so that it's substantively the same code base, but with Swift only where it's needed. Still working through it, but it seems like a great and underrated platform to build on.
echelon 12 hours ago||
You're not emitting the code yourself anymore. The platform ease of use for humans no longer matters as much (if at all).

Preference for a native feel, solid software, bugfree code, compile/develop velocity, LLM friendliness.

We're in a brand new world.

gman83 18 hours ago||||
I'm building an app that targets Android, iOS, Windows, Mac, Linux. There's no way I'm going to be maintaining 5 different codebases, even with LLMs.
WindyTree 19 hours ago||||
This is one of those “oh gosh” posts at first glance, then you actually think about it, and it’s 100% correct. Python, Node exist to save the precious commodity of developer time. Once that’s no longer precious, best value comes from purified custom Rust, no attack surface from huge libraries, optimized performance for the specific task on all possible hardware.
alternatex 18 hours ago||||
Windows desktop native is WinUI 3 and Windows App SDK, for better or for worse. No amount of Rust and tokens will recreate everything you get out of the box with that stack. Native needs to feel native.
zelphirkalt 18 hours ago||
The last time Windows UI felt native was maybe Windows XP. Maaayyybe 7, if we are generous. It also has to do with sluggish or no feedback by UI widgets, due to the trend of flat everywhere.
suriyaG 19 hours ago|||
not sure why you're getting downvoted. but if you're building even very popular applications, it is quite easy to see how LLMs are very well suited for this type of consistency job.

- they follow instructions quite well.

- are tireless at doing mechanical ports between languages and frameworks.

- Can understand a new ecosystem quite well.

nemomarx 18 hours ago|||
Then why aren't people doing that? Microsoft has as much access to cheap tokens as any software company around, right, so you'd think they would be leading the way.
suriyaG 18 hours ago|||
I'm sure these things are in the plans from upper management.

we'll know when the next layoffs hit.

chasd00 17 hours ago|||
they probably are but have some patience.

Keep in mind, claudecode and the other coding agents were pretty bad until around Jan of this year (2026). So it's only been about 9 months since devs have had decent coding agents and even less time has elapsed since somewhat wide adoption.

collingreen 18 hours ago|||
I didn't downvote but I'd expect downvotes for a completely unnuanced thought terminating cliche that ignores everything in the thread. AI fanaticism doesn't help but lots of people don't get downvoted for that alone.
kevin_thibedeau 19 hours ago||||
A well built native app can still serve as a vector for harvesting personal data in ways you cannot control. A web app is inherently superior because of its security envelope.
jkubicek 18 hours ago||
A React Native app would have all the same access to your personal data that a native app would
kevin_thibedeau 18 hours ago||
That isn't a web app.
jwlake 18 hours ago|||
A badly made native app is worse than a well built react-native app. There are plenty of anti-patterns that will ruin your native app.

In stories like this its much more likely that they just got sick of refactoring a big ugly code base so got buy in to throw it all away and starting over and the justification is native. Wait like 5 years and there will be a new react-native corss platform app because the native apps have too much cruft. Assuming we still have human in the loop then.

kentm 16 hours ago|||
> A badly made native app is worse than a well built react-native app. There are plenty of anti-patterns that will ruin your native app.

Sure, but thats not an interesting observation unless there is something about react-native that makes those apps consistently higher quality than native apps.

On the other hand, like-for-like C/C++/Rust performs better than javascript in terms of CPU and memory use, so the null hypothesis is that re-implementing would , in fact, improve things. There's little reason to think a priori that the end result would somehow be worse.

robertoandred 16 hours ago|||
I think they also got sick of supporting those open source libraries.
Aurornis 18 hours ago|||
> I think people in the tech community have probably also noticed that it's rather popular to have an absolute opinion on the goodness or badness of these tools.

For a while it seemed that having deeply held, nuance-free opinions about technologies was a sign of being wise and experienced.

The slightly lighter version of this was having near-absolute convictions but leaving a tiny exception for extreme cases to try to demonstrate that you weren’t being unreasonable.

These would usually follow trends when something would spread like a meme. Recent examples include “Everyone should use SQLite for everything” and the ironically closely related “Just use PostgreSQL for everything”. The typical pseudo-nuance would be “unless you have FAANG scale” to imply that there is no nuance until your user base includes most of the developed world.

chasd00 17 hours ago|||
> For a while it seemed that having deeply held, nuance-free opinions about technologies was a sign of being wise and experienced

this was every DBA in the late 90's and early 2000s when talking about their pet RDBMS. To me, it was a signal to avoid that person unless absolutely necessary.

Waterluvian 18 hours ago|||
Strong opinions considered harmful
weakfish 18 hours ago|||
Strong opinions tightly held

I try as hard as I can to have strong opinions, loosely held

Aurornis 18 hours ago|||
Blind conviction without nuanced considered harmful.
wwalexander 19 hours ago|||
Using cross-platform web technology is absolutely a nuanced engineering decision that is the right one for many businesses. What is categorically bad is bundling a standalone browser runtime for every single service, wasting user’s storage and memory when you could just have a website in a browser.

Is there any major browser now that doesn’t support saving websites as apps? Electron is simply a suboptimal and incorrect way of producing web apps.

user43928 19 hours ago|||
That decision is easy: do users leave bad reviews for bundling a few hundred MB of Chromium?

Do they leave bad reviews if your app malfunctions due to the system webview behaving differently than the Chromium version you tested with?

Forget about saving websites as apps, no one does that. Not sure if it works on Desktop Safari, it certainly doesn't on iOS Safari. Not even persistent storage is offered for PWAs. Apple likes the billions in AppStore fees they rake in every quarter.

asdfman123 18 hours ago|||
Much of Hacker News seems to be incapable of understanding the average user doesn't care about memory use at all, beyond a few extreme examples.

You don't need to argue with me about it: I'm not the average user. But they really do not care at all in most cases.

skydhash 15 hours ago||
> Much of Hacker News seems to be incapable of understanding the average user doesn't care about memory use at all, beyond a few extreme examples.

They don't care, but they care about their computer being slow because of swapping. While they can't identify the cause and link it to the various Electron apps they're using (Teams, Slack,...) it's obvious for the tech-aware person they complain to.

asdfman123 15 hours ago||
That's true, but greater efficiency isn't going to sell more software if the users don't know they need it.

At some level in your management chain there's someone who cares about selling more software above all else, and it's your job to do what they want.

I don't like it either, but I've fought against it for too long to my own detriment. I think ICs have a responsibility to deliver quality software regardless of external pressures, but there's only so much you have time to do.

Shorel 18 hours ago||||
Bad reviews?

Haha. I completely replace the software with a non Electron alternative if available.

user43928 18 hours ago||
Who cares, unless you pay?

A one star review, on the other hand, can have a material impact on the search ranking and consequently my revenue.

Shorel 17 hours ago||
I stand corrected. I will leave one star reviews from now on.
TheRealPomax 19 hours ago|||
It's funny how folks can't even get that number right. Depending on how much you care to optimize, Electron adds 50 to 80 MB to your application. Those multi hundreds of megabyte apps? Yeah that's not because of electron, that's things like "we couldn't be bothered to actually think about the assets we bundled in". 100 uncompressed 16 bit PNG? Sure why not. 20MB worth of fonts because we don't like the built in ones and no we've never heard of subsetting? Let's go. 50MB worth of .json data files that we couldn't be bothered to gzip first? Who's going to notice!

Electron is way bigger than an app needs to be, of course, but those giant apps that you hate, 250MB just for a health tracker? That's not electron being the problem.

Shorel 18 hours ago||
Are you defending Electron apps? The audacity :)

Bruno consumes 300MB in RAM. The alternative I am using consumes 25 MB and it is much faster.

The difference is not because some uncompressed PNG or some fonts, it's the Electron architecture that is wasteful, by design.

TheRealPomax 14 hours ago||
First off, RAM is not app size, and second, the point of having RAM is literally so it's there to be used. Sure, Chrome is absolute nonsense, but Electron is not Chrome, and an Electron app using 300 MB in memory where data needs to be uncompressed and directly accessible when your computer (including your phone) has gigabytes of the stuff to work with is just... irrelevant? That's pretty much pretending there's a problem for the sake of wanting a problem.

And yes, not using electron will use less memory, which is an excellent reason to go "we're not using Electron". But there's a difference between "We want to use as little memory as possible" and "300MB of RAM on a system with 8 gigabytes of the stuff is a problem". The first is an excellent call. The second is nonsense =)

Shorel 2 hours ago||
I could not disagree more.

Space on disk, I have plenty. But the Electron version of many apps feels slow, sluggish, and it takes time to open, it takes time for every click to respond, it is the runtime cost what matters the most.

You say it is irrelevant? It makes a computer in 2026 feel just as fast as a computer from 2001, doing similar tasks, while the computer from 2026 is thousands of times faster.

And I definitely run more than one app at the same time.

This 300MB is the bare minimum used by these apps, in my example just an API tester. A simple "chat" app like Teams, Slack, or Discord wasting so many CPU cycles and so much memory is to me something that should feel like collective shame to our profession. Maybe that's why you disagree with me.

Waterluvian 19 hours ago||||
Is everyone wrong, or is there more to it than you can see from where you stand?

I don't want to spend much time on this comment so I risk not making a sufficient point, but something I notice is that you're appraising the situation from a purely technical point of view. The technical component is just one piece of what makes a whole product. I think Apple is probably a good example: they regularly make decisions that bother the hell out of tech-centered minds.

eek2121 18 hours ago||||
Sure, cross-platform frameworks were great. I do think LLMs are changing the game, however. If you have a robust set of tests, it's much easier to maintain native versions of an app, compared to the past.
moritzwarhier 19 hours ago|||
Apart from the hassle that OSes put in the way of PWAs (intentionally, but that's another topic), a local Node app simply has a different kind of system access compared to a web app.

Most apps won't need these capabilities to function, but they are there, for all purposes good and bad:

- background activities with fewer restrictions

- less restricted file system and sensor access etc

- ...

sure, many app use this for nefarious things.

But real use cases don't need to be sophisticated rendering algorithms or what not.

I think good streaming apps also use these capabilities, for example, for performance.

prisonguard 14 hours ago|||
its sad that the only reason warranting this switch is AI.

I would have loved to see some performance benchmarks on some critical app flow.

stickfigure 19 hours ago|||
These takes are also a bit premature. Wait until the new apps have rolled out and users are happy.

Most likely this will work out fine, but big rewrites like this have a big enough chance of going off the rails that I wouldn't shout success from the rooftops just yet. I'm sure Digg engineering was proud of their rewrite too.

Waterluvian 19 hours ago||
There’s risk to doing anything. There’s risk to doing nothing. A bit off topic but my perception is that organizations bias towards doing something more often than they should.
afavour 19 hours ago|||
Agreed. I felt the same way when a long time ago when Airbnb made a big deal of going back to native.

For companies the size of Shopify and Airbnb that makes sense. But that doesn’t mean a small ten person startup should do the same thing.

mannyv 17 hours ago|||
Absolute opinions are simple and travel better on media.

"The right tool for the job" is too complicated for a lot of people to understand. Tradeoffs? Tradeoffs require understanding.

"XYZ is the best, just use it" is much easier, especially if you don't know how to make decisions and don't really care. Then you defend your non-decision by parroting what you read.

I remember a product manager talking crap about Kafka years ago, and I started digging in as to why he didn't like it, and all of his reasons were marketing FUD from competitors. It was odd, his understanding of it was a Potemkin village.

All tools presumably solve a problem. If you understand that envelope you can figure out if it works for you and your envelope.

sghiassy 11 hours ago|||
Well written and good perspective
Fr0styMatt88 11 hours ago|||
I think this is something we’ll see AI very meaningfully impact — the threshold needed for “Get this thing working on a tech stack we might not be familiar with” has gone waaaaaaay down.
fishfasell 11 hours ago||
It's worrying to say the least. Today it's "get this working", tomorrow it's "can it also do XYZ?", next week it's "we have a 40% spike in crashes, you MUST resolve this IMMEDIATELY!"

Meanwhile the devs are furiously asking AI how to fix it, every flavor of every model will give you a different diagnosis, GH Copilot will throw a million high/critical at you, and you still have no idea if it's fixed or not.

It's the exact reason why you still need to know the languages you're using despite what leadership/product teams demand.

Fr0styMatt88 9 hours ago||
Yeah. It’s also far too tempting and far too easy to keep adding features if you don’t make yourself disciplined about it (which is okay if you’re in a position to control that, not so good if it’s the higher-ups demanding it).
ls-a 14 hours ago||
[dead]
joenada 54 minutes ago||
This thread is very depressing. Web dev bootcamps and product managers have done untold damage to the field of software engineering. And it's our own faults. We had it so good for so long. There was a period of time when programmers were the new "rockstars" (for better or worse). We should have used that respect and those resources to unionise and build some kind of institution responsible for teaching, mentoring, standards, etc - a software engineering guild of some sorts.

Quality is, was and always will be job one. There's obviously a place for AI tools (providing the economy doesn't melt), but can we please just slow down for a second and think about what we're actually doing?

underdeserver 19 hours ago||
And I'm just sitting here looking at the Codex desktop mac app wondering why a list, a chat window and textbox require a 579 MB download (compressed) and 4 GB of RAM.
Nathanael_M 17 hours ago||
An entire copy of libreoffice, for one.
simonhamp 7 hours ago||
I'm working to solve this...
asimovDev 20 hours ago||
Dropping React and going back to raw JavaScript next?

I am still mourning pre-React GitHub. Maybe rose-tinted glasses, but it was so pleasant to use

vendiddy 19 hours ago||
I would attribute that more to culture.

For example https://diffs.com/ is built in React and it's basically instant.

bob1029 19 hours ago|||
I would attribute it to physics.

If the entire page is rendered on the server, the information required to do so is presumably reasonably approximate (same datacenter). If most of the page is rendered on the client, the information needs to be pulled in from arbitrary physical distances.

At some point the engineering really is this simple.

zelphirkalt 17 hours ago||
Which is also, or at least has also been a culture thing, because of the

"Oh no, we can't possibly do the computation of all that on our backend! Yikes! Let that run on every single client instead! Let users spend their own compute over and over."

culture.

vmg12 17 hours ago||||
You'd be wrong, diffs is vanilla js with a react wrapper.
mike_hearn 18 hours ago|||
Is it? I looked at the source but it doesn't appear to be react. It has a React API but also a "vanilla js" API and when I looked at the code it seems to be doing everything by hand:

https://github.com/pierrecomputer/pierre/blob/main/packages/...

... albeit using React inspired terminology like props and hydration.

stn_za 4 hours ago|||
Dropping Javascript and going back to native yea
fg137 10 hours ago|||
I don't think UI frameworks will go away any time soon. They solve a very different problem from React Native.
agos 1 hour ago|||
it was also terrible, but in a different way
imposter 19 hours ago||
[dead]
mkhalil 15 hours ago||
A multi-billon dollar company dropping quarters (performance/ux) to pick up pennies (development savings from not maintaining a native app) never made mathematical sense to me.

[ aside: Meta founded the development of RN and they don't even strictly use it; plus, any troubles/hacks they need, they can make to the Framework itself ]

simonhamp 7 hours ago|
What if you could have both great performance and UX for each platform AND a single codebase?
canto 16 hours ago||
So, instead of paying humans twice for the same thing, Shopify will pay corporations to burn the planet a little bit more, waste water and energy - to build the same thing twice. Just because. There's no tech reason to do it. "LLMS are better now". There's no low level optimisations, no blockers, no app shortcomings, it's a shopping app for Christ sake. Instead of optimising, creating more with less, they will create the same with more. Yeah, that's smart. Super smart.
shawabawa3 15 hours ago||
> Just because. There's no tech reason to do it.

They made a separate article on why, which they linked to. Performance is significantly better. The native Android app launches twice as fast for example

canto 38 minutes ago|||
and only 23% on iOS. Now while those can initially seems significant, it's still a web app, doh, a web page, that loads non deterministic stuff. Even in their tests, the page that loads native vs RN is simply... different. Different things take different time to load, yeah, who would have though. Not even mentioning that this "performance" is only app startup, lol. Ah, sorry, my bad, 120fps when browsing items on the web.

Don't get me wrong I don't have anything against AI, I'm a heavy user myself, but refactoring everything just for the sake of it and bragging on HN with little to no tangible effects - that's a whole different story.

throwaway613746 11 hours ago|||
[dead]
uselesswords 8 hours ago|||
Can someone explain the waste water thing to me, because unless they’re separating it into H2 and O2 how is it possible for water to be wasted?
tryauuum 55 seconds ago|||
evaporating it so it's relocated somewhere else. Damn clouds
simonhamp 7 hours ago|||
It's the cost of water processing and delivery, infra (plumbing) maintenance, chemical treatment...
joegibbs 5 hours ago|||
Ridiculous, the amount of energy saved from a faster native application over how ever many million users will be far greater than the amount spent to generate the tokens to do so
gvv 15 hours ago||
quality ragebait
canto 36 minutes ago||
yeah, apologies, i shouldn't be doing that but it's just... doh
pkaler 19 hours ago||
I'm sitting here at my desk overlooking Cordova Street. The street that Apache Cordova is named after. I've seen this debate for almost two decades now.

Teams jump on the latest cross-platform framework assuming that it will reduce headcount cost at the expense of having a lowest-common denominator app on each platform.

The latter is true but the former is false.

What ends up happening is that teams start as 20 iOS engineers & 20 Android engineers. They adopt something like React Native. Then you end up with a team of 20 product engineers and 20 tooling and framework engineers.

I've seen that countless times in the last two decades.

woah 18 hours ago||
> I'm sitting here at my desk overlooking Cordova Street. The street that Apache Cordova is named after. I've seen this debate for almost two decades now.

The debate has been taking place on the actual street?

FLeXMurphy 17 hours ago||
We practically heckled and threw rotten tomatoes across it at each other.
ahalay-mahalay 10 hours ago||
I’m curious who was across the street from whom, I’m assuming Nitobi was one.
canucker2016 7 hours ago|||
That wasn't the starting point for the webview app DX.

Companies (or their consulting agencies) had tons of webdevs - working on their company public and internal websites, but not many native smartphone devs. Those were the days when people who completed the Stanford iPhone programming course were snapped up lickety-split.

But everyone was clamouring to have their own smartphone app for all the smartphone platforms (well, iPhone, Android, maybe Blackberry)

Hiring enough smartphone devs to fill multiple smartphone-specific dev teams would be like trying to build multiple AI development workstation on the cheap these days.

In the late 2000s, people realized they could write an HTML/JS/CSS website and compile to an app for each J2ME/Blackberry/iPhone/Android platform that would "serve" the website. So their webdevs could be converted to smartphone app developers.

Hey, if you planned your website well, you could use the same business logic for your website AND your smartphone apps.

That was the elevator pitch.

You'd need an actual (maybe two) native smartphone devs for each platform to handle any areas where the marketing didn't meet reality 100%.

But that was doable versus hiring multiple native smartphone devs for each platform.

And in the late 2000s, there seemed to be a lot of potentially viable smartphone platforms - iPhone, Android, Blackberry, J2ME, Windows Phone, Palm's webOS. But we know now that in a few years, all but two would wither away.

Even with native APIs exposed via JavaScript, there were obvious problems with these webview apps. The apps were passable if the app didn't require much user interaction or computation.

Projects like React Native and others tried to reduce the amount of webview usage and increase the amount of native UI controls used.

The mobile platforms themselves aren't going to improve their platform-specific webview to make it easier for webdevs to mimic the "native" experience. Why would they?

hn_submit 16 hours ago|||
I've dumped all cross-platform frameworks as well. I tried many of them but they just weren't good enough, even for simple stuff. There were always glitches and teething problems that marred the overall quality compared to the native version.

I'm currently maintaining versions for both iOS and Android.

stack_framer 8 hours ago||
How do you stay motivated to do this?! I've tried to start my app in React Native multiple times, but it always sucks, so I finally started learning Swift. I'm already not sure how I'll stay motivated to learn Kotlin too, and rebuild the whole app again.
azkalam 16 hours ago|||
I can see the case for shared core libraries and then platform native views. This is best done in one programming language. Can Swift, Rust or .NET work here?
simonhamp 7 hours ago|||
We're doing it with PHP... we call it SuperNative (https://nativephp.com/blog/supernative)
ivm 13 hours ago||||
Yes, native .NET without MAUI is great for that. I have my app running with MvvmCross and two native UIs on iOS and Android since 2018, with hundreds of thousands of installs.
abound 16 hours ago|||
A Rust implementation of this idea is Crux: https://redbadger.github.io/crux/
vsviridov 19 hours ago|||
Pretty sure I've seen you either at B-Sides or Polyglot... Small world...
pkaler 19 hours ago||
I'll most likely be at Polyglot. I did a very small part to help organize one of the very early ones.
vsviridov 19 hours ago||
I'm looking forward to the next one in October.
sintaxi 13 hours ago|||
Yes, though its worth noting the goal of Cordova was to not exist. In the eyes of the project the web itself is the cross-platform solution but at the time Browser progress was stagnant and Cordova helped move things forward by offering device functionality using open web standards. Cordova was never intended to be a "cross-platform productivity multiplier". The north star of the Cordova project was for browsers to get the device functionality that native platforms offered, such as geo-location, accelerometer, contacts, camera, etc.

I just want to correct this, because I agree with you but the framing is a misinterpretation of the goals of the Cordova project - goals which were ultimately met.

lcfcjs6 19 hours ago|||
[dead]
nicce 18 hours ago||
This is probably the end now. People don't debate anymore whether they should write only in assembly vs. in C. Sometimes new abstractions emerge and they replace something completely. This time the abstraction was LLM.
felizuno 5 hours ago|
Sorry not sorry RN was always the wrong choice, and I've made my money shipping React since 2013. Every RN project I've had to join has been a junk show and there is no way they operate more efficiently than 2 native teams. Don't even start me on Expo. Kotlin and Swift are nice, and ObjC/Java are still approachable IDK why people act like native is a big ask. I see people are in their feels already but I'm so glad so see Shopify stop carrying the RN banner, this makes giving the right advice to my clients easier.
More comments...