Shopify is moving from React Native back to Swift and Kotlin (shopify.engineering)

1074 points by fnthawar2 20 hours ago

sashank_1509 6 hours ago

Numbers from GPT Astra - Shopify has 3000 engineers as of 2026

- Google Chrome when released in 2008 conservatively had ~ 60 engineers.

- GTA 5 in its credits had 150 software engineers. Surprising even to me who has had many an experience of being in a bloated FAANG team, this 150 includes GTA Online!

In a sane society, Shopify’s opinion on anything engineering related would be thrown into rubbish because they seem to have managed to complicate a simple app into requiring thousands of engineers and now maybe millions in cloud spending to Frontier labs. This is unfortunately not an isolated case, Spotify for one has the same issue, idk what “engineering” Spotify is doing, it’s the worst app I’ve used in my life.

dmazzoni 4 hours ago

When Chrome 1.0 came out in 2008, it only ran on Windows, and it couldn't do basic things like print or export to PDF, didn't have any accessibility, didn't work in RTL languages, and didn't have any graphics acceleration, among other limitations. Don't get me wrong, it was a marvelous piece of engineering - but it was extremely incomplete. By the time it was what we think of as a modern, complete browser, they had many hundreds of engineers working on it.

Also, you're comparing the number of engineers working on one product, to the number of engineers working at Shopify across their entire company today, which includes far more than just one app.

You're entitled to your opinion that Shopify is a poor app or that it's overengineered, but clearly it's not simple. That's just a fact. If it looks like a simple app to you, that's because you're not seeing most of it.

It's like looking at the YouTube mobile app as someone who watches videos and saying that the app frontend looks simple. You're only seeing 5% of the app. The other 95% is for video creators and advertisers, and it is decidedly NOT simple. I think that's the same here.

hypendev 18 minutes ago

And, importantly, this was 2008.

Most of the modern software tooling you have today wasn't available back then, from great IDE's to popular libraries, writing software in 2008 was a different beast compared to today.

Epa095 11 minutes ago

conradfr 3 hours ago

And it was a fork.

wiseowise 3 hours ago

Rubbish. Most of the stuff you’re listing is handled by OS and frameworks themselves, you don’t need hundreds of SE to handle RTL or a11y. I work in one of those companies, most people just regurgitate existing shit into another form of shit and collect salary (not complaining, as I’m one of them, but let’s be honest).

NavekG 2 hours ago

sgammon 2 hours ago

lynx97 2 hours ago

Vegenoid 6 hours ago

Spotify has progressively gotten much worse over the last 15 years, all while the size of their engineering team has ballooned.

I am very unsurprised by this outcome.

People wonder why good software becomes bad, and it’s because the people who were good at engineering are often outmaneuvered by corporate-politics savvy people in a growing company. One of the best political moves in a company is to have a lot of people under you.

A couple years ago, an engineer I know who has always been a very poor performer and lacks initiative, but is friendly and non-confrontational, was hired by GitHub. It would not have been hard for GitHub to find a much better engineer, but this person would be an easy person to keep under a manager on a team who wouldn’t leave or make waves. That can be more important to some managers than skills.

vantassell 6 hours ago

>Spotify has progressively gotten much worse over the last 15 years, all while the size of their engineering team has ballooned.

Spotify or Shopify?

Vegenoid 2 hours ago

aetch 6 hours ago

leoedin 4 hours ago

> One of the best political moves in a company is to have a lot of people under you.

This is why I’m sceptical of “AI will kill corporate jobs”. A big company has no profit sharing for successful departments. Everyone is trying to get budget to hire because it makes them feel important.

0xpgm 2 hours ago

Sometimes I wonder what the tech ecosystem would look like without the ZIRP era.

I look back over 15 years and with the exception of increased smart phone usage, everything else still looks mostly familiar. Maybe a bit more slick, but also slower and buggier despite having much better hardware.

There hasn't been a qualitative leap in software (as was in the 90s). Just larger SaaS companies. Without ZIRP would it have been any different?

PunchyHamster an hour ago

mentalgear 2 hours ago

I have the impression that for hiring this is fundamentally the most important aspect: Finding a prospect that is just skilled enough for the position without being a risk to the person who is hiring them.

Cthulhu_ 2 hours ago

When it comes to number of engineers, always keep in mind that it costs more engineers to maintain (and understand) software than the initial development push.

darkvertex an hour ago

15 years of extremely well paid engineers and yet we still cannot delete a track from Recently Listened. ಠ _ ಠ

m10ax 6 hours ago

The mythical man-month ;)

z3t4 3 hours ago

Any book recommendations, that is not satire, about navigating the political landscape?

Spotify had a good app when it came out, p2p and UDP custom networking...

hirako2000 an hour ago

golly_ned 6 hours ago

This is wrongheaded in so many ways.

To start -- how many of those 3,000 engineers do you think work on the mobile app? And even among those who work on the app -- do you think they're all working on user quality-of-life and just can't get it right? And it's a $175BB company -- do you think it's worth that much based on the quality of its mobile app?

moomoo11 5 hours ago

i will bet 175 billion dollars people like that guy are bikeshedding types

pavelstoev 6 hours ago

What are we talking about here - Spotify or Shopify ?

If Shopify - and you are concerned about their engineering teams, please consider that Shopify's revenue grew from roughly $205 million in 2015 to $11.56 billion in 2025, reflecting an explosive compound annual growth rate (CAGR) of over 45% across the past decade. Market validates !

I have nothing to add about Spotify - I use it to listen to music and it works well for me !

abustamam 5 hours ago

Shopify works well for me but it used to push nonsense like podcasts or audio books that I had no interest in, with no way for me to hide them. I just want to listen to music.

Upon looking just now, seems like they have been relegated to their own tabs now, which is great.

cwackerfuss 4 hours ago

rtpg 6 hours ago

> GTA 5 in its credits had 150 software engineers. Surprising even to me who has had many an experience of being in a bloated FAANG team, this 150 includes GTA Online!

Just so it is said: my understanding is it's really easy to not end up on the credits list for games despite having worked on it. I don't know if contractors end up on there for example, at least beyond some team leads or the like. I don't know R*'s policies though, I've heard stories of people not being in credits because they, for example, changed jobs near the end of the development.

I get your overall point though

faet 9 minutes ago

https://www.rockstargames.com/gta-v/thankyou

They have updated their policies a bit. You may not be in the game credits but you'll show up here.

FWIW the social club team which handled a lot of the online components was small around the time GTA5 released. They built the APIs to handle user generated content, telemetry, accounts, etc. But, there were other team members that made it so the game would call said APIs.

literallywho an hour ago

I remember hearing in an old podcast (Dad & Sons), one of the guys there worked at Rockstar in QA in 2012 and he's still listed in the credits for Red Dead Redemption 2 (2018), so the policies are unclear to say the least.

dominus103 4 hours ago

People who has not run software at scale have no idea what it takes to run it at scale. Google chrome is 60 engineers at launch but google same company has more than 100k engineers. Building first version was always easy and only gotten easy, scaling software was always hard and it is still hard.

PS - Spotify i can't defend the product sucks.

T4iga 2 hours ago

I am quite curious about what people hat so much about Spotify. I made some excursions the last few years to competitors like Tidal and Apple Music but I just found myself coming back because the Spotify mobile app experience (and desktop) was just plain better.

I wonder what gripes people have.

Hendrikto an hour ago

coredev_ 12 minutes ago

fallingbananna 3 hours ago

I wonder how many of the 100k+ enginners at Google work on that "simple" text box that shows you relevant websites to the input text.

bigiain 2 hours ago

psychoslave 2 hours ago

It’s not that much about scalling software, as scalling software on highly concentered nodes. Distribution downstream can be its own hell, admittedly, but otherwise having fully independent copy of software copies that run in local terminal is a no-brainer if all that matter is running software at scale.

djtango 5 hours ago

Video games are much easier than what Shopify do which will be a long tail of business cases and local permutations for all the countries they operate in.

Commercial software is usually a simple core and a long tail of business exceptions

psychoslave 2 hours ago

That’s different difficulties.

Like comparing a climb and along run. Sure both require some physical abilities, but in the first case any error and the collapse mean dead end bringing progress to zero, while the second one you can rest on the side any time and still have the miles behind you accomplished.

_flux 2 hours ago

rhdunn 4 hours ago

You're comparing a company (Shopify) to an application (Google Chrome). A better comparison would be the number of engineers at Google (90,000 [1]) vs Shopify, or the number of developers actually working on the mobile application instead of any other area (website, backend database, internal systems and processes, infrastructure management and maintenance, etc.).

[1] https://www.linkedin.com/posts/rpandey1234_its-mind-bending-...

melodyogonna 20 minutes ago

When you see seemingly simple products have too many engineers, most are almost always there to cater for enterprise customers.

austin-cheney 6 hours ago

In the corporate software world, especially anything to do with the web both front and back, most people really don’t know what they are doing. The goal is hiring/firing and agile.

Compare that to companies that release actual software products. The goal is product release at high enough quality. There are real performance and security targets to achieve.

Your typical corporate developer, on the other hand, does not have release targets. The actual goal is compatibility with the industry least common denominator expectations and retaining employment. This is why so many people are needed to do the work and why the result is so slow and bloated.

abustamam 5 hours ago

What's an "actual software product" and why don't you think web products count as them?

I'm a full stack web developer. I've worked for startups and F500 companies. There is always a push for release targets. The less technical the leadership, the stricter the release targets (its hard to sell a critical refactoring to management when they cant sell a shiny new feature or kpi to their own boss). We've kept our teams pretty lean too.

We still aim for high quality, and performance and security.

I do agree that many people dont really know what theyre doing and are kinda just winging it, especially with AI at the helm, and many companies are likely overstaffed, but I dont think theres a correlation between headcount and slow/bloated software. Any team of any size can make slow and bloated software.

sgammon 2 hours ago

sidcool 6 hours ago

Comments like these make me wonder if people don't understand the difference between engineering and business.

InterviewFrog 6 hours ago

That’s what they said about Elon firing 80% of Twitter’s staff. But X is doing pretty well.

mitxela 5 hours ago

Twisell 5 hours ago

gib444 4 hours ago

moomoo11 5 hours ago

most people don’t. that’s why they are employees.

mitxela 5 hours ago

They'll be mostly involved with the parts that make money. I worked in a similar situation as one of about 5 people keeping the core infrastructure of the product working, meanwhile about 500 people optimized the ads

deaux 4 hours ago

How is life at Google nowadays?

Oh you said 500, not 5000, my bad.

beached_whale 6 hours ago

I wonder how many of those are there to consult with customers and help them build their stores.

pjmlp 3 hours ago

Add to it that they need a compiler team for a Ruby JIT, due to the language choice to run an heavy load server infrastructure.

flossly 3 hours ago

And now we learn they use Swift and Kotlin to replace React with. So they are not replacing it with Ruby. I think they've hit the limits on Ruby (like twitter had on Scala).

P.s.: I find Kotlin "an acceptable typed-Ruby" with an industrial strength VM (the JVM) and two compiles to native stories (KMP and GraalVM-native).

meowface an hour ago

Tidal is pretty nice to use. Plus the music isn't compressed.

PunchyHamster an hour ago

When business is booming, you can do nothing wrong, as with that revenue even big mistakes stop mattering.

All I want from Spotify is API so someone can make better player/plugin to a better player.

protocolture 3 hours ago

>what “engineering” Spotify is doing, it’s the worst app I’ve used in my life.

