TL;DR
This article is very generic. I am not going to talk about any specific solution like React Native; rather, I will share my thoughts around the idea of a cross-platform solution. The trap of options and how to decide what to pick for your next MVP/Side project/Product.
The Plot
Imagine you are in 2012, a brand new iPhone 5 came, and Steve Jobs unveiled its revolutionary features. Everyone is excited to use this iPhone, and as a developer, you are eager to build native apps. You learned about XCode, installed it on a Mac, and started learning Objective C to build your first HelloWorld app. Life was pretty simple, right?
Now let's come back to the present; it's 2024, and now we have more than an adequate amount of options to build Native Apps. React Native, Flutter, Ionic, Capacitor, and etc.
All these technologies seem promising, and you are confused about picking from them because you don't want to end up choosing the wrong tool to build your product.
But the idea of cross-platform engineering is that as a developer, while building a product, you spend less time taking care of each platform separately and more time building logic for your business.
But we often find ourselves debating over these existing solutions and wind up doing nothing.
Picking the Tool that works for you
It's not about what is working for others but you.
If you are good at, let's say, Flutter, you should continue upscaling around it and eager to learn more about it.
In the software industry, everything changes rapidly. You never know; maybe the time I am writing this article. There are some nerds writing another JavaScript framework.
Nothing seems to be perfect
Every solution claims to solve certain problems, but it also has certain cons. So eventually, it's on you what to choose.
Let's understand via an example.
React Native renders UI natively, so your end-users likely can't find the difference while using the app. But at the same time, due to the async nature of it, sometimes it's limited, but it has come a long way with a new architecture.
Flutter, on the other hand, renders UI components on canvas, which is faster, but it doesn't render native UI components.
So what to pick?
Seeking for Job opportunities
As someone who is looking forward to building his/her career around this, you should always look at the number of jobs available. Let's take a step back and think which can help you in the long run.
The idea is not marrying a particular technology but being willing to give yourself a chance to explore something new.
In simple words, explore things and decide who is the best for your career and keep accumulating.
Building a Product
In my previous experiences of building a top-notch product, I realize it's a long-term process (feel free to disagree). You start with an MVP, and it's likely to be thrown out if it didn't work.
In this situation, you can be okay to pick anything you like. The idea is to build something faster so you can validate and iterate over it.
So be it anything.
Don't be in dilemma
If it's working for you than it doesn't matter whether it worked for others. At certain points, you may have to switch even multiple times, and that's totally fine. You have to start from somewhere and move faster so you can decide what is working for you.
Lastly, I would say technologies come and go, but the low-level mental model of yours stays the same so focusing on building a great understanding around cross-platform engineering will help you in the long run rather than juggling between what to pick.
If something makes you curious, it's a good thing, and you should iterate over it.
Thanks for reading this article; I just wanted to share my thoughts that worked for me. I hope you have gotten some sense out of it. If you have any questions/suggestions, please feel free to leave your thoughts in the comment sections.
You can reach out to me via X iponikar
Have a great time :)
Top comments (1)
I recently created a cross-platform app to read data from temperature loggers using the NFC antenna for Android and iOS and a NFC pad reader for Windows and macOS using Angular + .NET MAUI. The secret sauce is using HybridWebView from github.com/Eilon/MauiHybridWebView