Top
Best
New

Posted by fnthawar2 19 hours ago

Shopify is moving from React Native back to Swift and Kotlin(shopify.engineering)
1074 points | 746 comments
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 3 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 14 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 7 minutes ago||
Tja, besides LLMs I can't really see the major improvement todays IDEs and language combination brings over Eclipse+Java. Great docs, good autocomplete, good compiler feedback.
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 1 hour ago|||
The original Edge had to switch over to Chromium because it was hard to build a compliant accessible browser from scratch and this is Microsoft we are talking about.
necovek 1 hour ago|||
> ...this is Microsoft we are talking about.

Exactly!

More seriously, it not just about building a compliant web browser engine, it is about tracking the dominant browser engine which introduces their own "standards" along the way too.

Microsoft could have easily continued to invest in maintaining their browser engine, but it would have to be comparable to what Google is doing, and yet they'd always be perceived as "behind" due to non-dominant position they have.

I'd say strategically they do not want to invest in tech that's not winning (in marketshare), so when they are not dominant, they'll instead adopt and extend (not just web browsers, look at WSL too).

stephenr 32 minutes ago||||
https://news.ycombinator.com/item?id=18697824

> one of the reasons we decided to end EdgeHTML was because Google kept making changes to its sites that broke other browsers, and we couldn't keep up

PunchyHamster 44 minutes ago|||
The didn't had to, MS Browser team was incompetent from the beginning of internet
sgammon 1 hour ago||||
We live in a time now where libraries are free and plentiful and pretty good. It is easy to forget that this was not the case for the vast majority of time that computers have existed.

Chrome’s original design definitely predates our current rich ecosystem. Plus, V8 and Chrome’s performance profile are demanding enough that there would be a pretty high bar for those dependencies anyway.

lynx97 1 hour ago|||
This is plain wrong. For a browser, a11y doesn't just get handled by the OS automatically. In general, claiming a11y is easy or will be done by someone else is bordering on evil.
whstl 1 hour ago||
[dead]
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|||
Spotify, the comment I replied to drew a comparison from Shopify to Spotify.

I think I’ll start a company called Shpoptify.

yehoshuapw 34 minutes ago|||
Shoplifty
bogeholm 2 hours ago|||
I’ll subscribe to your Sphoophtify service immediately
psychoslave 1 hour ago||
Can’t wait for Sphpoophteefy+ premium subscription to be released!
aetch 5 hours ago||||
Probably both
leoedin 3 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 1 hour 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 42 minutes ago||
That and venture investment has become bane of good.

When a company can run for years, hell, decade+ on the red thanks to investments, that means every competitor now have to compete with company that sells their goods or services below production value. It just kills competition and innovation, which only becomes possible if other company also attracts investors

mentalgear 1 hour 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_ 1 hour 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 1 hour ago||||
15 years of extremely well paid engineers and yet we still cannot delete a track from Recently Listened. ಠ _ ಠ
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 1 hour ago||
Such book could be distilled in simple essence:

- stay out of it for your sanity

- sell your soul, organically adapt by looking at those who make it to the top fast

m10ax 5 hours ago||||
The mythical man-month ;)
knocte 5 hours ago|||
[flagged]
jpk 5 hours ago|||
The first comment in this thread drew a comparison between Spotify and Shopify. Perhaps you were skimming and missed it.
stingraycharles 5 hours ago||||
I don’t think that AI would have made this confusion (it’s much less likely to overlook things like these), and I’m also not of the opinion that these comments confuse the two companies, it’s rather than Spotify is used by the grandparent as another example like Shopify.
knocte 5 hours ago||
Actually, the first occurrence might have just been a typo (auto-correct?), but the second occurrence looks like slop directed at the previous comment.
pjerem 5 hours ago||
Actually, the IAs don’t mess up Shopify with Spotify.
sashank_1509 5 hours ago||||
>> This is unfortunately not an isolated issue, Spotify for one has the same issue.

I just brought up Spotify since I have more experience using their app and they have also gone fully into “agents have made us 100X more productive”

mitxela 4 hours ago||||
AI can do captchas better than humans can
anon48293 5 hours ago||||
They don’t confuse them, he says both have the same issue.

Perhaps you are the AI slop?

seaal 5 hours ago||
Seriously, it’s funny how confident people can be about something despite their awful reading comprehension.
golly_ned 5 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 5 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 4 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 3 hours ago||
I can’t tell if we’re trolling at this point with the mixing up of Shopify and Spotify
rtpg 5 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 4 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 1 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 3 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 1 hour 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 1 hour ago|||
The website, desktop app, and mobile apps all have different feature sets, for one. There are things that you can only do in one of them, but it is a different one of them for each thing. There is no one feature set. It feels so cobbled together, with each platform doing their own thing.

Also, the website is slow and buggy, and the Electron “desktop” app is even worse. Both gobble up way too many resources and soft-crash constantly. The app does not lock up, but simply stops working. Often it even shows an error like “Spotify cannot play this song right now.”.

coredev_ 8 minutes ago|||
It's cool to hate on Spotify now I guess. But I agree with you, Spotify works really well for me.
fallingbananna 2 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||
I'm guessing that maybe 4 of them maintain that in their "20% time", while the 99,996 other engineers are:

"The best minds of my generation are thinking about how to make people click ads." -Jeff Hammerbacher

psychoslave 1 hour 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 4 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 1 hour 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 1 hour ago||
It's externally mandated difficulties vs internally created ones. I think the latter should always be easier, because you can change the requirements.
rhdunn 3 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 16 minutes ago|||
When you see seemingly simple products have too many engineers, most are almost always there to cater for enterprise customers.
austin-cheney 5 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 4 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 1 hour ago||
If you are selling the code as the product, it could be said to be an “actual” software product, rather than a mechanism for selling other products, or software as a substrate for some other business.

Those other businesses aren’t any less valid, of course. They just aren’t software businesses. They are businesses that (quite sensibly) use software.

