React Native or Electron: Why?

Many developers hate Electron apps, and have a distaste for React Native apps. There are some good technical reasons for this. They're inelegant. Inefficient. Bloated, slow, pigs. That's the reputation.

But to the users? They're fine. They're good enough. I don't see users dropping Slack in favour of Skype because Skype is native. That's just now how users make these decisions.

But native is better right?  Big, smart, rich companies are choosing to build software using React Native and Electron. Why would they do this, given that the products will be, by some measures, sub-par?

It's not about the raw cost savings of using one code base. It's about the organization.

Software development is more than just developers. It's QA, HR, IT, CI, Design. UX.

Companies get addicted to their own branding. Most big, successful apps use their own look & feel, rather than adopting the platform conventions. Adobe apps don't look like Mac apps or Windows apps, they look like Adobe apps. Slack looks like Slack. Facebook looks like Facebook.  Word is going to come down that all of these apps need adopt the same look and feel on all platforms. In doing so, you're giving up the platform familiarity that users have with native apps.

There are 5 major platforms to build for: Mac, Windows, iOS, Android, and the web. If you're going to build a "native" app for each of these platforms, that's five times more design work to do. Five teams to manage. Five teams that you need to coordinate whenever you want to make a simple change.

If the 5 native apps could evolve on their own timeframe, it might be easier, but each platform has both internal and external factors that feed into development schedules. Releases need to be coordinated, feature sets coordinated, look & feel coordinated. 

Cross-platform development isn't about saving money on development; it's about coordinating development across all the platforms. Even if it cost *more* to build an Electron app than building separate native apps, I think for many companies it would be preferable. It's just easier to manage.