Engineering is app usability. Theres no other possible thing an engineer might do. Chrome ofc has infrastructure to distribute a binary. Spotify of course having a global content delivery network for terabytes of music. Hey GANG CAN WE WOKK OUT WHAT THESE ENGINEERS MIGHT BE DOING?????? WHY HASNT JIM STORAGE ENGINEER IMPLEMENTED A UI REFRESH YET!!!!

ojbyrne 4 hours ago

One word: Ottawa. There's a lot of engineers, most of them underemployed.

csomar 3 hours ago

Shopify supports multiple countries both as a buyer/seller. I assume there is all kind of customizations needed to comply with each country weird rules. Are all of these software engineers doing core engineering? Probably not. But they are probably tagged as software engineers within the organization.

Jean-Papoulos 4 hours ago

We have no idea how many of these engineers work on the mobile app. This comment is somehow both AI slop and human slop.

zuzululu 6 hours ago

its actually not that weird if you consider that those shopify engineers are probably not even exceeding 150,000 usd on average salary wise

canadian dollar is very cheap so you'd likely see 40~50% more headcounts for the same burn rates you get in USA

i definitely dont think those shopify engineers are going to be retained long term however

atonse 19 hours ago

We did the same thing - had 90% of it overnight. Then spent a few days in the background tweaking for polish.

Our app is smaller, and has about 15-20 screens. I started at about 12:30am by giving codex a goal and it inventoried every screen based on the react native code, then created android and iOS directories, used maestro (I had already set up this tooling for a previous personal app build a few weeks prior), and had the whole thing working in android and iOS in the morning. Took it about 6 hours while I slept.

The app is way smaller, launches instantly, and the android app is (supposedly) native looking. I say supposedly because I don't use android phones. But it's using Jetpack Compose and Kotlin.

And I don't know Swift or Kotlin. I honestly don't see the point of React Native anymore. I know Expo is doing very cool agentic stuff, but I'm just not sure why I'd need any of it when I can write a native app.

fourside 19 hours ago

How are you evaluating the Android build if you don’t use Android and you don’t know Kotlin?

atonse 18 hours ago

We have people on the team that are android users. I just meant that I don't want to evaluate whether it feels "native" as I personally am not an Android user.

user43928 19 hours ago

You just install it on your phone and use the app.

Maintainability concerns are entirely overblown by people who don't use agentic AI to develop large mobile apps, but anyway give their opinion as if they had that experience.

I put in a few hundred hours, and I reached the same conclusion as Shopify. With reviews from other models and then a manual QA pass the result is fully usable.

elvis10ten 17 hours ago

littlecranky67 18 hours ago

nicce 18 hours ago

masom 19 hours ago

majormajor 7 hours ago

asdfsa32 18 hours ago

dakolli 18 hours ago

croes 18 hours ago

MiroslavPokorny 9 hours ago

Remember the first step to fixing any problem is admitting you have a problem.

If you are blind, you cant see anything wrong, if you are deaf uou cant hear anything is wrong.

collingreen 18 hours ago

Seriously! What a bonkers thing to claim. "I had codex use maestro so I assume it made Android work well and idiomatically".

It's a fine project to do but clearly they put zero value on being familiar with the project's codebase/stack and ecosystem, which makes me feel fear in my heart when I imagine the first "production is down" page coming in. I already hated mobile because it's so much harder to maintain than web (and I don't do any spyware or IAP so no benefits for me there); this yolo approach would give me constant dread.

It shows that at least some software development is moving away from code and to product management instead. I'm not passing judgement on that; I actually think that's great for a lot of software. It is interesting to see the shift happening though and will be fun to see if the general quality of software noticeably changes over the next few years.

jatins 18 hours ago

atonse 16 hours ago

snoman 17 hours ago

atonse 18 hours ago

dyauspitr 18 hours ago

whatsThisBtn4 9 hours ago

ITT: people dealing with realities.

Remember Chinese accounts on US Facebook say data centers are bad.

larodi 19 hours ago

React native is an obstacle compared to what clear Swift/Kotlin code may produce. Swift is very powerful and Kotlin, in all honesty, is the first reasonable and very useful thing to come to the JRE ecosystem (save for Scala, which is, well, quite complex still).

Myself turned some python code to Swift, and keep doing so, without trouble or pressure. Of course, I've been doing fair amount of systems programming for 20 years now, so not sure what to advice newcomers. But this approach to dev DOES work for me very well.

doc_ick 19 hours ago

Sounds like the advice to newcomers is to not worry about trying to learn a programming language. There already is an llm to program for you, and do it better than you could, so just learn how to talk.

teleforce 4 hours ago

greenowl 19 hours ago

And people say AI isn't taking SWE jobs...

wccrawford 18 hours ago

While I mostly agree with you, this is the kind of thing that might not have been done if the AI couldn't do the heavy lifting.

They had previously chosen React Native because it was easier for programmers to keep it updated, since it was really just 1 codebase. With AI, those same programmers can do the more difficult version, keeping the native apps updated separately.

So did it kill a job, or did it make it possible for the existing programmers to do it better?

It's the kind of thing that is really hard to determine in general, but here, it really does sound like they only made the change because it became possible with existing resources. They would not have done it otherwise.

bgirard 7 hours ago

mattm 19 hours ago

This is a type of project that likely wouldn't have been done before AI

eleventen 19 hours ago

lnrd 16 hours ago

This app has 15/20 screens, an app this small wouldn't employ many people to begin with. Before there was one guy (op) maintaining it in react native and now he maintains it native. I don't see much change tbh.

dlisboa 17 hours ago

The optimistic outlook:

Just like this has made Web devs into Mobile devs, so could Mobile devs leverage AI to work in Web shops.

I'm not an optimist but there could be an increase of available apps being created which would still keep people employed. Theoretically the cost of creating an iOS app for a company without an engineering team dropped from several hundreds of thousand to a few thousand or hundreds, which could be paid out to a freelancer with AI. More people would go into freelancing for industries which were not contemplated before due to cost.

But I'm not an optimist.

augment_me 19 hours ago

This is an incredibly boring task. Nothing new, just rewrite everything to just see it all rewritten again in 1 year. Perfect for LLMs and something humans shouldn't do.

boringg 19 hours ago

cheema33 19 hours ago

guelo 9 hours ago

exe34 19 hours ago

It ported overnight. I don't think it would create from scratch without a lot of hand holding.

greenowl 19 hours ago

prisonguard 43 minutes ago

Congratulations, you now have 2 codebases to maintain.

ashishb 8 hours ago

React native is broadly an inferior option.

LLMs made it way worse https://ashishb.net/tech/react-native/

avicado0o an hour ago

this is from 2021....

ricardobeat 18 hours ago

I assume having Kotlin and Jetpack Compose makes it much easier than it was back around 2020?

nevertoolate 14 hours ago

So now you have two vibe coded applications you don’t understand. I’m not an advocate of making “job security” decisions but this definitely goes to red flag territory. Was it your job to maintain the RN codebase or do you have other functions there as well? I’m not sure I would keep a native noob on a vibed native codebase. What is your take?

jgalt212 19 hours ago

And there's no proprietary IP in your company's app that you don't mind being sucked up into the training data?

masom 19 hours ago

> there's no proprietary IP in your company's app

For most app that concept is "gone".

People routinely decompile and recompose existing binaries, and if you use "obfuscation" in your app it's still a small bump.

In today's age, IP is no longer a tangible concept that gives any advantages in software. What differentiates two businesses isn't their IP, it's their relationships and their moat.

Most vendors that had protected proprietary IP are now irrelevant within their vertical. What saves them are the protection provided by patents, which is public.

drdexebtjl 19 hours ago

Are you saying you don’t trust ZDR claims from inference providers?

They don’t care about your code. There’s more and better data on the public web.

greenowl 18 hours ago

exe34 19 hours ago

The value of most companies/apps are in the relationship with the customers, so it's the database, not the code.

stwrt 19 hours ago

c16 19 hours ago

As other have mentioned, the code isn't the valuable part. But also there are alternatives now to these LLM providers.

kccqzy 17 hours ago

Frankly there’s more likely to be proprietary IP in the server side code than in mobile apps.

jgalt212 17 hours ago

asdfsa32 19 hours ago

Codex with what model?

atonse 15 hours ago

I think probably GPT 5.5, or 5.6 Sol - it was ~ 2 months ago.

Each time I get access to a new model, I do two things on all our active codebases:

- Security review of all the code and vulnerabilities (new models will find new stuff)

- Code review of test suite quality, and idiomatic patterns/code for the language of that codebase.

And in the case of swift and kotlin, it's even more important that an agent helps me with the code quality since I don't know what "idiomatic" swift or kotlin looks like, the way I do with JS, Elixir, C#, Ruby, etc.

alostpuppy 19 hours ago

This has been my conclusion as well. Agentic workflows drops the effort level in keeping two native code bases in sync.

sprite 19 hours ago

Same conclusion here. My current preferred setup is native for iOS and Android with common core in rust exposed through uniffi

asdfsa32 19 hours ago

locallost 19 hours ago

Next up, designing an even higher level language which will be used by LLMs to compile to high level languages like kotlin or swift. Just store instructions for LLMs in repos.

simonhamp 6 hours ago

I hate to break it to you, but we already have it: it's called PHP

keithcarolus 5 hours ago

That Shopify employs 3,000 engineers is astounding.

I was rejected after a fairly basic ML interview at Shopify and when I asked for feedback I was told someday I could become a machine learning engineer.

I don’t think the interviewer read my resume or understood my responses as this was after working for several years in ML roles - staff applied ML and scientist.

So maybe that tells you something.

aprilthird2021 3 hours ago

Why is it astounding? They have one of the biggest e-commerce applications in the world. A mobile app for shoppers. A payment system and mobile wallet app. A shipment tracking system. Tax and small business software. They have their own lending arm with its own software. They have multiple frameworks for other development teams to make super customizable e-commerce sites. They support Remix and Tailwind among other software. They have brick and mortar POS systems.

They are like multiple companies in one: Square, Etsy, aspects of Stripe, aspects of Squarespace/Wordpress. Idk I can see why they have a lot of people.

harrouet 2 hours ago

Plus they have an Amazon-scale infrastructure to manage...

stingraycharles 2 hours ago

netshade 18 hours ago

I agree w/ advising people to move off React Native, though I think the story that "LLM enabled an otherwise too-expensive migration to consider" is not correct.

I say this because I was part of a migration from a mid-size React Native app to a Swift/Kotlin native app redo. I did the majority of the technical work on it. The majority of the work occurred before January 2026 and without LLM code assistance, though later features in the app definitely used some.

For anyone considering this, I'd say that the migration is definitely worth considering without even taking LLM assistance into consideration. The continued React Native tax of unnecessarily difficult upgrades, impedance mismatch w/ underlying core frameworks, and incredibly uneven library quality just cause your business to really spend a lot of time shepherding the tech over the finish line. It's pretty wonderful to be back in the world of "build, compile, ship, be sure". One thing as a fundamental principle that I think the Shopify article 'gets' at, is the importance of the feedback cycle - investing time in our integration test story very early on both helped w/ my cycle times, and later in providing guardrails for LLM assistance.

All to say that this decision is worth considering without even taking LLM assistance into account.

zero_shift 10 hours ago

> The continued React Native tax of unnecessarily difficult upgrades,

My very first experience of RN was having to update an app to handle the mandatory change to 64 bit APKs

Which required a massive update not only to several dependencies but also xcode, iOS frameworks, the weird objective C caches that get smuggled into node_modules, _as well as_ all the rigmarole or making the 64 bit APK build work

It was completely miserable

Rohansi 9 hours ago

