Tales of a first time iOS (/React Native) app developer
Last week I launched my first app on the App Store. Pinx isn’t much; it provides an alternative UI for exploring your pins and doesn’t do much more besides. But never the less I’m super proud. Here is the back story…
Over the past ten years I’ve built stack of marketing sites, pulling in the odd freelancer where required. Since 2015, most of my work has focused on web apps, including projects for household names like Casillero Del Diablo and ITV.
In 2016, around a third of my income came from working on mobile apps these were a mixture of iOS apps built by subcontractors (including a large iOS app for Pearson International) and a few cross-platform Cordova Apps, mostly built by me. Around a further third of my income came from web-apps, mostly built on React or Angular.
I’m not great at analysing my income, but it feels like making a living from marketing sites is proving difficult, so I’m increasingly dependent on developing web and mobile apps. To facilitate this growth, earlier this year I decided it was time to venture into the world of developing consumer apps in order that I could:
- Build something great, if and when the idea comes.
- Offer this service to clients, with full knowledge of the development process.
To kick things off I put some rules in place:
- It doesn’t need to make money.
- It should be as simple as possible.
- It only needs to work on iOS.
- There should be no server to maintain after it's launched.
- It shouldn’t take longer than two weeks to build.
- No outsourcing or other financial costs except for the design.
- React Native all the way.
Quite quickly I decided to build a Pinterest client. IMHO Pinterest has a good API, but their app could be improved; and a simpler UI would be an attractive proposition for users who Pin stuff on their desktop but want to be able to have access to those Pins remotely ("hey kitchen designer / hairdresser / shop assistant here are a few things I've pinned").
Over the course of around 42 hours I managed to learn React Native, and build a prototype which I sent over to Rachael Lopes, a fine UI designer, perfect for the project. I gave him a modest budget and asked him to do what he could. I didn’t want any options, just a nice design that reflected Apple’s HIG with one eye on forthcoming design changes in iOS11. What I got back was much more polished (see the whole design concept over here).
The full implementation of the design would have taken quite a while, so – given the aims of the project – I decided to scale the design back a bit, but I'm really comfortable with the compromise. Below you can see the wireframes, Raphael's designs and my implementation.
I managed to implement most of the design and ship the app in a further 36 hours. So the total build time was 76 hours over the course of about 4 months. It’s a bit over my original target, but I’m okay with that; as I learned stacks about the design, development and launch process and didn't go bankrupt .
Here’s a few bits I learned along the way:
- React Native makes building apps for front-end developers really easy. If you know React, you really should be exploring this. I didn’t go down this route, but I expect Create React Native App, makes it even easier.
- React Native is brilliant, but is constantly changing. Pinx was built using 0.43. At the time of writing the latest version is 0.46, which has a significantly different development workflow.
- Be clear of your minimum viable product. If the app does well, I'll probably revisit Raphael's designs, but given the aims of the exercise, it made sense to ship the early without these features.
- When you’re building your first app; keep the risks and the expectations low. Presume you will make no money, and allocate your time, money and effort accordingly.