UK-Al05 55 minutes ago||
Shopify is literally selling software.
sidcool 5 hours ago|||
Comments like these make me wonder if people don't understand the difference between engineering and business.
InterviewFrog 5 hours ago|||
That’s what they said about Elon firing 80% of Twitter’s staff. But X is doing pretty well.
mitxela 4 hours ago|||
For some definition of pretty well which doesn't include human user numbers, revenue, profit, or ratio of humans to bots
hn993302 4 hours ago||
Pretty well from an engineering perspective. But they've lost so many advertisers because it's intentionally not very moderated.
TuringTest 1 hour ago|||
Pretty well if you don't mind some features being built twice or three times and appearing inconsistently at different screens, or users being able to bypass usage limits by pressing the back button on the usage limit sign...
mitxela 3 hours ago|||
The site is currently running, yes. Don't forget it went down quite often immediately following the mass firing though. They seem to have fixed that.

There was certainly a ton of bloat to trim, but the haphazard "just pick 80% of the people and fire them" was incredibly stupid. Should have chosen whoever was producing the bloat, at least.

Twisell 5 hours ago||||
Twitter was never a profitable business. You actually renforce his point.

(Maybe that was intended I might have missed some irony here)

gib444 3 hours ago|||
I'd be shocked if a ton of contractors haven't worked for X since then
moomoo11 5 hours ago|||
most people don’t. that’s why they are employees.
mitxela 4 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 5 hours ago|||
I wonder how many of those are there to consult with customers and help them build their stores.
pjmlp 2 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 2 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 52 minutes ago|||
Tidal is pretty nice to use. Plus the music isn't compressed.
PunchyHamster 45 minutes 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 3 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 5 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 18 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 16 hours ago|||
I work as a professional app developer. And I find this take to be naive.

Most of the time when I review code from AI, there is always something to improve.

It’s either a maintenance issue. e.g., Opus recommended and implemented a fix for a database corruption crash. This was ~400 lines of code with many moving parts. I reviewed, and found out Android Room library already handles this recovery case, and all I needed was a 10 liner PR that catches this exception and ignores it.

The maintenance is not only the burden on the human and LLM. With too many moving parts, it becomes harder and harder to build and verify the correctness of future features. Yes you can write test for this and that, but it didn’t need to exist in the first place.

The second problem is correctness issues. Especially the edge cases. You cannot just manually test out a race condition on a phone! Sometimes it happens! Sometimes it doesn’t! If it leads to a visible signal like a crash, then yes, you can try to reproduce it. But there are a lot of these that are “silent” and would just lead to bad experiences.

We already had a software quality crisis! And I think such views only exacerbate the situation! Quality matters!

And this is not an anti-AI stance. I vibe code personal projects where I don’t even look at the code. But when I use AI as a professional engineer, I act like a professional. Because these products do have an impact on people’s lives.

dboreham 16 hours ago||||
All true (and thanks for posting a concrete example rather than "LLMS suck"). But my take is that none of this is much different than before times when I had teams of developers creating applications. They would often make similar mistakes which I would either need to catch or which would flush out in the field. Where it seems that LLMs are not excellent is where the person driving it is also the senior domain expert so can immediately spot pitfalls. But typically using humans to develop software this was really not often the case. Those people get promoted so they're no longer cutting the code. Under that scenario (replacing subordinate humans) I find the current models are either on-par or somewhat better (specifically because the models can also act like a peer senior dev, discussing approach options etc).
elvis10ten 15 hours ago||
I agree with you! And I’m not trying to romanticize the past! Humans/me wrote slop too.

I think we are over-indexing on speed of delivery. I think this is a mistake. The alpha is in speed and quality.

Currently, my experience is that human + AI can write software faster and with better quality than either party can do alone.

alex_sf 6 hours ago||||
> It’s either a maintenance issue. e.g., Opus recommended and implemented a fix for a database corruption crash. This was ~400 lines of code with many moving parts. I reviewed, and found out Android Room library already handles this recovery case, and all I needed was a 10 liner PR that catches this exception and ignores it.

I understand this, but I just can't bring myself to care. I've been doing professional software work for almost two decades. These sorts of improvements/time savers are great without AI. With AI? Whatever. It's fine.

When the underlying lib has an issue, it'll be quicker to debug with the whole thing in context.

SoftTalker 6 hours ago||
So exactly what value are you adding, then?
alex_sf 5 hours ago||
I take the specifications from the customer and type them into the AI
eptcyka 4 hours ago||
You do realize that letting the LLM produce more output means that maintenance will be more expensive? I can easily see a world where claude and gpt are producing more tokens to sell you more tokens.
user43928 2 hours ago|||
This is not as obvious as many naively believe.

It depends on how hard to maintain the code added is, how likely it needs to change in the future, and most importantly on the cost.

If reviewing and manually improving the code takes hours, the cost may already be in the thousands.

That buys you a lot of AI usage, roughly a few months of continuous work.

You have to balance this with the chance that the suboptimal code the AI generated is actually fine and maintainable enough, and also the chance that during further work on that code a model might implement the same optimization on its own.

abustamam 4 hours ago||||
Just the other day I burned through my 5h quota twice in a row because I had opus spawn a review session on a medium sized PR and I don't know what happened but I told it to summarize to me and it said it spent 100M tokens throughout 50 subagent sessions.

And more recently its been recommending that i install this new browser called Aside. I did, and it almost felt like I was installing malware so I Uninstalled it fairly quickly (it also was not a great browser)

I feel like theres collusion somewhere.

prisonguard 31 minutes ago||
yea man they are trying to nickle and dime you
alex_sf 4 hours ago|||
The models will only get better and inference cost will go down.

I don’t see any reason to think the same thing that happens with all tech won’t happen here.

consp 48 minutes ago||
Enshittification and profit maximalization is around the corner looking for you.
user43928 16 hours ago|||
So you don't use agentic AI to develop a large mobile app and you think my take is naive?

I also used to work full time as a Android developer for five years, and I'm pretty sure I know better than you about the quality of my app that I work on everyday.

elvis10ten 16 hours ago||
No where did I say we don’t do agentic dev!

Years of experience doesn’t mean much! I will challenge you on ideas. And the idea you are sharing is dangerous and unprofessional.

