The End of the Cross-Platform Compromise

Last week I was three codebases deep in a single working session: iOS, Android, and a web project, all moving forward at the same time. Not because I had a team. Just me, Claude Code, and the native knowledge I'd been building up for years.

That used to be impossible for one person. Not because of knowledge. I'd had the knowledge for a long time. But the volume of code to write, the context to hold, the raw output required. Cross-platform frameworks like React Native and Flutter were the obvious answer to that: write it once, keep the team small, accept the trade-offs.

And there are always trade-offs. Anyone who has built natively knows what cross-platform costs you: performance ceilings, platform-specific quirks that need workarounds, UI that almost feels at home but not quite. You can get close. Rarely right.

I never fully bought into it, even when I understood why teams chose it. My background is native iOS and Android before I moved into web with Rails. Each platform has its own way of thinking. The mental model for iOS is genuinely different from Android, different again from the web. I knew what was being traded away. But the logic was clear: three separate codebases, three separate skill sets wasn't realistic for most small teams or solo developers.

That changed with AI-driven development. I had the knowledge. What I didn't have was the hours in the day to keep three codebases moving. Agents handle that now. My job is knowing whether what the agent produced is right for that environment. And what comes out is actually native. Not close. Actually native.

I didn't expect this to change what the breadth I'd accumulated was actually worth. For most of my career, knowing iOS, Android, and web was just a collection of things I'd picked up. Useful, but not especially strategic. Now it's a genuine advantage.

Skills built years ago, some of which felt niche or excessive at the time, are load-bearing again. I didn't predict that.


Personal writing on software, building products, travel, and life on Madeira.
Honest, infrequent, not optimized for your inbox.



2026

Complicated vs Complex


28/04

The End of the Cross-Platform Compromise


27/04

No Dashboard, No Excuses


26/04

The attention economy proved RSS right


25/04

The Quality Drift


24/04

The Developer Role is Changing


22/04

2024

My future self knows better


19/12

All or nothing


18/12

Social following & connection


08/12

My relationship to social media


01/12

Dental surgery & expectations


22/11

On leaving X again


08/11

Personal blogs


02/11

Click to cancel


19/10

2021

Every day learning


30/01

Out of the shadow


10/01

Now vs. Later


09/01

Why do I want to write


08/01

Our first Youtube LIVE


02/01

A new day


01/01

2020

Daily Practice


30/12

Fast forward six months


12/12

Going down the rabbit hole


07/12

Getting ready


06/12

Impact of customer support


27/11

A lot has happened


19/11

It's ok to have bad days


08/09

My first productive week


17/07

Countdown & Commitment


08/07

Transition time


07/07

Our travel continues


06/07

Understanding Men & Women


05/04

The fear of the unknown


04/04

Hello World (literally)


01/03

Almost being scammed


09/02

Our next chapter


02/02

2019

Forced to try something new


10/10

I am not good at ...


29/09

ContextLabel 1.6.0


08/05

2018

I'm not on LinkedIn


24/12

Don't be right, be open


22/12

Healthy Lifestyle


30/09

2016

Hill88


08/08