I made an app to solve my own problem. It was not profit oriented. Took ~4 weeks as a side project. Apple rejected it. I decided to write up the details behind it, to bring it to a close.
How did the app provide value?
This question was not important to me in the first place. The habit of writing down the name of a person I meet, was not new to me. I used Evernote or some other note-taking tool. And turning my use-case into an app was the simplest idea for my next product I could think of.
My goals were:
- Start and finish a new side-project in a few weeks.
- Add a react-native based app to my portfolio.
- Build momentum (← most important) by finishing another product beside react-iban and openform.
A short list of what it took to (not) launch an app in the Apple App Store.
- Come up with an idea.
- Decide on the "design style". Because I dont have much (if any real) experience designing apps, I selected a rather minimalistic approach.
- Look at other apps with a similiar user-flow and collect inspiration.
- Sketch 10 artboards for different views or view states. This results in roughly 1 intro/tutorial view. 1 main list with empty state. 1 main form for user input. 1 sidebar with the menu. 1 additional view to buy a premium plan. 1 more view for legal stuff. You can download the sketch file here.
- Sketch the app icon.
- Dig down the rabit-hole of RN animations and decide to just use LayoutAnimation.
- Build a small API to save users and their backups.
- Implement a password-less login via email (hello slack magic link).
- Deploy the API to Heroku.
- Build the views and components = turning the 10 artboards into a usable app.
- A few days later, realize that your style is shit when using it on a real device. I had to re-make the toolbar and ended up with a blur-effect.
- Integrate in-app purchases for the Premium plan. Users should be able to buy a premium plan (not on a recurring base). This means filling out forms in itunes-connect.
- Find out about the quirks to build/archive and upload apps to the App Store.
- Build several test-flight versions and deploy it to test users.
- Pay $99 to join the Apple developer program to be able to use itunes-connect (thats the way to mange app-related stuff in the App Store). Yes you have to buy it before you can give your app to the review.
- Fill out several tax related forms and contracts with Apple.
- Add the app in itunes-connect and fill out all necessary information, like a description, promotion texts, available translations, the price for the app, etc. All that you can read about an app in the App Store.
- Sketch the landing page.
- Build the landing page in HTML and CSS. Deploy it with a one-click solution like netlify.
- Come up with copy-text for the landing page. Also make fancy screenhots for the App Store and the page.
- Setup basic legal texts like imprint (Germany only), disclaimer, privacy-policy and terms.
- Upload the app to the Apple Review. In case you dont know what that is: Apple reviews all apps that are listed in the App Store. They try to find bugs and can reject the app if you dont comply with their review guidelines. You then can fix the issues they found and start the review again.
Phew! And then...
Apple rejected the app because of "4.2 Minimum Functionality". Sadly I did not know that this is possible. But that is not where I stopped. I tried to trick the reviewer by adding example content into the app, so that it looks more alive on first install. Also made that the cloud backup menu-item is visible even if the user has no premium bought, to make clear that there is one more hidden feature (if anyone skipped the premium feature text..).
Second try and got rejected again for the same reason.
This is also the point when I decided that the project will end. I'm a little bit salty about that, because I wanted to see the app in the App Store ;)
Have a look at 3 screenshots:
- Intro views for users, only rendered once.
- Main list with the connections of the user.
- Fuzzy search to find them.
- An add-form to input new connections.
- Colors to personalize.
- Push notifications to learn the names.
- Backup of the data, (if on the Premium plan).
- Password-less login via email (to be able to retrieve backups).
- Device-based encryption before they send their data to the cloud.
- Also implicit stuff like the menu views, an empty list state and the sidebar.
- Price of 0€ for the base app, 1 year Premium for € 4,49 (depending on the location, Apple decides that based on pricing tiers). The in-app purchase was not recurring.
What I learned
- Less is not always more. In this case other features would lead to the real success – that feels strange, because less features often leads to a product shipped faster.
- It is still an incredible amount of work to release the simplest iOS app - you have been warned now.
- I will not build a side-project or product based on iOS (nor Android) in the near future. The feedback cycle is way to slow. And the App Store feels like its in the way of fast iterations.
Nevertheless I am happy to put in all the work. That is because the project finished in less than 4 weeks on the side(!) and did not take ages (which is a big problem for side-projects). It was really fun and I learned a lot new stuff building React-Native apps.
Most important for me is that I gained a huge amount of momentum, that will now translate into the next project. I shipped every day from April 3rd until April 28th (only this app) and made that into a habit. You can read the history on the project todo page.
If you have any feedback, please tell me on Twitter :)