Especially at scale. e.g., we process more than 3.5 billion orders annually! This is serious business. Edge cases are common.

littlecranky67 18 hours ago||||
Same result here just using plain Opus 4.8+. I had a web ap with a PWA approach. Now I have an iOS app written in Swift/SwiftUI and an Android app in Kotlin in the appstores. I do not know how to code a single line of Swift or Kotlin. You just test the app and iterate with the AI over it until it is stable and does what it should.
prisonguard 28 minutes ago||
> I do not know how to code a single line of Swift or Kotlin

sounds like your app is nothing serious

nicce 17 hours ago||||
> You just install it on your phone and use the app.

Some people on the cybersecurity side are starting to cry....

user43928 17 hours ago|||
I have been getting these comments often here, including concerns about my non existent backend's security.

Last time, when I pointed out that the attack surface for mobile apps is typically very small, some users started to talk about zero day vulnerabilities in the OS's media handling, as if it was a concern for my app implementation.

I found the concerns again wildly overblown.

joenada 58 minutes ago|||
You sound like a person who's never had their app pen tested. The attack surface is anything but small if you're working with any kind of sensitive data.
freeplay 15 hours ago|||
But what if someone discovers a iOS 0day worth several million dollars and burns it to compromise your app specifically? /s
chis 17 hours ago||||
Are there cybersecurity concerns in the frontend? I would have thought you have to assume the client is untrusted and only do security work on the backend
nicce 17 hours ago|||
1. Not storing secrets properly or using hardcoded secrets

2. Wild use of webviews/iframes sometimes easily propagates as XSS in phones

3. Incorrect client-side OAuth 2.0 configuration e.g. with schema-based redirect URLs.

4. Not supporting high-enough API versions, which may prevent some OS-related weaknesses

5. The list is actually very long. Just few top of my mind.

Matumio 2 hours ago|||
My favourite is a logout button with a logout API that fails. (Not a huge pratical concern, I admit, because it's a local attack.) Nobody ever notices because it still shows the logout screen, which hides the API error toast (if errors were even displayed). The still valid refresh token stays in sessionStorage (or even localStorage) while the app displays "logged out". (Bonus points if you cleared the access token in the error handler but not the refresh token, and on page reload you ask the user to log in again despite having a valid token.)

Or a login form that gets hidden after login, but clears the username and password only when you click "login back in". (Bonus points if the backend also enforces a 5min session timeout "for security".)

user43928 2 hours ago||||
Storing private secrets in your public client is easy to avoid for anyone halfway competent. We are all professionals here.

Turn on the secrets scan in GitLab, and put in your release checklist to have the AI audit the usage of secrets in your app, and this is basically guaranteed not to occur.

I doubt current models even make such a mistake in the first place, and particularly so if you use reviews at all.

WebViews are not an inherent problem, it's the system browser embedded in your app.

Where it gets tricky is if your use case involves authentication in the browser. Together with the authentication in your app this is the one area where you need to focus on security.

The case where a SDK update is needed to prevent weaknesses of the OS seems rather unlikely.

rudedogg 9 hours ago||||
Doing anything right on web is 10x harder and more complex. The problem is the browser, once you use it to deliver anything you have to buy into all of it’s bullshit. CORS, XSS, headers, caching. All that just goes away (outside your backend API, if you even need one) when you ship a native app
chis 13 hours ago|||
Fantastic answer thank you
freeplay 15 hours ago|||
Nailed it. Assume your client is compromised and/or malicious regardless of how it was built.
Matumio 3 hours ago|||
If your clients are compromised then what's even the point of backend security. Users will login and do legitimate actions while their compromised client does whatever behind their back, while still looking normal. And the backend can't tell the difference.
asdfsa32 8 hours ago|||
This is the most naive take on security ever. For the backend, you assume your client is compromised, but you still don't want to allow your client to be compromised.
Culonavirus 17 hours ago||||
They better start a proper hydration regime because they'll be crying a lot.
Perz1val 17 hours ago|||
Why? The api has to be secure. Mobile os keeps the app safe. Where is the attack surface?
nicce 17 hours ago||
You don’t believe how often people leave secrets in the app or use webviews and iframes badly, misconfigure OAuth in client side and so on. There are many issues where secure API does not help.
masom 18 hours ago||||
> You just install it on your phone and use the app.

OP says they don't have an android phone...

paxys 18 hours ago|||
No, they said they don't use android so don't know the native UX. You can test your app on the platform and confirm that the functionality all works, but how well it adheres to the platform's design language is subjective and hard to say if you aren't used to the platform.
arkits 18 hours ago||||
Android studio has a emulator
atonse 14 hours ago||
I used the emulator - but just like I can use an iOS app for 30 seconds and tell you whether it feels native or not, I can't do the same for Android, since I'm not a daily user of Android phones.

And in the past, I didn't care because when I was manually building the app, I would just do my best with react native. But now that I can actually sweat the details (with the help of agents), I do want to hear from android users and use as many OS-native APIs and features.

user43928 18 hours ago|||
I missed that.

I'd order a cheap Android phone to have a device in hand instead of working only with the simulator.

atonse 14 hours ago||
Others on our team use Android phones. So when I said that we spent the next few days actually polishing it, that's where others came in, providing feedback when they used it.

I could only sweat the details on liquid glass, etc because I'm a daily iOS user.

majormajor 7 hours ago||||
That's a recipe for regressions as the amount of surface you have to cover with "just...use the app" gets bigger and bigger.

You can write more automation to test it. But that's also how you end up with ever-growing test run times.

There are much better ways that aren't just "throw out the LLM" either. You just need to be more focused on throughput. Requiring manual validation can pretty rapidly require more hours than just sanity-checking code by hand, even (and I'm not advocating that for every use case, either.)

I can't afford manual QA passes if I'm gonna go as quickly as I want to.

asdfsa32 18 hours ago||||
I am using Gemini as well as Opus on a somewhat small project in React Native and I can not imagine this thing being able to build the whole thing on its own without it being a dumbpster fire.

Can you share some details of how you work? What models? What harness?