I experienced the same issues but went the other way and migrated from React Native to React. Still one codebase but none of the issues. Performance was better too even though half the code stayed the same.

hectdev 10 hours ago

As an iOS Engineer that has been fighting the battle against every C-level type who brings up the subject of a shared codebase my whole career, I feel very validated.

user43928 10 hours ago

They specifically say in the post how React Native was the correct decision and that it worked well for them.

Now it's a different situation as implementation has become incredibly cheap.

hectdev 10 hours ago

Not sure why someone would say it was a wrong decision. Why would they even need to do this if LLMs make coding easier. They are likely chasing the things I advocate for: direct access to latest APIs from each platform, platform specific UI, UI that behaves correctly on each platform without chasing down edge case solutions (also said as ui that looks and feels "right"), and a bonus of separate developer pool to hire from that knows the ins and outs of the platform without needing to hire a developer to know all three- react, iOS, and Android.

throwaway27448 10 hours ago

simonhamp 7 hours ago

nielsbot 7 hours ago

> worked well for them

yeah because they don't care about a top notch user experience.

Cthulhu_ an hour ago

I'm inclined to agree on certain points; true native apps are, generally speaking, better when it comes to e.g. customer experience. It comes with risks and costs (but I think the cost vs benefit is exaggerated) - risk being the ability to find good native developers, which aren't as common as e.g. web developers who can switch to RN fairly easily.

But there's a factor few people (that decide on using RN) miss; it adds a layer of indirection, so you're no longer as "in touch" with the underlying platform. While possible, few RN developers would consider adding widgets or smart watch apps to their main app, but (I feel like) if you're a native iOS developer who is all-in on the Apple ecosystem, you're more likely to try and adopt these features (where applicable).

(disclaimer: RN is my current day job, used to do native iOS development and I frequently miss it)

dopamean 10 hours ago

You should read the article. You'd realize that you're not actually vindicated by its contents.

hectdev 10 hours ago

I read it. They chose native over shared. Hence vindicated.

hermitwriter 9 hours ago

hackernud3s 10 hours ago

I don't see why you would, unless your argument for your whole career has been that LLMs make this easy.

hectdev 10 hours ago

My argument is that platform specific codebases is the right course of action. My point is that consumers can tell, the product is better, and developers are happier working on native codebases.

makeitdouble 10 hours ago

hackernud3s 8 hours ago

ronsor 10 hours ago

MiroslavPokorny 9 hours ago

colesantiago 9 hours ago

winrid 10 hours ago

probably because every react native app they've used feels like shit

ajross 10 hours ago

FWIW, the native app specialists are in some sense the most invalidated here. Shopify decided they couldn't afford your skill set and didn't change their mind until you could be replaced with an LLM.

Really the whole concept of technology specialization is the thing in jeopardy. It no longer appears to work to make a career out of deeply learning something obscure. Agent-farming generalists appear to be the ones who own the future right now (if, heh, not the agents themselves).

hectdev 10 hours ago

My validation is that platform specific codebases is what is the right course of action. The c-level decision is that they want the cheapest route to consumers. My point is that consumers can tell, the product is better, and developers are happier working on native codebases.

hermitwriter 9 hours ago

oofbey 8 hours ago

If only LLMs had been invented at the beginning of your career, you would have been right all along!

busymom0 8 hours ago

Same here. Glad I stuck with native iOS development. I still haven’t switched to SwiftUI though (except for some small stuff). Still sticking with UIKit here.

cute_boi 6 hours ago

what they should've done is written logic etc.. in rust and use mobile app just for native layers, so they can still share code.

fnthawar2 20 hours ago

We don’t hold on to a decision just because it was successful at the time. When a core assumption changes, we’re willing to go back and ask whether it’s still the right call. LLMs changed one of the core assumptions behind our 2020 decision, so we reevaluated our mobile stack from first principles.

What we found led us back to native.

railka 20 hours ago

Yes, AI have changed the game, and now you can build and maintain two separate projects in Swift & Kotlin instead of one on React

kamaal 3 hours ago

If AI can make any language do anything, why move away from React Native ?

What you could do with Kotlin/Swift you can do with React Native as well.

This just feels like internal factions wanting their own teams, and owning their respective politics, than a discussion on Merit.

lysium 2 hours ago

nightpool 16 hours ago

Thanks Mustafa! This was a great article—I'm curious, did you consider the non-technical / organizational costs in keeping the two codebases in sync as a separate factor? Do you foresee more organizational overhead as part of this decision? How are you planning to manage that? E.g. small implementation difference between the iOS and Android app increasing the support burden or bug burden and causing duplicated team effort.

aprilthird2021 11 hours ago

This is not the author. It's very likely Farhan Thawar, head of eng at Shopify

accumulator 19 hours ago

Thanks for the write-up. I'm curious if there's a shared core between the iOS and Android apps (e.g. KMP or Rust), and if so, what that looks like.

Also, any plans to open source Helix?

ceejayoz 20 hours ago

I suspect we'll see a lot of large orgs doing this in the next year.

joshstrange 20 hours ago

Perhaps. I can absolutely see that being more attractive especially with things like the Duo where, I assume, SwiftUI gives you a number of things "for free".

That said, the massive downsides to native are:

- App Store Review time, this used to be hours to 1-2 days, now it can take a week or more

- In the same vein, you can do updates without waiting on native when using web technologies to build your app. We can go from a bug in the field to a fix in <1hr easy. Try doing that with a native app

- Cross-platform, yes LLMs mean you can create a native iOS and Android app but you have to keep those in sync to say nothing of web (if you want to offer a web app as well)

- Like the point above: Web, if you want to support web, why not get the other platform for cheaper (shared logic)

joenada 20 hours ago

Rohansi 19 hours ago

cosmic_cheese 18 hours ago

schrodinger 19 hours ago

stephenhuey 19 hours ago

Definitely makes sense for a large org with massive resources (such as Shopify) to do this. But for everyone here pondering what to use for their startup or a smaller project, there are still important trade-offs. In the past few years I've launched multiple cross-platform Flutter apps and multiple native iOS and Android apps using Jumpstart iOS and Android (native templates from the GoRails guys which leverage web views from your Jumpstart Rails server). The latter gave me web, iOS and Android out of the box and was vastly less costly to build, even with AI. For entrepreneurs who like Ruby on Rails, Jumpstart is my favorite for launching rapidly, and since the mobile apps are easy-to-modify iOS and Android projects, it's designed so you can either add more custom Hotwire Native Bridge Components or just write Swift and Kotlin to replace functionality with native code. Eventually you could write away all of the Jumpstart webview stuff, but you'd only do that if you had more runway, like if you have plenty of time or you start making lots of money. I've worked for clients whose ideas failed--not because of my code, of course. :)

It's better to find out quickly if you can get traction rather than building something requiring more maintenance. For most bug fixes or enhancements, you make them in the Jumpstart Rails side and they should up instantly in the mobile apps without going through app review again! Most projects are not being built in companies the size of Shopify, so I caution anyone who wants to just get the project out there to use platforms that give them more leverage. And no, I'm still not a fan of low-code or no-code, because I know what it's like to have to maintain apps over many years.

Oh, and I still always warn clients to stay away from native mobile unless they absolutely need it, because even with AI, maintaining just a web app is still light years faster, and far more pleasant. I know from very, very, very recent experience that testing subscriptions is still annoyingly cumbersome in the flaky Apple and Google sandbox environments, and Stripe for web apps is night and day easier to test. Testing on mobile is better than it used to be, but sometimes when I'm waiting for builds onto a physical device or for confusing settings in App Store Connect or Google Play Console to take effect (or just fine where they've been moved to), I think about how a manager 20 years ago was telling me how slowly his development lifecycle was when he used to burn software onto ROM chips. So web is still the way to go, and native mobile only if you absolutely have to. And if you have tons of time or money, sure, start with plain native.

Edit: As a web developer for decades, I still find both Jumpstart iOS/Android and Flutter to be preferable to React Native.

SV_BubbleTime 16 hours ago

dpark 20 hours ago

I’m surprised we aren’t seeing it more already. LLMs suddenly make it reasonable to maintain multiple native apps. I’d love to see this start to supplant Electron and its ilk on the desktop.

fnikacevic 20 hours ago

Any education required for engineers to switch to native or the agents are handling the details on their own? Wondering if architecture or the new languages require ramp up.

mustafa01ali 18 hours ago

Definitely, we invested in ramping up teams on native before going all in.

dfabulich 19 hours ago

Did you switch to SwiftUI or UIKit?

alexashka 17 hours ago

They created a mess in 2020 and hopped on over to a job at FAANG and now a fresh batch of Waterloo graduates want to do the same - maintaining somebody else's turds is beneath a Waterloo graduate on his way to becoming a manager who never touches code ever again :)

So it goes.

wankerrific 9 hours ago

Yeah. No way we’re getting the full story. It probably goes something like this… we lost native engineers when we switched to React then we lost the engineers that were supporting react recently and won’t be replacing them because stock market. Therefore we’ll switch back to native and go with under skilled engineers using llms. This will work until we have a code base model collapse

ernsheong 11 hours ago

It seems like Shopify has fallen into a trap thinking that more complexity costs nothing because of AI. In the age of AI we have to embrace the same principle as before that complexity needs to be tamed, not multiplied. Even as humans struggled with complexity, from what I see now AI struggles very much the same. Hence I don't think this will age well.

meowtimemania 10 hours ago

Another scary thing is with AI it's easy to let complexity get out of hand to the point where a human manually writing code is basically impossible. Even though AI might seem capable of handling the complexity, you'll start noticing all these weird bugs pop up all over your codebase.

gib444 3 hours ago

I'd say that was even a goal of the AI companies. It's not in their interest to generate human-maintainable code

N_Lens 7 hours ago

Always relevant - https://grugbrain.dev/

jbs789 4 hours ago

We should understand the complexity we are adding but having LLMs as a tool does also make managing the complexity easier.

tonyhart7 10 hours ago

Yeah the problem is AI would improve exponentially and can do work 24/7

any engineering problem is just 'when' and 'how much' at that point

ernsheong 9 hours ago

Yeah but engineering is still subject to failure modes, AI can't circumvent that short of formal proofing (which nobody really wants to get into)

tonic_note 18 hours ago

Models have gotten a lot better at generating native iOS apps. The main appeal of RN was being able to leverage your web devs for mobile dev. that's what I did at my last company. And it's fine for a startup, but eventually you want dedicated native engineers bc each platform really deserves its own technical masters who can optimize for it.

But now that all code is generated, there's little upside to having an RN app... just start native. Your devs are barely going to be writing code anyway.

spiderice 17 hours ago

Nobody is talking about the real advantage of RN: Being able to release to the App Store without having to go through a review. That's so massive. Getting a bug fix out to users instantly, sneaking in optimizations, etc..

Sure, you need a review to release native code changes, and you should probably get a review if you have big feature changes just for the sake of Apple not banning you. But in practice, it removes one of the biggest annoyances of developing for the App Store.

tcoff91 17 hours ago

Over the air updates is SO valuable with react-native. Being able to ship hotfixes instantly to our users has saved our asses multiple times.

azuanrb 15 hours ago

I’ve worked with both native and cross-platform. I think the mentality of being able to make changes quickly without much review often comes from cross-platform, especially when the developers come from a web background.

Changes are cheap and fast, so teams often feel less pressure to test everything thoroughly before a release. Which is a fair tradeoff. That’s part of the reason we can have dozens of releases a day on the web. Not just because we can, but because sometimes we have to.

With native, you know each release is harder to roll back, so you tend to build more tooling around releases, think through changes more carefully, and test more thoroughly before they’re ready to ship. You opt for one bigger, more stable release every few weeks instead.

