Inside Photoroom
10 Tools to Ship an iOS App in 2 Weeks
Matthieu Rouif
Matthieu RouifMarch 9, 2019

I just launched BG (now called Photoroom). It’s an image assistant which understands your images, and we believe it will change the way people do image editing! It starts with a few simple tasks, such as erasing background or objects and selecting objects instead of layers that never made sense to anyone. The machine learning runs locally on the device's GPU and is crazy fast! It even works real-time on video with the iPhone XS neural engine. But enough about the app…

It took two weeks to build the first version of BG, from the time we wrote the first line of code on GitHub until it was released on the App Store. You can work really fast — if you have the right tools! So if you’re new to mobile development, this post might help you.

Programming — the Classics

0.XCode: This goes without saying.

1.GitHub: You can’t do much without a versioning tool. Use any other competitor if you don’t like the octocat.

2.Fastlane: Submit your apps effortlessly to the App Store with this mobile dev ops tool. Given the tools I used, I recommend this fastlane plugin for OneSky.

3.Cocoapods: Mobile Dependency Manager for Swift. Everyone is using it. Mostly, it allows you to import and manage libraries called “pods” for the following tools or from other developers. Most of the following tools are actually pods.

4.Firebase: Cloud service with Firebase is dead simple to set up. You can easily store your users account there. It also includes feature flagging, AB testing, crashlytics for stability, push notification. And it’s all mostly free.

Going Global

5.OneSky to localize text: I like OneSky because I never had a single compile bug with translations in 4 years (we used it at GoPro before). There is a collaboration system with commenting and versioning with translators. I recommend automating translations download and upload with fastlane. Also, add screenshots for context for translators. Thanks to fastlane, we were able to ship BG in 14 languages for just a few hundred bucks.

OneSky APIs are not perfect, and the website could be 10x faster. If you have something better for this one, please share it with me — I would be happy to try it!

6.Figma to easily localize design: Figma is to Sketch what Google Docs is to Word. It’s online with built-in collaboration and versioning. Being online first makes it easy to reuse private & public templates for free. For instance, here is a template to test and export iOS icons easily and another template to export 140 screenshots (14 languages and 2 iOS device formats I make public here).

The geniuses behind Figma made the concept of classes and instances central to the product. Then reusing components for multiple languages and screenshot size became dead simple.

I also used Figma to create the design of the app

Process Payment

7.RevenueCat is the new cool guy in town. I remember a few years when including in-app payment doubled the dev time of an app — not to mention subscription. RevenueCat is Stripe for mobile; it saves time. I was a bit skeptical at first, but they do all the heavy lifting for error handling and web reporting (you don’t have to wait 1 day anymore like on iTunes). Then you can also sync them with your analytics and CRM service.

Big bonus: It’s definitely great for an iOS app! When you go cross platform, I assume it gets amazing. Handling subscription across multiple platform (mobile and web) was a very big pain at GoPro.

App Store Page

Figma again. As mentioned earlier, Figma is the best tool today to easily localize in 14 languages for multiple screens. Link to my template here.

8.Mojo: Video Preview & Onboarding. Mojo is an amazing app to create professional-looking stories on Instagram. It turns out preview and onboarding are not far from a story, and you can use Mojo for your app. You can create beautiful motion design for your app preview. They even have an iPhone frame where you can paste a screencast of your app in action.

Tip 1: Show touch interaction using a Touch Visualiser pod like this one.

Tip 2: My app preview (you can see it here) was rejected on the second review because it was using an iPhone frame template from Mojo. You might also have to re-encode the video to match iTunes format (Mojo has a bug with the audio track).

Tip 3: For the onboarding, I used one Mojo story per page and a UIPageViewController. I am very happy with the result.

BG onboarding made with a simple UIPageViewController and videos from Mojo app

Knowing your Customers

9.Amplitude for analytics: Amplitude is by far the best user-oriented analytics tool. If you’re serious about understanding your users, it’s a no brainer. It optimizes around retention, funnels and active users — which are the only metrics that matter for a user-centered company. Mixpanel is quite similar, but more focused on big cross-platform companies. I have also tried Localytics, but it’s really a CRM tool, and the analytics part is just marketing to say they are a turn-key solution.

10.Intercom for talking to your users: The #1 rule about building a great product is to talk to your customers. Amplitude gives you a quantitative overview; Intercom gives a qualitative overview. A lot of apps use email for feedback, but it’s way too formal, and email is still a pain on mobile. You want to create an environment where feedback is as casual as possible to get the most honest feedback. Since nothing beats a chat interface, Intercom is the best tool here. Intercom is not a mobile-first tool, though; a lot of features come from a web-first approach. I wish you could create native surveys — for instance, move the widget around, suggest pre-written answers, etc.

Tip: Use the same user id (Vendor Identifier to respect privacy) for Amplitude, Intercom and RevenueCat. Then you’ll be able to segment users like paying or very active users in Amplitude and RevenueCat and talk to them in Intercom.

2023 Edit: since the launch we moved to a new localization service, lokalise.com. It's much faster and has cleaner APIs

Thanks for reading! I hope you find one or more of these tools helpful. Also, feel free to share the word by clapping — and I would appreciate it if you give Photoroom a try. You can download it here.

Matthieu Rouif
Matthieu RouifCo-Founder and CEO

Keep reading

From around the world to Photoroom: How we attract and nurture global talent
Profile Picture of Matthieu Rouif
Matthieu Rouif
Redesigning an Android UI used by millions
Aurelien Hubert
Make stable diffusion up to 100% faster with Memory Efficient Attention
Matthieu Toulemont
Mutagen tutorial: syncing files easily with a remote server
Eliot Andres
4 times faster image segmentation with TRTorch
Matthieu Toulemont
How we automated our changelog thanks to ChatGPT
Jeremy Benaim
Core ML performance benchmark iPhone 14 (2022)
Florian Denis
Improving the Loading Experience in SwiftUI
Vincent Pradeilles
How we divided our server latency by 3 by switching from T4 GPUs to A10g
Matthieu Toulemont
Making stable diffusion 25% faster using TensorRT
David Briand