atraac 2 hours ago|||
We use CC with Fable(Opus before that) continuously on a rather large project, everything is tested, we maintain high verified test coverage, we ship features x10 faster than when we started(pre Claude-everything era 2-3 years ago). I never worked with RN before and I ship features now. LLMs allowed us to find issues within RN itself, that thanks to some patches, improved lower end Android experience by a lot. We just use all the Claude defaults with claude.md that evolved over last year.
user43928 18 hours ago||||
I use Codex and Claude Code desktop apps. I generally use only the SOTA, now Astra and Fable 5.1, Opus 5 when Fable runs out.

I don't know if Gemini is suitable.

I had few issues with my native iOS app, the results are just decent after a few iterations, the models do what I ask them to do. Where do you see the problem?

The LOC for my app is now at almost 200k + 110k lines of test code.

prisonguard 18 minutes ago|||
what in the gobbledygook is this
cschep 5 hours ago|||
"the models do what I ask them to do"

what the fuck are you talking about

prisonguard 20 minutes ago||
can't believe what has become of this profession
chis 17 hours ago|||
> Opus
asdfsa32 6 hours ago||
> Are there cybersecurity concerns in the frontend? I would have thought you have to assume the client is untrusted and only do security work on the backend.

I hate software engineering now.

dakolli 17 hours ago||||
Damn, we really gotta get rid of the vibe coders. Bad things are on the horizon if we keep encouraging these naive habits.
atonse 13 hours ago|||
How do you propose getting "rid" of "Vibe coders" (which I'm assuming you're pooling me into?)
applfanboysbgon 9 hours ago|||
Severe financial liability for security breaches, severe enough that, for instance, companies which leak 1m+ user data are driven to bankruptcy

[yes, this would also get rid of the previous generation of 1000-JS-lego vibers]

player1234 3 hours ago|||
[dead]
ndbe 17 hours ago|||
Yes, what type of "engineering" is this? "I click the button and I see if it works or not" holy shit.
croes 17 hours ago|||
> You just install it on your phone and use the app.

That‘s how you check functionality but that’s not how you get the bugs in the code.

user43928 17 hours ago||
That's the part covered by the other model's review. That together with manually verifying the functionality results in output that works.
croes 17 hours ago||
If you don’t know the language you can’t evaluate if the models really found bugs.

That’s like translating a text to another language without knowing the language

Daishiman 6 hours ago||
This is wildly overblown. I've been working with agents for a good while, read tens of thousands of generated Python and the language factor is actually the part they get right that humans don't.
croes 14 minutes ago||
Do you know Python?

What do you think has more training data Python or Kotlin?

MiroslavPokorny 8 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 17 hours ago|||
> It's a fine project to do but clearly they put zero value on being familiar with the project's codebase/stack and ecosystem,

As much as I dislike it, I think that's the future of _all_ non-critical software (think social media, crms, CI, food delivery etc). Leadership in many companies is explicitly asking employees to have multiple agents running through the day and that will lead to this.

Read this for example: https://www.uber.com/in/en/blog/efficient-software-factory/ . A very useful system, I am sure. But when you have AI at every layer from code to review to triaging, rest assured AI is the only know who knows your system. And you better hope it's not telling you that something is load bearing during an incident.

atonse 16 hours ago||||
I answered elsewhere that I don’t personally use Android phones but we have people on our team that do. Which is why I don’t want to personally claim that it feels native.

But yes we are having real Android users test it.

So it’s quite the contrary. I care MORE what real users say. I can only guarantee that the app does things when I tap. So I’m not trusting the agent on UX, only on functionality. But whether it feels native, I am relying on those users in our team.

collingreen 10 hours ago||
That's much better than my original, perhaps unfair, read. Thanks for the additional info.

I still would feel scared operating an established product off a newly changed stack the team isn't familiar with though.

snoman 16 hours ago||||
> this yolo approach would give me constant dread.

When you’re completely ignorant, there’s nothing to be afraid of.

atonse 17 hours ago||||
I wrote every single line of the react native app we ported, and maintained it for 9 years. So suffice to say, I'm familiar with the code.

But I am going to always prioritize the user experience over a developer (like myself)'s need for satisfaction to see code. And a pure native app is _always_ going to behave better than react native.

This gives me a chance to do that.

kajman 16 hours ago|||
> And a pure native app is _always_ going to behave better than react native.

Maybe iOS is better about consistency, but I've used enough horribly made Android apps that I would not expect one that's vibe coded to behave better than a professionally made react native version.

atonse 16 hours ago||
Maybe. Android might still be a mess, fair point.
leptons 10 hours ago|||
>So suffice to say, I'm familiar with the code.

You are familiar with the React Native code, you are not familiar with the Swift or Kotlin code, and likely nobody on your team is, since the AI wrote all of it for you.

dyauspitr 17 hours ago|||
First “production is down” page means you just tell codex production is down and to fix it.
dboreham 16 hours ago||
Presumably a sarcastic post, but this is actually going to be how things are done soon. I had a box that OOMed and needed to be rebooted every few weeks. It was a disaster recovery standby box so figuring out what was going on never rose to the top of my priority list. So I asked Claude to dig into it (proxying the commands it wanted to run through me) and in an hour it had diagnosed the problem, fixed it, and taught me a bunch about memory usage in our system on modern kernels.
dyauspitr 16 hours ago||
Not sarcastic. I have a moderately successful app and I haven’t once looked at the code (though I am capable, so far atleast). The only time I open Xcode is if I have to modify signing certificates. I did set up a slack workflow with a “fix it” button that basically tells Codex to fix the issue, run comprehensive tests, manually UI test for that particular issue with computer use and then deploy it.
collingreen 10 hours ago||
Equal parts very cool and very scary to me
dyauspitr 10 hours ago||
It is. For my day job, I’m a software engineering director and I probably won’t have a job in under five years. For low to medium complexity apps, even Codex before Astra was capable of doing it completely by itself from scratch. For testing I would bring up the app after each atomic change and then manually try it out. I also use my own app heavily multiple times a day and I have found dozens of issues but I just ask Codex to fix it on the spot.
moronicles 17 hours ago||||
[dead]
whatsThisBtn4 9 hours ago|||
ITT: people dealing with realities.

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