At the end of the day, both approaches work.

Heh, now that I think about it, maybe web and cross-platform devs were the original vibe coders? Changes are cheap and fast. Just move fast and break stuff.

Native devs are the old-school ones. Shipping is expensive, so you better get it as right as possible.

MrDresden 3 hours ago

sebmellen 8 hours ago

sebmellen 16 hours ago

This is so true, and I'm surprised that Shopify didn't mention it or that they don't use OTA updates.

mohamedkoubaa 11 hours ago

Are you saying a native app can't make an http request and update the code they JIT?

whstl 10 hours ago

jshmrsn 10 hours ago

kccqzy 9 hours ago

bryanhogan 28 minutes ago

I think there are many reasons why React Native would be unappealing, my experience with it wasn't that positive.

I don't see a reason to use it over web stacks plus CapacitorJS (Or Tauri) or directly native for very large teams.

_fzslm 17 hours ago

This is true in a very real sense – models can help you build native apps very quickly, no question. But how do you keep them from drifting apart from one another as you add/change features or design? Right now, there isn't much tooling for this.

React Native's advantage of having a single source of truth for code hasn't quite gone away yet, imo.

tiborsaas 17 hours ago

You create a source of truth which defines all the features and requirements. This can be UI tests, MD files, database, diagrams, whatever that fits your use case.

wsor4035 16 hours ago

I've only read about it from it showing up on hn[1][2], but you can use slick to convert your swiftui to jetpack compose for a andriod build from the ios source of truth

link to project: https://github.com/skiptools/skip

[1] https://news.ycombinator.com/item?id=41384144 [2] https://news.ycombinator.com/item?id=46706906

chasd00 17 hours ago

i think you would have your coding agent work on both code bases at the same time. You could also task with generating identical tests for each platform. It's easier for a model to keep up with that kind of tedium than a human. Plus you can just tell the model to keep re-doing things until you're happy and it won't quit.

Also, having agents trace and document every logic path to compare with another codebase works well in my experience. It can certainly do that better than me, i would give up and start taking shortcuts pretty early in a process like that.

nodamage 14 hours ago

I don't understand the question. If the model built both apps why wouldn't it also be building the new features on both platforms at the same time?

Alternatively, point the model at your git repo for platform A, read the diffs since release X and implement the same changes on platform B?

replygirl 17 hours ago

the problem is that single-source advantage gradually falls away as you develop your software into something that feels good to use on each platform. and once you have a quality product you're left with perfunctory coupling that makes it harder to adopt the latest platform features

Dfiesl 17 hours ago

Android and iphone emulator MCP, model compares screens, flags is theres drift? Something like that I’d guess

professoretc 17 hours ago

patcon 17 hours ago

Tests? Not being flippant, but that strikes me as the new surface to maintain to get what RN used to offer

akd 17 hours ago

"GPT-8 Galaxia - figure out where our iOS and Android apps show different doohickeys and fix them"

otabdeveloper4 17 hours ago

robertlagrant 17 hours ago

You always still needed a specialist per-platform even if most of the code was RN or KMM[0]. But I agree - a thousand not-great mobile apps sprang from this idea.

[0] I always thought the best answer was something like KMM to do all the backend comms and local data model in a shared way, and then a bespoke UI building on what that shared code exposed.

dd8601fn 17 hours ago

> a thousand not-great mobile apps sprang from this idea.

Hi. That’s me… not-great mobile app maker. And yes, I’m grateful that RN exists.

Mostly what it does is make sure that an Android version of things exist at all.

robertlagrant 16 hours ago

throwaway27448 15 hours ago

> The main appeal of RN was being able to leverage your web devs for mobile dev.

There's nothing remarkable about the skill set of either party; the appeal here is re-use of code. how the labor markets itself is irrelevant

kypro 15 hours ago

> The main appeal of RN was being able to leverage your web devs for mobile dev.

> But now that all code is generated, there's little upside to having an RN app... just start native. Your devs are barely going to be writing code anyway.

Are you saying:

