When should you use a hybrid framework? 🤔

Hi 👋

It’s been a couple of weeks without a new email from me!

And the reason is actually quite simple: after going to New-York, going to the mountain and going to a party organized by a popular iOS app, I ended up being sick 🤒

I even experienced some voice loss, which is quite annoying when you have livestreams planned and videos to record 🥲

But don’t worry: I’m back to full health 😌

So let’s not waste anymore time and dive into the topic of this email!


A couple weeks ago I did a livestream, and at the end of this livestream someone in the chat asked me a very interesting question:

What’s your opinion on using hybrid frameworks to develop apps?

It’s a question that’s actually quite common and I’ve realized that I’ve never created any content on this topic!

So it’s time to fill that gap, here’s my answer to that question:

(if you’re not sure what a hybrid framework is, you can find a nice recap here)

I'm not a big fan of these hybrid frameworks.

If you use these kind of frameworks, be aware that there will be a hype cycle.

At some point, there will be less hype, they will be less popular, and their maintainer will have less of an incentive to work on them.

Apple will always maintain their developer platform as long as they are selling devices, and they seem to be doing pretty well at selling devices.

So iOS is not likely to be going away in the coming years.

Think about React Native, it used to be very popular a few years ago and it seems to be less popular now.

We can expect the same thing with Flutter in a few years.

I'm old enough to remember when Cordova, PhoneGap, Ionic and others were introduced.

They were all quite popular, some people were using them a lot.

Typically agencies wanted to use them a lot because it meant cheaper costs to develop an app.

So they would be more likely to win more projects or to pay less for the development, which means making more money.

But it’s not a magical solution, as someone is saying in the chat: write once, debug everywhere.

You will not save half the development cost, you will save 20 to 30% at best, because you will still need to test on both platforms and solve issues on both platforms.

And as I was saying, once the framework that you're using will be less popular, it will be a big problem.

If a new feature comes up that could be really useful for your business, but your hybrid framework doesn't support it, that's also a big problem.

If you end up struggling to hire engineers willing to work on a codebase that’s been built on an old and cheesy hybrid framework, that’s one more problem.

So you really want to be careful about it.

As I’ve said, I'm not a big fan of hybrid frameworks.

Every time I've used them, it wasn't great.

For me, it makes sense to use hybrid frameworks only for throwaway apps.

If you're an agency creating, say, apps for events and that once the event is over, the app gets discarded, then yes, in that specific case consider the hybrid approach.

It might make sense.

But if you're a company who is trying to build an app that will evolve over time, that will be integrating the latest technical possibilities of their respective platforms.

And the app that you're building is the product that will make your company successful or not.

Then in that case, of course that you want to invest on native technologies because it's really hard to build an outstanding app using hybrid frameworks.

You can build a lot of okay-ish apps with them and there are many situations where, from a business point of view, it's fine to have an okay-ish app.

For example, when you go to an event and you have an app for that event, you don't expect it to be wonderful.

You just want it not to crash, to be reliable.

But if you want to make an app that people will use every day and will enjoy using, then having a native approach will most likely be better.


That’s all for this email, thanks for reading it!

If you’ve enjoyed it, feel free to forward it
to your friends and colleagues 🙌

I wish you an amazing week!

❤️

Previous
Previous

How to mock any network call with URLProtocol

Next
Next

Bad practice: not using .isMultiple(of:)