prisonguard 38 minutes ago|||
Congratulations, you now have 2 codebases to maintain.
larodi 18 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 18 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 3 hours ago||
Once you understand how to write a program get someone else to write it - Perlis.

[1] Epigrams in Programming:

https://engineering.yale.edu/academic-study/departments/comp...

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||
That's an example of AI growing the sector that can lead to more jobs. Because suddenly a lot of tasks that weren't economically viable are now going to be in demand. Custom software for small businesses, platform specific optimized code instead of cross platform software, etc...
mattm 19 hours ago||||
This is a type of project that likely wouldn't have been done before AI
eleventen 18 hours ago||
Of course it would. Supply and demand. Some companies would decide not to bother. Others would decide it was worthwhile. The limited pool of supply (app developers) would be distributed across demand.
enraged_camel 18 hours ago|||
>> Some companies would decide not to bother. Others would decide it was worthwhile.

The parent's point is that AI lowers the cost/benefit ratio drastically, by reducing the cost. So companies that would have shied away from projects like this pre-AI are now pulling the trigger without much hesitation.

hamandcheese 7 hours ago|||
And what a lot of people seem to miss is that with AI, there is going to be (already is?) orders of magnitude more software in this world. I'm sure a lot of jobs will be eliminated, but new jobs will be created as well. Hopefully enough to balance things out, but we'll see.
rrr_oh_man 4 hours ago|||
> The parent's point is that AI lowers the cost/benefit ratio drastically, by reducing the cost.

…as long as Claude is still subsidized…

player1234 3 hours ago||
[dead]
spiderice 16 hours ago|||
> Some companies would decide not to bother

Sounds like you agree

eleventen 15 hours ago||
I agree that AI is suppressing developer wage growth and taking real jobs. The opposite argument is being made elsewhere in the thread, and I think that argument is wrong.
lnrd 15 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 16 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|||
While I agree with that statement -- that is also a lot of jobs. We have a lot of humans -- not every single developer sits in the innovation seat. The fewer the jobs available the less employable humans.

I think that rewrite - if AI enabled - owes its thanks to the legion of individuals who put their code up on the internet in the first place.

Weird times.

doc_ick 18 hours ago||
Unfortunately theres no thanks to the suppliers of training data. US courts made sure there’s no recompense for them, and likely never will be.

Seems similar to eminent domain, but without limitations.

cheema33 19 hours ago||||
> This is an incredibly boring task.

We all want super exciting jobs. But plenty have boring jobs like this. Between not having a job or having a boring job that pays well, the choice is obvious for many of us.

8n4vidtmkvmk 3 hours ago||
Are you defending doing boring work?

I personally never minded doing migrations. I guess I don't really have to anymore though. Weird.

pjmlp 1 hour ago||
The problem is that in many companies doing migrations would be the only job, thus now there is none.
guelo 9 hours ago|||
This is just not true. In the olden times (pre-claude) devs were constantly asking to do full rewrites of legacy code. This kind of project is exactly the kind of work I've trained for and have loved to do for the last 15 years as a mobile dev.
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||
Previous company I worked for would have (and did) hire dedicated swift/java mobile developers to build and maintain ios and android native versions (largely porting functionality from an existing web application)

Not anymore.

atonse 18 hours ago|||
What's more likely (as others have said) is that the other thousand companies that can't afford to have dedicated staff would've just used React Native. So no jobs were lost, they weren't there in the first place. The places that have dedicated Swift/Java devs can now be more ambitious in what they build.
organsnyder 19 hours ago|||
That's fairly rare. Most companies would use a compatibility layer instead.
josephg 18 hours ago||
Really? I’ve worked with plenty of companies that had separate native iOS & Android teams. I don’t know any that use a compatibility layer. Unless by compatibility layer, you mean a web view.
ashishb 7 hours ago|||
React native is broadly an inferior option.

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

avicado0o 1 hour ago||
this is from 2021....
ricardobeat 17 hours ago|||
I assume having Kotlin and Jetpack Compose makes it much easier than it was back around 2020?
nevertoolate 13 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 18 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 18 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||
Isn't ZDR only the case if you "opt out" through a setting? Lots of opportunities to make a mistake here, or for the LLM provider to play games. You could be unaware of the setting. The provider could reset the setting upon subscription lapse/renewal, application update, model release, etc. A developer could accidentally use their personal subscription (w/ setting on) on a work codebase.

Also what's the timing on this setting's effectiveness? What if before you knew to "opt out" you used the agent for a refactor and your entire repo got sucked up in inference? But then you opt out the next day? Is it too late?

drdexebtjl 17 hours ago|||
That’s the case with a personal subscription directly with OpenAI or Anthropic, but enterprise customers are opt-in, AFAIK.

And there are solutions around it from other providers and model routers. OpenRouter lets you explicitly say on a per-request basis you don’t want to be routed to a provider that trains on your input, for example.

kccqzy 16 hours ago|||
The mistakes you describe are only possible if the company doesn’t really think there’s proprietary IP in the codebase.

If a company really believed there’s valuable IP in code, there would at a minimum, ban laptops or ban code on laptops[0], provide and maintain a centrally managed LLM gateway[1] that handles authentication, billing and model choice, have MDM to prevent you from using your own Claude login, etc.

[0]: For example when I worked at Google, the proprietary google3 codebase cannot exist on laptops because there are no tools to download it to your laptop.

[1]: For example Claude code supports having a gateway: https://code.claude.com/docs/en/llm-gateway-connect

greenowl 13 hours ago||
I'd wager many software startups out there would consider their code valuable IP (even if in the AI era it's not), and don't have these types of IT controls in place. Startups I worked at gave you an email account, github access to their private repos, and that was that.

Heck, you don't even need to mix up a personal and business AI subscription. For the vast majority of folks one day their IDE "updated" and a bunch of AI features suddenly became available. Free, no sub needed. A dev starts using them (because, why not?) and lo and behold the company's code got shipped out in an inference call and is now scheduled to be in the next training run. Oops.

kccqzy 11 hours ago|||
You are merely describing companies that aspire to consider their code valuable IP, not companies that actually do so.