- webdevs are now able to write and review native code because of AI (who cares if they don't really understand it); or,

- Because developers are more productive we can cut the number of webdevs and hire native engineers – same no. engineers, same output, but now native apps.

Why not:

Continue using RN but now and just enjoy being more productive? If productivity was the reason to pick RN, then enjoy it. It's not a bug.

blendergeek 11 hours ago

I first learned about the shopify app when I saw a purple "shop" checkout button. Next, I got an email saying that if I wanted to track my package I needed to download an app. No thank you. I don't want your app on my phone. I don't want to browse other stores in the shop app. I want to see my package and its status without enjoying a new "social shopping experience" or whatever.

I now avoid buying things from anyone who use the dreaded purple "shop" button.

profdevloper 10 hours ago

Thank you for coming to the HN comment section and sharing your brave story

Gigachad 10 hours ago

I've been trying to minimise the number of apps I have. Every app needs to be justified in that I actually need it, and there is simply no way it could have been provided as a website.

fHr 11 hours ago

true absolute cancerous bs

throwaway613746 11 hours ago

Never bought anything that used Shopify and never will. As a Canadian, Lutke is just a pathetic individual and I simply refuse to use anything he touches if I can avoid it.

faceless3 19 minutes ago

And they still has zero job openings for Android/iOS devs

Waterluvian 19 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

serial_dev 13 hours ago

nightpool 16 hours ago

simonhamp 6 hours ago

elpakal 12 hours ago

sarky-litso 15 hours ago

skydhash 15 hours ago

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

collabs 18 hours ago

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

1123581321 19 hours ago

ToucanLoucan 19 hours ago

hylaride 18 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

Capricorn2481 11 hours ago

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

bushbaba 18 hours ago

kentm 16 hours ago

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

jjordan 13 hours ago

gman83 18 hours ago

WindyTree 19 hours ago

alternatex 18 hours ago

suriyaG 19 hours ago

kevin_thibedeau 18 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

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

robertoandred 16 hours ago

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 17 hours ago

Aurornis 18 hours ago

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

Shorel 18 hours ago

TheRealPomax 19 hours ago

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 18 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 8 hours ago

yanis_t an 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 37 minutes 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 43 minutes 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?

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

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 35 minutes ago

it was also terrible, but in a different way

joenada 20 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?

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 4 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.

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

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?

simonhamp 7 hours ago

It's the cost of water processing and delivery, infra (plumbing) maintenance, chemical treatment...

gvv 15 hours ago

quality ragebait

canto 2 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

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 18 hours ago

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.

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.

ChiperSoft 19 hours ago

Before I even opened the article I knew the reason was because LLMs don't need abstractions. React Native was always about making app construction easier for people who don't want to learn ObjC or Swift. If you're not writing or even reviewing the code yourself, this is unneeded overhead.

For a while I've been wondering why people are even bothering with high level languages if you aren't even gonna read the code.

thi2 12 hours ago

> React Native was always about making app construction easier for people who don't want to learn ObjC or Swift.

There are more OS than just iOS, depending on the app a lot of shared logic has to be written only once with RN.

rando0987 16 hours ago

I agree as well. To the point i have a feeling that maybe after some time people will just start writing bigger programs which were in these high level languages like swift, java etc in Rust or C++(except for the potential memory risks).

I mean maybe there is some substance to the point that llm's have read substantially much more code and projects made in python and JS instead of rust or C++, but as they generalise and improve more and more, there is a case to go back to these languages for the pure speed and close to the metal ideology they have.

Most likely many wont do it because shipping faster and capturing market value makes more sense than optimization for a company like shopify(user probably wont appreciate going from 175ms to 20ms as much as new feature), and for those features the higher level lanugages have more training data in the models, but still interesting to think about.

Javantea_ 7 hours ago

I was excited to hear some details about how LLMs are changing big companies' workflows. This is a fairly straightforward problem and good on them for discussing it. My first gut reaction is that there is no way I would let LLMs write a significant amount of my codebase. And then I remembered that not invented here (NIH) is a problem I have. If I let it decide what code I ship, I am making the same mistake as writing all my code from scratch. When I find myself worrying about alignment, that is what rigorous computer security policy is for. If it's not catching serious bugs written by LLMs it's not catching bugs written by people. Treating my own code as if it was written by someone else is just another part of computer programming.

seanhly 19 hours ago

Bragging about "using agents to code pre-GPT" is quite the corporate flex... weren't they notoriously bad back then? Might as well say, "We've been doing spreadsheets with quantum computing since 2016"

keeda 17 hours ago

I would not say they were bad, mostly just primitive compared to what we have today. I can only presume they are talking about GitHub Copilot which was released before ChatGPT. I believe at the time it was little more than “spicy autocomplete.” Yet it could be surprisingly capable, e.g. I recall this blog, also pre-ChatGPT: https://medium.com/data-science/github-copilot-crushes-data-...

That said I did happen to work with a team in ‘21 - ‘22 that got access to an older coding model from OpenAI, also called Codex, through a corporate partnership. We also tested it out in an autocomplete UX. Our experience was rather hit-or-miss and I was a bit skeptical of AI-based coding at the time. That blog post above and others like it were an eye-opener and made me wonder if we were just “holding it wrong.”

Then ChatGPT was released. It was nowhere as good as the models today but it could write reams and reams of correct code and I realized the world had changed forever.

mike_hearn 18 hours ago

I'm skeptical. Pre-ChatGPT the models didn't understand tool calls or file editing so you couldn't really do targeted edits. So I really am not sure what they mean by this.

I mean, it's not impossible - I wrote a "coding agent" with GPT-3. It sucked balls. The idea was you write a Markdown spec file and the tool then compiled it to an equivalent source code one shotting it every time, but it hardly worked at all. The file changed too much every time and instruction following wasn't good enough, so it'd keep changing the interface exported by the file, and there were lots of bugs etc.

Delgan 17 hours ago

The GP misquoted the article. They actually wrote:

> Shopify has been using LLMs to build software since 2021

GitHub Copilot integrated into VS Code started becoming available that year. It’s definitely not a coding agent, but it was certainly LLM-assisted programming.

mike_hearn 17 hours ago

zhyder 9 hours ago

AI dramatically reduces the cost of writing code (especially when you have a reference), so the scale between native and cross-platform is going to tilt more towards native now compared to before.

But I'm curious what their update will be in a year or two. Because these costs don't reduce as dramatically with AI (unless you fully give up control and vibe code it):

1. Reading code

2. Manually testing code

bdangubic 9 hours ago

1. AI will read the code

2. AI will manually test code

mcsniff 19 hours ago

I use Shopify app every day, multiple times a day to run my business and it has always been buggy and inconsistent for me on Android, and I don't expect this will make it any better, especially with more AI in the mix, but we shall see.

Who wants to bet there still won't be a dark mode?

jrochkind1 17 hours ago

I'm not totally following the part about the simulator(s), probably because I haven't actually done mobile development before.

> When simulator interaction is needed, the CLI can connect to them via a remote mode and drive the UI via commands without having to inspect the layout or the accessibility tree. This enables blazing-fast performance and E2E tests.

I think I'm not following. Don't you still need to test the accessibility tree and layout in the actual layer the user will interact with?

raspo 17 hours ago

I have done some iOS development and still couldn't follow what the article was saying about the simulator. I'm actually quite interested in it, because (in my experience at least) verifying that the UI works as expected is quite painful with current LLMs and the developer tools available. They talk about building a CLI and keeping business logic isolated, ok fine, but do they still run the simulator and take screenshots to verify their work?!

jrochkind1 12 hours ago

indeed it's not totally clear to me if they do or not, my question too! OK, good to know it's not just something I was confused about because of lack of context!

azuanrb 15 hours ago

It’s a reasonable tradeoff. Shopify uses Rails, and there’s been a long history of discussion around E2E testing in the Rails community.

In recent Rails releases, system tests, or E2E tests, are no longer enabled by default. The short version is that they’re significantly slower and more brittle. Basecamp also removed most of their E2E tests.

I don’t know what Shopify does internally, but my guess is that they’ve taken some of those lessons and are trying to apply the same thinking to mobile development too.

https://guides.rubyonrails.org/testing.html?#when-to-use-sys...

jrochkind1 12 hours ago

On theweb, not surprised that Rails switched from kind of encouraging people to use as many browser-automated tests (under whatever name) as possible , to trying to discourage people from using any. Rails way really likes being absolutist.

I work in Rails too, I try to keep them to a minimum, but I definitely try to do at least one happy-path test of any major page (which includes automated accessibility audit), going without them at all seems insane to me.

azuanrb 11 hours ago

ropable 6 hours ago

And so the mobile app development wheel turns. All of this has happened before, and all of this will happen again.

azangru 41 minutes ago

If the argument, which seems to be "code is cheap; let's write implementations for multiple platforms", remains true, what do you think will continue turning the wheel?

negative10xer 19 hours ago

I remember their blog post claiming how much of a win it was to move over to react native and maintain high performance. They even listed their performance metrics. At that time I was a mobile developer for an e-commerce business and the metrics they were proud to share were unacceptable on our native apps. Here they are coming full circle

schrodinger 19 hours ago

Before and after LLMs.

akmarinov 4 hours ago

Not mentioned but this also gets them away from what now seems monthly npm supply chain attacks.

Big win for security

simonhamp 4 hours ago

You don't have to ditch cross-platform building entirely just to escape dependency hell

akmarinov 4 hours ago

No, but it’s a nice bonus

hn993302 4 hours ago

Do you even escape dependency hell this way?

msephton 4 hours ago

akmarinov 4 hours ago

lackoftactics 20 hours ago

I believe this will be overall trend in industry. Dropping React Native and Flutter for native

aatd86 19 hours ago

That would be a huge mistake if we expect many more hardware and OS running them efficiently than just iOS and Android. Best is to have an IR. Now maybe that IR can be turnt into native code. But we shouldn't be constrained. As an incoming framework author, SwiftUI is problematic for instance because it has a programming model which is dated. And I don't particularly enjoy the language either. Looked fine at first and then got more complex than I feel is needed.

oh yeah, disclaimer: I write UI frameworks and dabble in PLs.

organsnyder 19 hours ago

> That would be a huge mistake if we expect many more hardware and OS running them efficiently than just iOS and Android.

Is that something we should be engineering for right now?

aatd86 19 hours ago

uncomputation 14 hours ago

How is SwiftUI dated? It uses a declarative model. I don’t see UI framework paradigms shifting that much.

aatd86 13 hours ago

accumulator 19 hours ago

I think it'll become a trend at larger, well-capitalized companies and startups, but not universally. The article mentions hundreds of engineers have worked on Shopify's RN apps, so they're well positioned to maintain two native codebases with agents and practically infinite token spend. Migration will be a harder sell for resource-constrained businesses.

It also depends on features. Many apps don't rely on platform features (widgets, watch apps) and are essentially webviews, and those will continue to do just fine on RN.

conmod278 19 hours ago

Can React Native become a sort of Compiler which compiles to natives (Android/Apple) now that AI can help in that direction as well? I don't know much about mobile ecosystem though.

RetpolineDrama 19 hours ago

Yep. Flutter has been dead-end for a while. RN won't last through 2027.

SV_BubbleTime 16 hours ago

LOL, flutter/dart are pretty awesome and we have yet to encounter something that needed improvement.

We have small shims for IOS or Android BLE. But otherwise the discussion of should you go native is really a discussion of how many employees do you have to throw with this?

iBelieve 18 hours ago

It's interesting that they don't mention Kotlin Multiplatform or any sort of shared core logic between their iOS and Android apps. Seems like maybe the apps are fully independent codebases but with shared specifications and tests? They say that agents:

> Dramatically reduced the cost of maintaining parity between platforms through shared specifications, tests, and review checkpoints

I've used Kotlin Multiplatform on a mobile project built back before AI coding took off, and it was super nice to have shared core logic between the apps and there weren't really any downsides on the Android side, but on the iOS side it was definitely an extra layer that didn't feel fully native.

cosmic_cheese 18 hours ago

Speaking personally, JVM toolchain bits like Gradle being involved is a turnoff and has kept me away from KMP. Last I checked support wasn't really there yet, but I'd much rather go the other direction and use Swift Package Manager and the associated toolchain on Android.

tcoff91 16 hours ago

I work on an open source app that uses a shared swift core for the iOS and android apps and I think it's awesome. I think having all your business logic in swift is great.

At work, we use react native, and although the upgrades and stuff are painful, I'd never give up the ability to ship over the air updates.

xcc3641 9 hours ago

Debugging crashes across JS, C++, and native threads costs more than maintaining two codebases.

pzo 19 hours ago

Wish they explained more. Even though I'm mostly native iOS its seems react native is better stack for AI and iteration (hot refresh etc) - the main reason pretty much all AI vibecoding app were implemented via expo/react native.

I also believed that finally this year react native got mature enough with improved tooling and performance to the point that it started to being 'boring' technology.

PKop 10 hours ago

There's a section linking to a more in depth article:

"The Shop app, which is regularly at the top of the list in the shopping category in the app stores, is the first to be migrated. Assisted by AI, the team was able to go from a proof of concept to a fully rebuilt native app published in the app stores in just 12 weeks. We’ve written about this migration in depth here [0].

The migration of the Shopify app (our biggest with 300+ screens, home & lockscreen widgets, Apple Watch app, complications, Siri Shortcuts, etc.), is also underway and will ship later this year. The rest of our apps will be migrated soon."

[0] Migrating Shop app from React Native to native https://shopify.engineering/shop-app-migration

eviks 7 hours ago

Vibe-based architectural changes undoubtedly destined for "extreme" success until the next turn of the churn

lmf4lol 16 hours ago

Yesterday, just before bedtime, I pointed Astra at our Electron Desktop app, and asked it to write me a native Swift app for iOS. The electron app has 750 unit tests and 50 something integration tests. It also had access to the electron app via mcp and could click around and inspect it. I also gave Astra read only access to the backend code.

It worked for 3 hours and delivered a nearly feature complete port. Today, I found in manual testing 3 bugs and 1 performance issue, all of which it fixed afterwards. To fix the performance issue , it made several different builds and profiled them with Xcode.

At around 12:30 I had a full native app port of our product on my iPhone and iPad and could show it to my crew. It even did portrait and landscape correctl!

Needless to say, that I was flabbergasted. On one hand, I love it , I can build now all those cool stuff, but on the other hand, its a complete devaluation of my craft. I kinda tell myself that I was still the one setting up a proper env for it and that not everyone can do it. but thats coping. Freaking coping… and I know it

hollowturtle 12 hours ago

psychosis

lmf4lol 5 hours ago

what? why? Do you say I made this up?

larodi 19 hours ago

Truth is the Shopify app is simple enough to get right by a model. Lots of things hare simpler to get right in native code, so it is to be reiterated - a lot of interpreter code/libs is going down the drain, along with the devs that write it. These are not needed anymore.

And, in all honesty, the difficult part with many projects is the bootstrap, the scaffolding, not the continuous dev. Agentic dev. made this a piece of cake.

aprilthird2021 3 hours ago

This article is about the Shop app (which is a consumer shopping app, kinda like Etsy or Amazon). The Shopify app is a lot more complex actually

aecorredor 19 hours ago

The most interesting part to me here was the whole helix thing + how they split business logic and UI just so AI agents could drive/test state via a CLI. I hope they do a deeper blog post on just that. I’m surprised they are making “decouple state from UI” sound like something groundbreaking when that’s kind of been the foundation for any sane/testable app for a LONG time.

fergie 4 hours ago

In the age of LLMs, I get why you would dump portablity in favour of close-to-the-metal Swift and Javascript codebases. However I don't really understand the need for Kotlin- surely thats just an unnecessary complication and performance hit?

sgt 3 hours ago

That's for the Android version, I would assume

fergie 3 hours ago

Right- but why not let the LLM program directly in Java?

sgt 3 hours ago

m11c 3 hours ago

listenallyall 3 hours ago

Kotlin compiles to the same JVM bytecode that Java itself does. There is no performance hit. And from a developer's perspective, no it is not a "complication", Kotlin is a much more pleasant and efficient language to program in than Java (in my opinion, and that of many others).

harrouet 2 hours ago

The one topic that is almost not addressed in this post is: what happens to the React Native developer team?

Technologies are never the issue. The people is.

socalgal2 9 hours ago

I agree with this but not just React, React-Native. There's many libraries I no longer have a need for. I've made several JS 3d apps just asking the LLM to write the 3D code from scratch. AFAICT they usually shed 2meg of library and run 1.5x to 3x faster as the LLM will do the optimal thing for the situation.

koeliga 19 hours ago

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

follow up with some more technical details and benchmarks

bsaul an hour ago

is there still no way to compile / execute ios apps on a linux machine ?

rietta 19 hours ago

The promise of React Native was easing development burden from the web app to the native app. It makes sense if they are just using coding agents to cut out the framework and just go native.

That was my thought when I saw the headline and then reading the article confirms this is the inflection point per their own words. Very interesting.

vmg12 17 hours ago

React native isn't a terrible idea, its fundamental issue is that Apple does not allow for JIT compilation on iOS. So that means your app's js logic will be an order of magnitude slower than what you would get in the browser.

epolanski 30 minutes ago

> Shopify has been using LLMs to build software since 2021

Odd banter. So did anybody using GitHub copilot which was in technical preview back then?

hn993302 7 hours ago

Yep. First time I "wrote" a native iPhone or Mac app in about 9 years was recently. I've written plenty of C, C++, Rust, etc code but always found Swift and ObjC to be uniquely bad, and Apple's UI frameworks and tooling are terrible. So one way or another wanted it to mostly not be my problem. First that was RN's job, now it's Claude's job.

sombragris 6 hours ago

I'm an user; I have zero or near zero development and programming knowledge, so this take of mine might be complete nonsense.

But I think this is perhaps one of the first AI developments I actually like. Transitioning an app from React Native or any web technology to native code has the distinct advantage that the native version should be much more economical in its use of resources.

I'm tired of hearing about RAM and other components hiking their prices while at the same time RAM sizes of ~8 GB are considered too small because things like Electron apps are wasteful in their consumption of resources. Now, with more native apps, we might get full circle: leaner apps thanks to agentic development. Maybe someday 8 GB of RAM could be considered enough once again. Truly interesting.

simonhamp 6 hours ago

100% with you. I'm fed up of having my M3 36GB run out of memory because I have Chrome, Slack, Discord and Claude all open at the same time

That's why I'm building SuperNative

dools 10 hours ago

I wonder why not Kotlin Multiplatform. I’ve been using LLMs to build with KMP for about 10 months and it’s a delight and you can use native Swift UI when you want to. It seems to be the best of all worlds.

mrr7337 9 hours ago

Not enough community around it. Shopify would have to pioneer a lot more than they would like to get it working for their use case.

willsmith72 10 hours ago

I've been out of the app world for ages, always liked kotlin. Can you speak more about multiplatform?

dools 9 hours ago

Well the thing is that the server code is basically Java, and the only bad thing about Java is writing it but since I don’t have to write it, it’s actually a really solid option. Then you have shared UI (don’t use WASM for web though it’s terrible, I use React for the web frontend) but you can switch to some or all native components when you need to on any platform. So for example I needed native components for secure storage and passkeys and did that by mixing in some swift on iOS and using a JNI native bridge on macOS and Windows.

I created a standardised bootstrap for all our projects here starting from the KMP wizard:

https://bitbucket.org/workingsoftware/kmpbootstrap/src/main/

The reason it the bootstrap has all platforms included is that adding in iOS, android and desktop after you have already created the project is a bit of a hassle compared with just always having the same structure even if you only want to use web.

Then you can easily add on native apps later if you like.

madrox 6 hours ago

I made this argument at my previous company a year ago and was shouted down by most of the mobile engineers. I have since departed, but knowing how much Shopify's engineering blog is worshipped there they will now say this is the future.

w10-1 17 hours ago

Most of the costs of switching have yet to be borne: user issues with untested code, maintenance issues with code few understand, and the strategic dependency on coding LLM's, which will change in character after providers go public and need revenue to fit reasonable stock multiples. All only get worse with time unless they're addressed proactively.

jadar 11 hours ago

I forsook RN years ago. I am not a huge fan of the JavaScript ecosystem in the first place, and the UX of RN apps is not the best. Instead, I adopted Kotlin Multiplatform (shortly after their memory management overhaul). I haven't been disappointed. As coding agents have come along, they are really good at writing both Swift and Kotlin, and I get to write all the business logic once. UI can either be shared with CMP, which is quite good, or platform-specific.

uncle_kostya 18 hours ago

An Android developer since 2010 here.

I've always been wary of React Native, because my impression is that it hides nuances of the underlying framework. You may be fine implementing 90% of your app but then need that last 10% and may get stuck.

But then I'm also wary of the recent trend by Google to create higher level frameworks on top of native Android APIs. It seems that these days for every Android API family, there is a Google framework that gives you a higher level API. I don't really understand it - is Google admitting that the quality of native Android APIs has eroded? Do they think developers are too inexperienced to deal with native Android APIs?

I'm also not sure I understand the how reasonably large companies consider two native apps to be too expensive. A startup may have a hard time funding both and may need to choose, but an established business should consider not only costs but also the better quality of user experience that native apps provide - that has to count for something.

tcoff91 16 hours ago

It's incredibly easy nowadays to drop down to native from react native where you need to.

petegleeson 11 hours ago

Surely the decision comes down to whether they have the expertise to build native apps.

I know JS and I know models still write a lot of garbage JS. I don’t know Swift so a model writing Swift all LTGM. Garbage is still there, I just can’t see it.

The solve isn’t another agentic harness. I need to learn more.

Lots of faster/cheaper justifications. I believe that part. If the quality bar is “web devs prompt models” then that’s a worry.

karmasimida 7 hours ago

I think in the end, we should just be writing some prototyping language, then let AI translate into target/native development language of the said platform.

Code and optimization is going to be a niche moving forward

alanning 7 hours ago

I think the most interesting part of this story is actually the Playwright-style “driver” that they built into their new apps to support faster verification by the agents.

Hopefully they will write more about that in the future.

timzaak 4 hours ago

Maybe cross platform devkits would not be choosed only becauseof development cost.

voidash 6 hours ago

If they play this right, they can do much more than just ecom and move into agentic templates and start selling slack and jira templates

dev_l1x_be 17 hours ago

Native is the new React?! I could never drink the React Native cool aid due to background in performance optimization. Agents gave us the way to go native with less effort. Compilation is a good feedback loop for the agentic workflow as well.

ecshafer 19 hours ago

They don't say anything in the post. But hotwire native supports pushing ui elements to ios and android. I imagine that might be part of the reason. I haven't built anything substantial with hotwire native though so I am not sure on all of the edge cases.

bearjaws 19 hours ago

We made the same change for our patient app last month, took 2 months to rewrite from react-native to two mobile apps, but we had the PoC in under a week.

Interestingly Apple approved it very quickly, which I was afraid of given such a huge rewrite.

ramshanker 7 hours ago

Yea, I have started using c++ for some of the stuffs previously used python for. When agents is doing the grunt work, better to go even closer to machine.

m_sharma 19 hours ago

As things get more complicated and you need to worry about performance, where every millisecond counts, it makes sense to go to native: React Native and Flutter. These kinds of technologies are really good in terms of building faster and building one app which can work across. Where that deep performance might not be of a bigger concern, or you need to go build components natively and then expose them through React Native. I think, with AI, now building even a native app is faster, so moving back to native can make sense if you have a team which can understand how things work.

keithnz 12 hours ago

This is exactly the decision we have made (though we didn't start with native). It just makes a lot more sense to make native apps and customize to take advantage of different native capabilities. AI essentially makes this a lot easier, and the end result just feels a lot nicer.

crossroadsguy 19 hours ago

Few of the biggest reasons for "migration" to the likes of React Native, and web-views et cetera, were "lack of talent", and not getting that talent fast, and for cheap, et cetera, while of course terming that as innovation, embracing the future, and "that's where the game is at" et cetera. Now with the LLMs that is mostly sorted. So if anything I'd be able to see the eradication of the Electron infestation in my lifetime. But then I see the very tools these LLMs are accessed with i.e harnesses (and of course mostly made by the LLM houses) are made of Electron or similar things (sometimes a Frankenstein like mix). And even today Claude Code shows up as `2.x.yyy` for process name ffs! So if anything, this is getting worse.

Then they say:

> We decided to switch from native to React Native in 2020 for three reasons:

> Stop building the same features twice

> Allow developers to work across the stack

> Spend less time chasing feature parity and more time shipping value

Totally!

Is there some kind of shame in just saying:

- we didn't want to hire more people

- we didn't want to pay those salaries

- we fired a lot of engineers with move to react native/hybrid in mind

- we could reuse the frontend devs (aka "full stack" folks) with or without some extra whippings ensuring they grok the bare minimum they'd need to build for mobile and test in on mobile.

Krisso 2 hours ago

I'm still laughing.

nshelia 19 hours ago

The rendering layer and APIs differ significantly between iOS and Android. Agents currently do not know how to test the UI, at least in my experience. I would be scared to do that migration right now.

inopinatus 8 hours ago

Technology historians will pin 2026 as the year frameworks died.

gh0st_hunt3r 7 hours ago

I think its more like 2024/5 is the year that existing frameworks were locked in place. At least it feels like that for react.

React popular -> llms get good at react -> llm generated apps default to react

LelouBil 16 hours ago

There's Kotlin Multiplatform too, you can either have the UI for IOS also done in Kotlin, or just have the logic shared in Kotlin and make the IOS UI in Swift.

muddi900 17 hours ago

It is the "why use python" for mobile.

The native apps will definitely be better in terms of performance and UX. However, having 2 codebases means twice the tokens.

vmg12 17 hours ago

The problem isn't tokens but verification that the code works.

muddi900 17 hours ago

If you have enough of a budget, you can ask your agent to spawn two subagent to do independent audits of "your" work.

vmsp 17 hours ago

I came here to say this. I also prefer fully native apps but this is the elephant in the room. If most of your web code can be re-used on native, that's a ton of tokens you won't have to pay for.

nielsbot 19 hours ago

When companies can afford to build a native app but instead use a WOSE (write once suck everywhere) toolkit, it’s because they don’t care about the user experience.

tzone 18 hours ago

With latest AI models, we will most likely see shift back to just fully Native apps even for smaller teams. This is type of stuff that AI models do really well, if you get a particular feature or even a bigger app change done in one platform, you can just tell Opus or Fable to replicate to the other platforms and in almost all cases it will just do it as well as most human teams would have done it.

trencedamp 16 hours ago

In my limited experience, in h2 this year, LLMs were kind of shit at building Mobile apps. I had to switch TO react native because the flutter app it built me was a horrible buggy mess and I couldn't debug it myself because I don't speak dart. At least with react native I can kind of get in the weeds if needed

iamgopal 19 hours ago

when you are large enough to allocate sufficient resource, you should go native, if not, go flutter/react native etc. Its very simple decisions I guess.

SV_BubbleTime 16 hours ago

Which is why the topic about what Shopify does should apply to absolutely almost no one.

Who has more people/resources to justifiably throw at their native app than Shopify? Maybe a dozen companies?

faangguyindia 19 hours ago

React Native is slow.

Hermes VM doesn't even have JIT.

If the majority of your app is native code and only a few places are stitched together via JS code that runs in the Hermes VM, then React Native is suitable for you.

Look at V8 vs. Hermes performance.

We use Flutter; we rarely need to write native code. We have three apps: Symbiote workout app, CalorieCodex, an AI calorie tracker app, and MacroCodex with 17,000+ users, all of them completely free

hermitwriter 18 hours ago

Your data is out of date. React Native performs within spitting distance of raw native now because in the last 2 years... it basically became native - it's now false dichotomy

faangguyindia 9 hours ago

I tried it about 2 months ago, btw. No prior experience with Flutter or RN.

flakiness 17 hours ago

mind sharing a link or two on the native code generation bit? I'm far behind from the scene but still curious.

cyberax 16 hours ago

cyberax 16 hours ago

It's not. RN has always used native widgets (with a custom renderer) but the JS code itself is purely interpreted.

They increased the interpreter performance by quite a bit, but JITs are impossible on iOS, so it can never be fast.

We have a RN app that needs to do a lot of geometry processing and things like polyclip are unbearably slow, so we had to add native modules to accelerate them. The web version with a true JIT works just fine.

parentheses 18 hours ago

The underlying problem is that it's difficult to make a principled decision. So, it's ripe for SEO mining and such fuzzy takes happen.

The meta point of the article, I agree with though. The line is moving and AI makes having multiple platforms with code specific to them faster. Getting them right is still difficult.

jnwatson 17 hours ago

In the history books, this'll be the post indicating the end of writing code as a professional occupation.

trynotsober 16 hours ago

The shared specs and tests seem like a big part of making this work. I'd be interested in a follow-up after a few months of shipping new features on both platforms. Does keeping behaviour consistent still take much coordination, or have the agents reduced that work too?

ergocoder 18 hours ago

A companies with thousands of engineers should simply go native.

Write once, deploy everywhere like React Native mainly benefits small teams and startups who are okay with building 90/10 solutions.

At the shopify's scale, they would want to go advance for every corner of the apps and use cases, and only native allows that.

SwellJoe 17 hours ago

Even a single person can now build/maintain native apps. It's literally a day of effort for an experienced dev working with the best current models to port an app to a new native platform. Maybe another day or two to walk through wiring up all the test harnesses needed to prove the app is working well without a human having to click everything. Until recently you'd still have to spend a bunch of time on making sure the UI looked and felt right, but models now have good enough vision capabilities to where even that can mostly be automated.

And, honestly, the cost of tracking React over time has always been higher than the cost of tracking native deployment options, which move more slowly and usually with more care than React, where breaking backward compatibility is just another Tuesday. I don't think the promise of React Native being an almost-free "native" app actually pans out in reality. I've never maintained a large React Native app, but from following some apps that are, it seems like it introduces a sizable amount of technical debt that you pay over time. So, in exchange for worse software you also get worse maintenance costs.

fhub 11 hours ago

I had one feature in RN and the rest properly native. The day I realized agents were good, I ported that RN to native. Monkey-off-back moment.

polloRebozado 18 hours ago

I have not coded any mobile apps, I understand the downsides of using react native/electron due to them being web apps but what about things like Kotlin multi platform or flutter? Aren't this frameworks supposed to allow your to have 1 codebase and the apps be truly native instead of web apps?

zelphirkalt 17 hours ago

I think any framework that aims to support desktop and mobile frome the same code per view/screen is doomed to either make one of those two awkward to use, or alternatively become itself very complex to use.

The most advanced in this area may well be websites and into those decades of work of thousands of engineers went (HTML, CSS and JS standards).

wilsonnb3 18 hours ago

React Native apps are not webview based like Electron, they use native components. Arguably it is more native than flutter, which uses its own components designed to mirror native ones on Android and iOS.

aurareturn 19 hours ago

How long until LLMs just write machine code?

_flux an hour ago

Probably a long time, as machine code is verbose and thus destroys the context both when reading and writing, as well as making it more expensive.

MattDamonSpace 18 hours ago

Direct 1s and 0s

synergy20 17 hours ago

wow, what about electron.js the bloated cross-desktop GUI, can LLM either totally modernize wxWidgets(to avoid Qt's license mess), or create some light-weight cross platform GUI widgets to make GUI easy on windows/macos/linux that is not resource heavy?

simonhamp 7 hours ago

Working on this problem for the next version of NativePHP Desktop. Have dropped Electron entirely

mike_ivanov 16 hours ago

wxWidgets carries too much legacy. A GTK3 fork maybe? Or a functional clone of QML with some improvements.

synergy20 15 hours ago

maybe gtk4 gui first then ask llm to recreate them natively on windows and macos

mike_ivanov 12 hours ago

amedvednikov 5 hours ago

bilater 17 hours ago

This is obvious in hindsight. I expect most companies that move fast and care about performance to abandon React Native. Code is cheap now, and the tradeoff of having a single codebase and only hiring React devs basically isn't there anymore.

giebisch 20 hours ago

Their reasoning makes sense. I'd love to read a follow-up and their thoughts in half a year.

StrLght 19 hours ago

If you expect a story about how this migration to native went from technical PoV, they've already shared this: https://shopify.engineering/shop-app-migration

It sounds pretty solid, so I wouldn't expect anything to change in just 6 months.

rramon 18 hours ago

Missing out on flawless App Intents integration could be business risk for Shopify once people get used to doing everything from a central chat interface, including shopping. I guess it's the real reason for the switch.

gargs 18 hours ago

What I want to know is if the agents are so good that they can convert React Native code to native with amazing efficiencies along the way, what's stopping them from improving React Native itself?

bakugo 18 hours ago

Translating code from one language/framework to another is easy for AI to do, as it does not involve solving any novel problems. Making improvements to existing complex codebases is much harder.

running101 19 hours ago

I suspected we would start seeing these types of blog posts. Code is becoming low level, where people do not care what language, it is written in anymore. The cost of moving from one to another is becoming low.

cdnsteve 12 hours ago

I've been out of FE dev from awhile, is React still leading? I feel like Vue might be taking over?

mplewis 12 hours ago

React is still king.

seydor 4 hours ago

Hey what about Flutter

robofanatic 18 hours ago

this motivates me to rewrite my Flutter app in Swift. I gave up on deploying the app to Android because of their 20 testers requirement at that time (not sure if its still true).

simonhamp 17 hours ago

As the builder of a post-AI, cross-platform native app building framework like React Native, I 100% believe this to be a backwards move.

I've written up a load of thoughts about that here[1], but in summary for the Shopify case, they're basically going to be spending a ton more than they have to by switching back to multiple apps and I'd predict another swing back to better cross-platform tooling in the coming years.

[1]: https://nativephp.com/blog/why-not-write-it-twice

IshKebab 16 hours ago

> they're basically going to be spending a ton more than they have to by switching back to multiple apps

A ton more what? Money? AI costs are insignificant to a company like Spotify. Hell I've been using Astra fairly extensively at work and I've only racked up like $500 in the last month. Peanuts.

simonhamp 16 hours ago

More code means more people. That's not peanuts

IshKebab 14 hours ago

quotemstr 20 hours ago

The wheel of fashion turns once more.

jmknoll 19 hours ago

I don't think its purely fashion here. React Native always incurred a bit of a performance & UX penalty, but many people decided that this tradeoff was worth it for the increase in product development velocity.

LLMs change the tradeoff and organizations would be remiss to not reconsider previous decisions.

nacozarina 19 hours ago

got me spinning like a record baby

hermitwriter 19 hours ago

srsly

tower-shield 17 hours ago

Finally some common sense. Time to put electron to rest.

1saadcodes 19 hours ago

What I find interesting is how AI has changed the cost of maintaining two native apps enough that a decision that made no sense a few years ago is worth revisiting now

timedude 18 hours ago

This is what happens when you have too much cash on hand. You start wasting it and doing dumb things. Like rewriting entire apps in two different languages.

evilfred 20 hours ago

using React Native you end up having to drop into native code to do anything interesting or optimized, so it feels kind of pointless to not just use the platforms directly

bluecheese452 19 hours ago

Most apps don’t do anything interesting.

randysalami 20 hours ago

“We debated between gradually migrating to native (brownfield) versus rebuilding them from scratch (greenfield)… However, this time greenfield emerged as a clear winner for the following reasons”

“To solve this problem, we built a system called Helix that takes a more gradual approach. It doesn't expect the first output to be correct, and builds a loop where an imperfect attempt simply cannot move forward until it becomes a good result.”

If this is driven by proper engineering then hats off! Supposedly a simpler app has already been migrated and they are working on migrating the main app using this approach. I don’t even know how I can be a cynic here… because the technology is good enough and so are the engineers I don’t know how management or executives could ruin it.

“…product quality people expect today. This isn’t just the same apps rewritten in different languages. We’re rebuilding them so both humans and agents can understand, test, and change them quickly.”

If this was written using AI and human-edited, you missed a spot.

projektfu 19 hours ago

There's also "Helix rebuilding a screen in the Shopify mobile app using Swift and Kotlin" which sounds like a caption but there is no video or image.

codechicago277 19 hours ago

Getting 11% AI on Pangram, which isn’t bad tbh.

basepurpose 19 hours ago

if native became easier to tackle with coding agents, react native would have been even more easier to scale. this decision doesn't sit well with me.

perarneng 4 hours ago

Why not flutter?

thisismyopinion 17 hours ago

Would be nice if Spotify and Notion did the same.

vladkens 12 hours ago

Lol, they bought Tailwind CSS, freaked out, and decided not to touch it at all.

AJRF 17 hours ago

Most large tech companies are just job programmes, i've seen so much effort, time, cost go into things that are truly unimportant.

React Native gives you (with asterisks) - one "source" for things to go wrong (as it sits on top of the native implementations of the UI + Native APIs). You are writing at that source level, and that filters down to the native builds. I am WELL aware to do certain things on each platform you need to get your hands dirty, but most apps are just serialising JSON from a database and displaying it.

AI writes very buggy, sloppy code.

They've decided - instead of containing that code to 1 surface, they would now have 2 surfaces they throw slop on top of.

I look forward to the 2027 version of this where they've gone back

tcoff91 16 hours ago

And on top of that, they're losing the ability to ship hotfixes over the air and will always be at the mercy of apple & google to deliver their updates.

BatchJob 13 hours ago

This article makes more sense if you remove the self congratulatory verbiage from it, and the cost rationale which I believe is zero.

Most orgs used REACT native becuase they simply didnt have the interest or talent to build mobile apps using native tech. Many many companies outsource the entire thing for the same reason.

So NOW that its been many years, and LLMs are there to help them they arent simply AFRAID to build a native mobile app anymore.

Thats the entire article. The rest is utter nonsense and bullshit.

weightedreply 18 hours ago

Isn't it silly that this even needs to be a conversation? Shouldn't we be able to write in any language we want and have the bindings for it to work cross platform? And shouldn't AI aid in building those cross-platform tools?

Maybe React Native isn't the right choice - but two tech stacks for virtually identical interfaces is dumb. Three stacks if you include browsers.

gardenhedge 4 hours ago

Shopify always comes up but I do t know much about it. Do I interact with Shopify sites without knowing they are Shopify?

hollowturtle 13 hours ago

Does that mean no more react native skia sponsoring?

jan_m_savage 9 hours ago

The move to native makes sense.

Also, human developers and AI make different types of mistakes, and take different approaches to debugging. I'm not saying they shouldn't have done that, it's just that a more human-involved approach with AI filling the gaps would probably be a saner bet than 90% AI with some human interference.

Here's an example of why:

https://blog.coredump.cx/p/recursion-into-madness

busymom0 8 hours ago

I develop iOS and Android apps and all the apps I have in App/Play Store are native. I did try React Native a few years ago but I just didn’t like how much extra bloat I had to include as third party dependencies.

Plus now with iPhone Duo which has so much variation in layout, I don’t think React Native would work well for it.

m3kw9 17 hours ago

They are admitting React was a shtty choice for a mobile app if they have a choice.

SV_BubbleTime 16 hours ago

I think what they’re actually admitting is if they have more resources to throw at native.

This is non-starter math for small companies.

mt_ 18 hours ago

The article failed to provide reasons on they why move back to native.

mt_ 17 hours ago

Other than LLMs can do it tokenmaxxing exercise.

kashnote 8 hours ago

I mean it sounds nice but they never say _why_. "AI removes a lot of the burden" is not a _why_. I was hoping to read about some of the shortcomings of React Native, but it seems like they're doing it just because they can. I remember Airbnb had a post about switching off of React Native years ago that actually had some solid reasoning behind it.

SenHeng 8 hours ago

https://medium.com/airbnb-engineering/sunsetting-react-nativ...

Article is too long to summarise but basically they outgrew it tech- and org-wise.

WhereIsTheTruth 18 hours ago

If you build with electron in the age of LLMs, you should change career

BringItBack 18 hours ago

Makes sense in the LLM age.

With cheap/fast code, it's easy to support multiple software stacks since most of the abstract engineering problems are already solved.

Code - especially straightforward low-level code - is so cheap and easy to write now that some people are building their own version control systems, game engines, and other low-level tooling.

Thus, some of the most demanding, human-centric work in software dev right now - where we now spend more time than coding - is in technical PM, UI/UX, devops, and overall architecture. The decision-making and design aspects of the job.

Exciting times.

manlymuppet 17 hours ago

This is probably one of the things that excites me most about AI.

Companies can now just afford to maintain a hundred different native apps, rather than settle for a write once, run anywhere approach.

psadri 19 hours ago

Thanks to coding agents, there is no reason not to

j45 13 hours ago

Its interesting that the move is back to native and not towards a technology better suited to delivering the same experience on multiple devices from one codebase.

starlineventure 20 hours ago

Native. Metal. Remove the abatraction layers

simonhamp 7 hours ago

We're only where we are in the world of computing because of abstraction layers

It's not the layers that are the problem; they're the point.

It's the quality of those layers. React is just a poor abstraction layer

yusufnb 18 hours ago

Web based mobile made sense pre AI. It is just simpler now to use different languages and have AI implement features across the board.

BatchJob 19 hours ago

im not a fan of react native per se , but this reasoning does not add up.

they are going to "delete an app" because they got some LLM to slop out 2 apps?

The architect who wrote that is batshit and will be unemployed after this blows up in his face.

snknew 7 hours ago

May be a good decision.

ICHx 12 hours ago

While Meta's Whatsapp just dropped native Windows client for Electron

Lack of vision?

seabrookmx 5 hours ago

Lack of a sane desktop app framework from Microsoft.

Heck Microsoft wrote their own damn start menu in React native, and VS Code in Electron.

moomoo11 16 hours ago

i think many ppl don't understand this news

IMHO...

if you have a large org, a large app, lots of revenue and $$$ and resources...

it makes sense to do fully native now.

if you're a startup, you don't have the resources and $$$, you stick to RN

you can obviously have AI maintain both, but that is a cost. double maintenance = more $$$ on tokens

so many people are being doomer about this, but most people are also not Shopify

Hamuko 17 hours ago

I'm certain that small startup Shopify could not afford to build native applications before AI became a thing. Thank god Sam Altman stole all the information in the world so that small family companies like this can finally have software too.

xyst 18 hours ago

Can’t wait for the blog post mentioning move back to react native or other cross platform framework.

tonymet 18 hours ago

Let’s see their app size (and heap)

philipwhiuk 19 hours ago

I guess expect no new features on mobile until their token budget gets through all the screens?

ex-aws-dude 19 hours ago

I don’t understand why building an app twice is a big deal in the first place if that’s a core part of your business

Like wouldn’t you want to invest in platform specific expertise long term?

It’s not like this is a small company or it’s just a dinky side project off of the main business

MaoSYJ 19 hours ago

Who could have guessed it!

kraig911 20 hours ago

A side effect of perceived LLM Generated code is now easier to just make it write native I guess.

Quarrelsome 10 hours ago

oh fuck my life, we're back to this circa 2000 default of having incompatible binary UIs frameworks across various different platforms, with different OEMs shitting the bed at various different times and Apple free to arbitrarily force its hardware and OS into CI. I felt we were so close to unification in 2011.

And that's not even discussing the heresy of app stores. Curse smartphones for ever happening.

976157424477 20 hours ago

… from React “Native”

gazarsgo 20 hours ago

Cool story but what's the token spend?

shawabawa3 18 hours ago

"native" shouldn't be capitalized in the title

madduci 17 hours ago

The article itself comes from AI ? It says twice why they switched from Native to React Native in two distinct paragraphs at the beginning. The rest sounds also AI slop jargon.

AtNightWeCode 17 hours ago

Why on earth is Shopify not just a web wrapped in an app like most apps? I mean, they implement most of that stuff for the desktop anyway.

simonhamp 6 hours ago

Seems like you've never had to worry about accessibility in hybrid apps...

AtNightWeCode 27 minutes ago

We booted react native like 10 years ago and there is not much a web does not solve. We even did solve it for the desktop users anyway even before. A simple app as Shopify with mostly static content should not be any problem to build as a web.

CodingJeebus 17 hours ago

There's quite a bit of research out there showing that application performance has a material impact on checkout conversion rate, so a single platform optimization potentially improves checkout for millions(?) of storefronts.

AtNightWeCode 15 hours ago

Google research from a decade ago that might as well been that their bot did not want to wait for pages to load. The performance difference between React native and a web wrapped in an app is pretty much zero today.

philipwhiuk 19 hours ago

> It doesn't expect the first output to be correct, and builds a loop where an imperfect attempt simply cannot move forward until it becomes a good result.

So... local maxima?

yieldcrv 19 hours ago

Perfect, yeah the obvious answer and comment is in the subtitle right at the top. Good way to write an article

> Coding agents changed what it costs to build mobile apps twice. Here’s why Shopify is moving from React Native back to Swift and Kotlin.

sergiotapia 20 hours ago

Major loss for react native community at large with Skia and Flashlist dying. :(

gagabity 19 hours ago

Legend List is the new hotness in RN.

rvz 19 hours ago

Agreed, the whole of the Javascript / TypeScript ecosystem has caused a slop hellscape of workarounds, half-backed fixes and have exposed short-comings in the ecosystem.

Perhaps these languages do not work well as they are not designed to run efficiently on mobile devices. Now that we have libraries such as SwiftUI and Jetpack Compose, React Native no longer makes sense to use.

Now we should also move away from Electron to better alternatives such as Kotlin Multi-Platform or fully native libraries on each platform; because of LLMs.

hermitwriter 18 hours ago

So disagree. The benefits you get from leveraging a framework as as important today as they have ever been -- strong frameworks, fewer tokens, faster progress.

simonhamp 6 hours ago

Hallelujah!

One other person in this place gets it: "fewer tokens, faster progress"

Electron, Tauri, React Native/Expo, Flutter (and countless others) are the wrong kind of abstractions, built for a time pre-AI, solving pre-AI problems

We need a new post-AI abstraction that embraces this opportunity!

That's why we're building SuperNative

jgwil2 17 hours ago

I wish more companies would just focus on webapps. It's infuriating how many services try to push an app on you when it's completely unnecessary. The other day I went to a restaurant that had an app. Not a fast food chain, a nice full-service place. No, I'm not going to download an app to order dinner.

railka 19 hours ago

IMHO, now is a great time to use native Swift/Kotlin code alongside shared Rust code via UniFFI

massel 19 hours ago

We've been doing this for a while and it works great. Logic and network stuff goes in Rust, UI goes in Swift/Kotlin.

rvz 19 hours ago

So you want to review and maintain code in 3 separate languages?

Sounds like a complete waste of tokens with the worst case of just quickly building more technical debt, three times.

massel 19 hours ago

It's a lot nicer than having the same logic in 2 languages and trying to keep them in sync – whether doing it by hand or with an LLM.

One of the big rules is don't repeat yourself – much of the logic only needs to be written once (except UI)

doc_ick 19 hours ago

mike_hearn 18 hours ago

rvz 19 hours ago

jeffrallen 18 hours ago

Too late. My kids called the app Stop-ify because it was so unreliable. Switched to Apple music and won't go back. On Android!

SV_BubbleTime 16 hours ago

I think you’re confusing Shopify and Spotify.

krttherealest 18 hours ago

this AI stuff is goin crazy

gadflyinyoureye 18 hours ago

Out of curiosity why not look at Flutter? I know you don't get native look-and-feel, but most apps are branded who cares?

simonhamp 6 hours ago

> you don't get native look-and-feel

You answered your own question

hermitwriter 20 hours ago

I've been around long enough to see this argument come and go under a lot of different names. This time it's AI. Maybe AI really does change the economics. But this post doesn't demonstrate it.

Talk to me in a year.

The side-by-side comparisons? Whoopty do. It's different code. Of course agents can produce two implementations that look the same today. That's not the hard part.

The hard part is keeping them the same.

Feature parity isn't an implementation cost. It's a divergence cost. It accrues over years across experiments, analytics, accessibility, edge cases, bug fixes, platform behavior, and a thousand little decisions which current agents aren't great at tracking.

Agents can write code fast but they aren't a panacea.

The load-bearing sentence in the whole post is this:

"Shared specifications, tests, and review checkpoints dramatically reduced the cost of maintaining parity."

Okay. For how long? By how much? Got any numbers to share? How will these hold up under contact with customer?

You haven't maintained parity yet. You've built prototypes. You're making a claim about a cost that compounds over time based on what it costs at t=0.

The other thing missing is the counterfactual. They keep comparing this rewrite to what a rewrite would have cost before coding agents. But what if you point those same agents at the existing RN codebase?

If agents make software development cheaper, they make RN development cheaper too. And now you're modifying one implementation instead of generating, testing, reviewing, and reconciling two.

The tooling section makes this even stranger. They find that agents are bad at driving simulators, so they pull business logic out of the UI, make it runnable headlessly, and expose a CLI.

That's a good idea! Do that!

But that's an architecture change, not an argument for native. You can make an RN codebase agent-friendly without rewriting five apps.

Then you get to "Preventing slop," which is probably the most important section in the post. Just pointing an LLM at the codebase doesn't work. They had to build Helix, with ordered checkpoints, test proofs, visual diffing, adversarial reviewers, and human gates.

So what they've actually demonstrated is that Shopify has enough engineering resources and agent infrastructure to make maintaining two codebases look economically plausible.

Maybe it is! For Shopify.

That's a much narrower claim than "AI changes the economics of cross-platform development."

And where are the numbers?

For a post about reevaluating costs from first principles, there's remarkably little cost data. Engineer hours? Review time? Defect rates? Parity failures? Agent spend? Ongoing maintenance? Anything?

They even say RN performance isn't the problem. "React Native apps can be fast. Ours are."

So there's no product crisis here. No performance crisis. There's an internal cost argument, with no numbers, being used to justify rewriting five apps used by millions of merchants.

And in isolation I'd probably just shrug and say: Shopify made a bet. Let's see how it goes.

But it's harder to view it entirely in isolation when they brought Tailwind on yesterday too.

Shopify used to be one of the great stewards of the broader ecosystem. What worries me about the recent direction isn't any single technology choice. It's the appearance that, following the recent tech leadership changes, we're starting to see decisions driven more by the preferences of the people now making them than by demonstrated technical merit.

Maybe that's an unfair read. I hope it is. But posts like this don't help, because if you're going to make a sweeping technical argument for a major change, show the evidence.

The part I actually find convincing is much less exciting: Shopify is tired of paying the upstream tax. They've spent years working on RN performance, improving the framework, dealing with dependencies and upgrades, etc.

Fair enough. That's a real cost. Being an RN framework developer or dependent is -- or has been -- awful -- it's like trying to fly a kite in a hurricane. The web team has been super disciplined and also ridiculously slow. The RN team changes apis in .. questionable ways with regards to compatibility

But it's not new, and it has very little to do with LLMs.

And let's not get me started on taking this kind of dependency for your business on companies who still don't have any idea how much to charge for their tools and are all operating (on a per token basis) at a loss. They're swapping some framework dependency for dependency on coding models whose capability, pricing, and terms they don't control.

None of this means they're making the wrong decision. Maybe they're right. Maybe in three years this looks obvious.

But that's exactly the point.

Come back in a year and show me parity bugs, engineering hours per feature, experiment drift, accessibility regressions, review burden, model spend, and how much human work it takes to keep the implementations aligned.

Right now they've shown that AI makes rewrites cheaper.

Whoopty do.

doc_ick 19 hours ago

100%

firemelt 16 hours ago

expected

shevy-java 15 hours ago

That also means that ruby becomes less important in their (rails) stack since they move to Swift and Kotlin specifically. Quite interesting considering problem-man DHH ("why are people upset at me shooting at wolves and comparing this it to Roma and Sinti" - and even aside from the connection on his blog to humans, I don't think everyone agrees at gunning down wolves in the first place) is part of the Shopify bromance team.

In hindsight that also explains why they laid off so many ruby devs in the last two years. Now if only someone could have told the ruby core team that companies pursue their own interests ... perhaps then they would not have led to the fiasco about a year or so ago. (And prior to that, the silly 100k downloads restriction at rubygems, aka "after that point we no longer allow you to remove your own code", whereas Microsoft github has no such restrictions in place. What are these people smoking?)

KPGv2 9 hours ago

"Native is now the future of mobile at Shopify" is a rather unfortunate title for a writeup of why you're leaving a product with "Native" in the name.

yes1would 12 hours ago

Reminder that Shopify's CEO and COO are both literally Nazis and they host websites for literal Nazis.

profdevloper 10 hours ago

What, exactly, is a "literal Nazi" -- I think Tobi is German, but he seems more like a capitalist than a national socialist. /shrug

yes1would 4 hours ago

https://drewdevault.com/weird-guys/#lutke

Literally a Nazi. His best friend and the COO is the founder of the Canadian equivalent of Breitbart, and also, they hosted the store for Breitbart...

theycallmeritik 19 hours ago

Good one

romanovcode 18 hours ago

It's not surprising. Code is cheap nowadays because of AI. I reckon more companies will follow suit.

roshanabdullah1 19 hours ago

the reason what I believe is that, AI can understand react very well. so It can be beneficial for Shopify

hermitwriter 18 hours ago

100%