Avatar

brurberg.dev

Just another remote app developer

29.10.2018

My two cents on mobile development

The winter and spring of 2018 I wrote an app for work. You can read about my experience here. The app was developed with the help of React Native, it had a nice learning curve and I could be fairly quick on iterations. For those of you who don’t know what React Native is, the TL;DR is: A framework written by facebook, to write JavaScript using the JSX syntax to write native apps.

My initial experience was good, I could work fast and was able to do it alone. I had some experience with Javascript, since I had been working with it professionally the last 8 months. This was the reason I choose React Native to begin with. I had some experience with React and Javascript, so React Native felt like the natural step towards native development.

I had one anternaltive to React Native, and that would be Cordova. Cordova is a wrapper for a web application, so that it can be installed on a device and run like a native app. My issue with Cordova apps is: You will never get a good native feel, you can do a lot, but the native feel will suffer at some point. The main benefit with Cordova is; If you have a website that scale fine for mobile, you can now deliver it as an app.

I like the idea of React Native, you can write web-like code, and share a lot of business logic. React Native makes a lot of sense for a lot of people because of this. The quick development mentioned earlier is also a major benefit. But something has changed for me, and seemingly for a lot of other people on /r/reactnative. The reasons I abandoned hybrid apps for react native is starting to show themselves again.

The main issue I have with react native at the moment is: Updating usually breaks a lot of unexpected functions in my apps. Dependencies gets abandoned or the documentation is out of date even if its 2 weeks old. I guess this is not mainly a React Native problem, but more of a modern javascript problem. Javascript and the javascript community is moving so fast, its amazing to watch, but can be a pain to experience.

Recently I dipped my toes into native mobile development. Yeah, I know react native is also native, but now I’m talking swift. After working on a side project for a couple of weeks, I see I enjoy swift more. Yes its slower to develop, I dont have hot reloading and other niceties of React Native development, but still it feels better to me as a developer. I feel the developer experience is better with Swift then with React Native.

I read the Crisp.chat blog post, and it dawned on me. Im not alone in feeling this. I’ve tried to avoid Native languages, and get the quick wins. I still think this is the way to go for many people, but now I want to look more into iOS and Swift. It seems like it is the way to go for me. When reading the article by Crisp, I ignore the numbers of downloads and increase of users, what I do find interesting is the “time spent in app” numbers. They are growing with “tech upgrades”.

This autumn I attended React Native EU. It was an amazing experience and I learned a lot. I also talked to other developers, and we talked about what we thought was the future of react native. We all were comforted by the conference, there were a lot of attendees and high quality talkers. But we all agreed that we think React Native is like any other Javascript framework, and we agreed that React Native probably has around 5 years to live since it took off.

And approaching React Native like a Javascript framework makes sense. When using a Javascript framework its a smart idea to have a pretty good understanding of plain JS too. That way you can understand whats going on in the background, and what the framework is capable of and not. This is why I’m looking more into Swift and iOS development, I want to understand what React Native is trying to accomplish, and to know what to do the day React Native gets abandoned like other JS frameworks before it.

For myself I also learn Swift to stay viable in the future. React Native will probably not live forever, and not as long as Swift. Swift is Apples programming language, and we see it more and more on other platforms as well. And I would guess that Swift will stay around in some form for longer than React Native.