IDE updated? It’s the company IT’s job to perform testing before distributing those updates. And also their job to use whatever managed settings to disable those unmanaged AI features.

drdexebtjl 12 hours ago|||
How's that any different from, say, Windows updating and backing up the company's code to OneDrive?

Actions speak louder than words. If the company doesn't even supply and require work devices, they don't effectively consider their code to be valuable IP.

greenowl 12 hours ago||
Is Microsoft mining their customers' backup files looking for source code to ingest into their model training pipeline?

Of course the company can still consider their code to be valuable IP.

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||
Definitely agree. Most developers could build a basic Twitter or Facebook clone. The hard part is getting the users, content, and relationships that make the product worth coming back to.
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 16 hours ago||
True, but shops are exposing everything to Claude or Open AI. It's akin to outsourcing all manufacturing to subcontractors in China. That was cheaper, but extremely short-sighted. Now so many products have cheap Chinese knock-offs that are nearly the same as the originals because the subcontractors made both.
asdfsa32 18 hours ago|||
Codex with what model?
atonse 14 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 18 hours ago||
I was surprised by your comments and then you do Rust to be called via Java or Kotlin and Swift?

What does your app do?

sprite 11 hours ago||
Yes uniffi created swift and kotlin bindings. The app I did with this is just a sudoku game https://www.puzzlesight.com . Before AI I would have reached for something like Flutter to avoid doing all work twice but with AI doing two apps makes more sense.
asdfsa32 6 hours ago||
Okay, makes sense, the whole thing looks and screams vibe coded. On a beefy machine, navigating between your website pages takes 2-3 seconds. So still a long way to go with AI.
locallost 18 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 5 hours ago||
I hate to break it to you, but we already have it: it's called PHP
zx8080 19 hours ago||
[flagged]
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 2 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 1 hour ago||
I think Amazon is very much on another level in terms of scale. Not trying to be negative about Shopify — they have a very large system to maintain - but Amazon is just on another level.
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 9 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 8 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 9 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 9 hours ago|||
> Not sure why someone would say it was a wrong decision.

Writing almost anything with javascript sucks ass to begin with. Writing native code with it is even more painful. Most javascript engines don't even have any decent model of parallelism. It takes zero imagination to see the problem here

willsmith72 9 hours ago|||
how much parallelism are you writing in your frontends?
cloudfudge 2 hours ago||
The problem with everything being single threaded isn't so much that you want to do a lot of parallel processing, but that you don't want to have the occasional fat loop cause the whole engine to start stuttering. If you want butter smooth scrolling while there's (for example) a lot of dynamic content moving around, you want very precise control of the threading so you can get the gnarly stuff done without causing hitches that don't feel right.
user43928 1 hour ago||
The browser, iOS, and Android all use a main thread separate from the thread responsible for scrolling animations.

However, I think it's true that controlling threading in order to perform gnarly work in a separate thread is more ergonomic on mobile than in JS/React.

You'd need to create a Promise that wraps a Web Worker, which would be an unusual thing to use. I don't think most apps need such control over threading in the browser.

hectdev 9 hours ago|||
I mean, why would they admit to it being the wrong decision. Its a business.
simonhamp 6 hours ago|||
Why would they need to worry about hiring for specific skills at all? As AI progresses, isn't the only skill that matters that you can drive it effectively (which encompasses testing and review) without needing oversight?
gbalduzzi 4 hours ago||
Because we are not there yet and you can't oversee something you don't know
nielsbot 7 hours ago|||
> worked well for them

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

Cthulhu_ 56 minutes 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 9 hours ago|||
You should read the article. You'd realize that you're not actually vindicated by its contents.
hectdev 9 hours ago||
I read it. They chose native over shared. Hence vindicated.
hermitwriter 9 hours ago||
Derp. Read it again.
hectdev 9 hours ago||
Shopify is moving its mobile apps from React Native back to native Swift and Kotlin. With the main cost of native gone, the benefits of staying close to platform APIs and first-party tooling win out. This has been my ethos. That native is better than shared.
npunt 8 hours ago||
Your argument was you've argued your whole career for native. The article argues only very recently the cost equation has changed. Your argument reads like you are not taking into account the broader context or the passage of time.
hectdev 8 hours ago||
I'll put it this way, my argument was pro native. And in the context of the article, if a large company had unlimited resources, they would choose native. I'm not discussing the business case for it, but the end result of it being the better option. It can be seen as "Shopify tried Reactive Native and left it behind the second they could after sinking resources into it for 6 years".
hn993302 6 hours ago||
Everyone always knew native was better if dev cost weren't a factor
fingerlocks 2 hours ago||
Go back in time and read the react-native vs native debates. Many react advocates claimed otherwise
smackeyacky 1 hour ago||
Time and progress have overtaken them. At the time they were likely correct but I certainly wouldn’t bother with react native any more when the LLMs have gotten so good
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 9 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 9 hours ago|||
You're looking at it from iOS side only, and for a US company that would be the last platform they'd ever drop.

It was a different picture out of the Apple garden, when a company only brings their next major feature to iOS because they couldn't be bothered to hire the same headcount on two development teams and their CEO uses an iPhone anyway.

We had that discussion about a decade ago with a company rep that didn't realize 70% of their EU users were on Android yet their play store app didn't have the feature they were planning to promote.

Basically, better was the enemy of good for most companies.

hectdev 9 hours ago||
Correct, I advocated for the solution that produced the best outcome for user experience, code and architecture simplicity, and prevented having to rewrite an app in the future in native. Which has been validated here.

The android shortfall is a real one but I also pushed for hiring native android developers too.

hackernud3s 7 hours ago||||
We'll have to wait and see if the extra maintenance / bugs / attack surface is justified. This an announcement of future direction so vindicated is certainly premature.
ronsor 9 hours ago||||
They're right when it makes business sense, which is also about cost and why Shopify didn't do it before.
hectdev 9 hours ago||
I'm not arguing the business sense. Two sides can be right which is why I advocated for native development. Which is vindicated here.
gooseyman 6 hours ago||
If you weren't arguing against the business case, what were you arguing with the C-level types about? I don't think I have ever heard a case for react that wasn't centered around shared codebases mean fewer resources/cost/time to deliver a feature.
MiroslavPokorny 8 hours ago||||
In other words your team also resigned the next day ?
colesantiago 9 hours ago|||
> developers are happier working on native codebases.

