When I finally checked out, native Android was a teetering mess of compatibility libraries, half-baked never-finished “new ways of doing things”, lacking docs, forever-bugs, and overall neglect. Simple ui would take you 5x as long as equivalent css and have you dropping down to low level drawing in frustration.
Back then, I felt native Android didn’t deserve my time or patience.
Has this picture improved?
I say this as someone who has mostly done Android dev since '09.
It’s better than non native for performance and experience but many companies will of course care more about the money saved from a sub native experience with fewer developers.
I currently work at an agency doing Android apps (not a typical pump and dump agency mind you, I've been the lead on this single project for 5 years and we've had them as a client for 8+), and I'm so happy to see our client buck that.
They've had us on a native app that we've been supporting for the entire 8 years, and had deep technical issues from before us ("lets reinvent the web browser for UI"). They had a secondary internal team (known to us, no hidden surprise, you're gone stuff) working to replace us with a greenfield cross platform app (I think react native). That project went on for a year before they cut their losses and said "cross platform can't be good enough."
We're now in the planning phase of a complete greenfield rewrite of the existing app to take advantage of Compose + Kotlin, and ditch 12 years of tech debt and I'm practically ecstatic.
I'm thinking more smallish companies with simpleish apps mostly (with Flutter anyway; I've never been fully convinced by React Native)
I agree that you probably can't be a decent mobile dev in the long term without learning basic iOS/Swift or Android/Java(/probably Kotlin nowadays) but that is not a good place to start for people who are just getting started.
yes, because they are a company and have 2 separate teams maintaining each stack.
TBH I mostly blame Apple for my reluctance. Given the barrier of entry, I'd rather just work with a cross platform tool, launch android, and then figure out any potential IOS issues when I decide I need an IOS port and the need to pay for a license (and find/buy the Apple hardware).