Agents are happier working on any codebase, but ultimately Shopify and other companies want iOS native app level quality without the huge cost of hiring many native iOS / Android devs.

LLMs and Agents deliver on getting a native app out at lower cost, higher quality, faster all at once.

I think everyone is trying to tell you your skills as an iOS native dev have been commoditised and Shopify and others don't need to hire anymore native devs to find this out.

I don't see how your job being completely commoditised and cannibalised by LLMs replacing your job is some how vindication?

This is just like saying "we won the argument", but what did you actually "win"?

hectdev 9 hours ago||
Yea, I hear that. I'm content with winning the argument and truthfully, I think they will find they need to hire iOS engineers because we do more than write Swift. There are whole ecosystems of knowledge to go from a product idea, sit in meetings with many stakeholders, and implement the actual thing everyone wants. All they got here was a 1-to-1 implementation of their current app which was born of engineers working through real constraints. It says nothing of new features that have to play nice with other pillars of the company.
colesantiago 9 hours ago||
> I think they will find they need to hire iOS engineers because we do more than write Swift.

Shopify isn't hiring any mobile engineers.

Probably because the agents were hired first and took the job already.

That is the point of the job being literally commoditized and cannibalised, they hire less or close to 0.

Your quixotic 'vindication' means nothing and has the opposite effect.

hectdev 9 hours ago||
Not sure why you are defining my vindication. Its purely rooted in native is the better solution for mobile apps. Which they are using. Not sure how that makes it the opposite.
winrid 9 hours ago|||
probably because every react native app they've used feels like shit
ajross 9 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 9 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||
I'd challenge you to determine which of the top app store(s) apps are react native vs not -- plenty of app store awards have gone to react native apps -- bad software is bad software. plenty of you ios devs write shit software. I've done this job almost 40 years and no language or platform has ever prevented people from building shitty software or for that matter gotten in the way of writing good software. good engineers can figure it out.

source: ios dev since it was possible -- I am not even pro react native, I am just pro merit based arguments -- you aren't making any

hectdev 9 hours ago||
Challenge not accepted but deferred to the article where one of the largest business wants to sit at the intersection of native apis without a a middle layer for the sake of saving money. Put another way, given unlimited resources, native wins out over shared.
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.
dshprobe1111594 9 hours ago|||
[dead]
dshprobe1111594 9 hours ago||
[dead]
fnthawar2 19 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 19 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 1 hour ago||
Others mention quicker startup of the app, more native-look, less head-ache w/ RN.
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 10 hours ago||
This is not the author. It's very likely Farhan Thawar, head of eng at Shopify
accumulator 18 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 19 hours ago|||
I suspect we'll see a lot of large orgs doing this in the next year.
joshstrange 19 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 19 hours ago|||
Your assumptions are very outdated. App Store review times are typically < 24 hours and have been for the last couple of years. And KMP makes cross-platform a real thing now, rather than hacking a web view into a native shell, which was always the worst possible user experience.
ftchd 18 hours ago|||
Apple has started automating them a while ago so a lot of them are indeed <24 hrs. I wouldn't say they are wrong though.

Just this week I've had an app stay for 9 days in review and another one for 8 hours. Same dev account, same niche.

manmal 17 hours ago||
When it takes longer than 36h, just revoke and submit again. It's probably just stuck in some queue.
ceejayoz 17 hours ago||
Or https://developer.apple.com/contact/app-store/?topic=expedit... - I've had good results from their expedite tool.
joshstrange 18 hours ago||||
I'm afraid you are the one out of date here. App Store Review times have ballooned in the last few months. Marco Arment talked about this publically (on the ATP podcast) about how his app was stuck in review for over 2 weeks IIRC and I've seen 2 days as the minimum review time in the last few months with some taking a week or more.

Yes, for a while they were doing very well and I even once had an app reviewed in <1hr but the average has been creeping up. LLM/Vibe coding is what is often blamed for this increase though at the end of the day it's Apple's problem/fault for not staffing the review department better.

joenada 18 hours ago||
This is only anecdotal, but I had a review on a brand new app turned around in ~6 hours 2 days ago. A lot of it has always been luck of the draw, though, granted.
joshstrange 18 hours ago|||
I agree it's anecdotal but that's all I have to go off and global averages don't help me at all. The problem it's a complete crap-shoot. You have no way of knowing if you are going to get a quick turnaround or a long one, it has zero bearing on if it's a new app or update or the size of the update, it's completely random. I cannot plan around random which is why I've opted for web-tech-based apps (Capacitor) with OTA updates so I can get fixes out just as quick as I could get webapp updates out.

I just ran an analysis of my apps and the fastest was 8hrs (June 20th) but since then it's been trending upwards with my last 3 updates coming in at 40hrs, 67hrs, and 98hrs. These are all my apps, the company I work for has at least 2 recent updates that took over a week. That's just absurd.

If the App Store can commit to 24hrs being the max time then maybe I'd be interested but for the foreseeable future I'll "Settle" for instant updates when I have a fix ready instead of waiting on Apple. Especially with how random approvals are (not just the time, the approval itself), I'll ship a tiny fix and App Review will kick it back for some native API I've been using since version 1 that they now want more info about. I don't fancy having my businesses at the whim of Apple Review.

ceejayoz 15 hours ago|||
It's also dependent on when you file. My reviews seem to come back around 2-3 AM Eastern; I presume they're overseas contractors.
paulryanrogers 19 hours ago|||
Doesn't KMP assume your team is comfortable working in Kotlin?
mike_hearn 18 hours ago|||
Well, it assumes the model is.

KMP can be seen as a token optimization at this point. Business logic is shared and doesn't have to be rewritten in Swift.

joenada 18 hours ago|||
Yes, that's fair. I'd argue, though, that the training required to get your team up and running should be fairly minimal - Kotlin is a very easy language to pick up, especially for people coming from TS - and will pay off dividends in the medium to long term.
Rohansi 19 hours ago||||
You get all of those, to some extent, if you use React Native. You still need to do reviews for significant changes due to app store rules but you can OTA update most changes without waiting on a review. Even web support is there.

There are cons to targetting web/PWA too. Push notifications work but Safari on iOS only allows them if the user adds your website to their home screen. It also doesn't support prompting the user to install the PWA so you have to instruct your users to tap the Share button, tap View more, and then tap Add to Home Screen. And as soon as they tap the Share button the menu opens on top of your instructions so they need to remember the steps to continue. It's hard to defend this behavior because the user will still need to allow notification permission when they open your PWA from their home screen. It's an unnecessary hurdle.

cosmic_cheese 17 hours ago||||
> 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".

Apple may not trumpet it as loudly, but these freebies are handed out in UIKit too, for cases where declarative UI is cumbersome.

Generally I've found that while SwiftUI is great for little self-contained bits of UI like table/collection view cells and simplistic template-like apps, it tends to become a bear with complex apps, so it's nice to have both options.

schrodinger 19 hours ago|||
https://www.runway.team/appreviewtimes
joshstrange 18 hours ago||
I'm sorry but that data does not at all square with my experience. I'm seeing 2 days+ as the average and I haven't seen sub-24hrs in months. I oversee ~20 apps and I can tell you iOS review times have been trending upwards for the last few months.
schrodinger 17 hours ago||
Apologies, I used to use appreviewtimes .com [dead], which scraped tweets and was pretty accurate, but is dead now. I posted what seemed to be a decent replacement, but will take your word it’s not.

Edit: was going to update the earlier comment but just hit the 2 hr mark.

joshstrange 17 hours ago||
For all I know it is accurate for them but I encourage you to hover on the bars and see the min/max. That's where the issue is. I wrote more about it here [0] but the TL;DR is that it's wildly inconsistent, sometimes it can take a few hours or <12 hours and sometimes it can take a couple days. It's impossible to plan around and nothing drives me crazier than having a fix written but waiting for Apple to get around to reviewing it.

[0] https://news.ycombinator.com/item?id=49645559

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||
Still loving flutter over here!

The vastly undersold topic to all of these is how many developers do you have?

We have the option of using flutter, or not launching an app at all. The concept of going full native is a non-starter.

I basically could not care what Shopify is doing because they have hundreds or thousands of people.

dpark 19 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 19 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 18 hours ago|||
Did you switch to SwiftUI or UIKit?
alexashka 16 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 8 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 10 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 17 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 16 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 16 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|||
> "Native devs are the old-school ones. Shipping is expensive, so you better get it as right as possible."

Exactly this. After close to two decades building for the platform, the mindset is really to be cautious and make sure everything is rock solid before shipping.

This has more to do with building up a quality tool chain and testing process than being slow.

But sometimes there is a need to ship over the air updates, and for that (on Kotlin) there is Zipline [0] from Cashapp. I haven't used it in anger yet, but I know some people who do and trust it.

[0]: https://github.com/cashapp/zipline

sebmellen 7 hours ago|||
Totally depends on your business model too. We have clients that often require quick changes for compliance reasons, and they need to ensure all users of our apps are congruently updated. That’s not easy without OTA.
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 10 hours ago|||
Are you saying a native app can't make an http request and update the code they JIT?
whstl 10 hours ago|||
It can download Javascript (or other interpreted language, or config data), but you generally can't download and execute new compiled native code on iOS, due to iOS code-signing/executable-memory restrictions.

Also keep in mind Apple might penalize you for dodging the review process and shipping new features, etc.

(btw, one exception to the JIT rule is custom browsers for the EU)

mohamedkoubaa 8 hours ago||
Pardon my ignorance but can't an iOS app host a WASM runtime without being a browser? And if so it doesn't need to be an interpreted language necessarily.
apitman 6 hours ago|||
I am fairly certain this is against Apple's policies. In principle you're not supposed to change the functionality of your app without review.
cute_boi 6 hours ago||
i don't see any difference between wasm and js? If react native apps can be updated with js, wasm should be allowed.
apitman 6 hours ago||
I think updating js without review is also against policy.
whstl 2 hours ago||
It's a grey area.

App Review Guidelines §2.5.2 says: "Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, including other apps"

Technically Apple can punish you for anything but so far it seems to be accepted for small fixes and tweaks.

svieira 7 hours ago||||
Yes, it could, but then you would have re-invented React Native. But in WASM.
sebmellen 7 hours ago|||
Yeah, but to my understanding that’s not what Shopify is doing.
jshmrsn 10 hours ago||||
Precisely. That has always been prohibited both by technical measures and by the App Store review guidelines. Especially on Apple, but also on Google Play / Android as well.
kccqzy 8 hours ago|||
Doing so would require the app to have the business logic written in JavaScript. Apple only allows JIT’ing JavaScript using JSC.
mohamedkoubaa 8 hours ago||
This seems to be a weaker claim than "RN is needed to do this", but practically speaking it might amount to that.
kccqzy 8 hours ago||
Sure you can choose not to adopt React’s reactive paradigm and manage state directly but using JavaScript. My understanding was that in RN, JavaScript code manipulates C++ objects in the C++ part of RN, which then calls host platform code to create views and render.
bryanhogan 23 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 16 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 16 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 13 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 16 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 16 hours ago||
But the screens should look different, right? That's the point of building separate iOS vs. Android versions is to make each version "native" to its platform. The feature-set should be the same, but the interfaces can diverge.
Dfiesl 16 hours ago||
I think the whole native thing is more for better performance, debugging ease and dependency reduction rather than seeking variation in UIs.
patcon 16 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 16 hours ago||
> You're completely right to call me out on this. Here's the real smoking gun: the iDoohickey isn't a real API interface on iPhone
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||
Hello! As I'm on Android, thank you for your service.
throwaway27448 14 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 14 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.

faceless3 14 minutes ago||
And they still has zero job openings for Android/iOS devs
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 10 hours ago|||
true absolute cancerous bs
throwaway613746 10 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.
More comments...