As I ponder App Store business models, my mind keeps coming back to this: making Snapthread free with a tasteful watermark in the corner, with an in-app purchase to permanently remove it. People who already paid for the app would be grandfathered in. Thoughts?
The Falcon Heavy launch ? was one of the most incredible things I’ve ever witnessed and I was able to watch in on my phone, in HD, through my AirPods, while snuggling my son to sleep. ?
iMovie hasn’t been updated for iPhone X. Also, I’m pretty sure it has to be using separate storyboards for iPhone and iPad, if it uses them at all. ?
Numbers
It’s been six days since I launched Snapthread 1.5, so I thought I’d share how it went in terms of downloads and revenue.
What I did differently
When I first launched Snapthread back in September, I did so with a blog post and a couple of tweets. Unsurprisingly, it did pretty poorly, with only a download or two per day. Right before Thanksgiving I decided to put it on sale for 99 cents which caused a modest bump in downloads for 4-5 days, but nothing spectacular.
Of course, Snapthread itself wasn’t particularly compelling at that point, since it only supported portrait photos and videos.
For version 1.5, I upped my game a little bit. I put together a new website, created new, more professional-looking screenshots, put together a press kit, set up a Search Ads Advanced campaign, tweeted about it, published a blog post, and e-mailed six media contacts. I also submitted the App Store Editorial form.
How it went
On Monday and Tuesday, several of my awesome Twitter acquaintances tweeted about Snapthread (some of whom have > 10,000 followers). On Wednesday, MacStories published a review. I was confused and excited when it continued to climb the charts in the Photo/Video category on Thursday, not realizing that another article had been published on iMore that morning. Snapthread’s ranking peaked at #108 before falling rapidly off the chart.
Snapthread was also posted to Product Hunt, but didn’t receive enough upvotes to trend.
Honestly, I still feel like a “nobody” in the iOS development world, so getting as much attention as I did for something I created was great fun. But did any of it translate into big downloads and revenue? Not really.
On the day the MacStories article was published, I made about $140. The next day, $103. Yesterday, $36.
What went wrong?
My gut feeling is that it’s just really, really hard to get noticed. Here are a few other guesses:
- The app just isn’t good enough.
- People don’t want to spend $2, or it doesn’t provide $2 worth of value.
- Some folks don’t like Live Photos, or don’t see any use for them.
- I didn’t e-mail enough people.
- I didn’t have any videos showing how the app works.
I also didn’t advertise on Facebook or anywhere else because I honestly can’t afford it. I threw a few bucks into a Search Ads campaign which has so far resulted in 1,319 impressions, 22 taps and 1 conversion.
What’s next?
Next, I keep working to make Snapthread so darn good that it can’t be ignored. I chose this life for fun, not profit, so I’m going to keep on having fun and hope that someday I’ll make a profit.
I honestly long for the days I can open up my Xcode projects on my iPad and edit them. A toddler won’t let you hide behind a laptop for long. It’s way easier to carry an iPad around the house and make a little progress whenever I can.
TIL that requesting an AVAsset for a video in a user’s library returns an AVURLAsset unless the video is slow motion, in which case it returns an AVComposition. Guess I should have done more testing with slo-mo videos!
Assumptions vs. Complexity
At one point in episode 112 of Under the Radar (Ideal vs. Pragmatic), Marco and David talk about a dilemma that developers sometimes face: the choice between making an assumption, and exploding complexity. I thought I’d write about some of the times I encountered that fork in the road while building Snapthread, and how I decided to handle it.
My first opportunity to explode complexity reared its head the moment I selected File —> New Project in Xcode. I was immediately presented with the option to use Core Data. I stared at the empty checkbox. Did I want to persist data in Snapthread? Should my users be able to save their projects in order to return to them later?
Data persistence adds a huge layer of complexity to even the simplest apps. If I had decided to let users save their projects, I would have had to save an enormous amount of information in order to later reconstruct a video. And what would happen when I made the app universal? People would expect their projects to sync. I’m writing this post in Writemator 1.0, which doesn’t yet sync via iCloud, and I already wish it did.
In the end, I assumed that Snapthread’s users could complete their work in a single, short app session. They would open Snapthread, throw together a quick video in a matter of minutes, save or share it, and move on. Of course with this approach, Snapthread will never be a pro-level video editor, but that’s fine with me. It saves me a lot of work, and further emphasizes that Snapthread is meant to be fast and casual.
I made two more assumptions later on in Snapthread’s development: 1) that once I positioned the app as a visual studio for Live Photos, people would primarily use it for Live Photos, and 2) that if users did merge standard videos, those videos would be taken with Apple devices. Scaling and translating videos to work in any of 5 possible aspect ratios requires a lot of conditional branching statements. Each possible orientation (portrait, upside down portrait, landscape home button right, landscape home button left, and then all of those options again for the front camera…) ends up needing different translation values in order to position the video correctly. By assuming that a video’s original aspect ratio and pixel dimensions fall within a narrow range of choices, I prevented that tangle of if-elses from becoming completely unmanageable.
Honestly, I think one of the only safe assumptions you can make in software development is that at some point, someone is going to use your product in a way you didn’t anticipate. You can then choose to either address those edge cases, or say “sorry, you’re out of luck.” For instance, apparently you can’t add a soundtrack from your music library in Snapthread if your phone is jailbroken. There’s nothing I can do about that, and if there was, I probably wouldn’t do it.
I also think that if faced with the choice between making an assumption and exploding complexity, you should almost always choose the former. Incorrect assumptions can often be remedied, but it’s hard to dial back complexity. Just look at all the extra crap Facebook has added to Messenger in the past few years. Even if they wanted to simplify the app again, it can’t be easy to tear all that stuff out.
Anyway, it’s something to think about. What are some assumptions you’ve made while developing your apps?
Snapthread on Product Hunt
Someone was kind enough to post Snapthread to Product Hunt, and upvotes are of course appreciated. One of the challenges of launching (or re-launching) an app is maintaining some kind of momentum. Without it, the app will have a difficult time climbing the charts or gaining any additional exposure. I’m sure Snapthread’s downloads will fall off a cliff, perhaps as soon as tomorrow, and will settle into a 1-2 sales per day rut. I’m hoping to stave off that inevitable decline for a few more days, if possible!
Snapthread on MacStories
MacStories Review of Snapthread
John Voorhees reviewed Snapthread over at MacStories, and it totally made my day.
Relatedly, for the first time in my life I feel comfortable telling people I meet that I make apps. “Independent app developer” is finally starting to roll off my tongue (and fingers) a little easier. Like, this is really happening…this is me…this is what I do. It just feels so darn cool, and also a bit surreal. Thank you to everyone who has offered kind words and encouragement over the past few years, as well as promoted my work. I wouldn’t be here, feeling cool, without you. ❤️
Woo Cow Time
Woo Cow Time: Day 1 (Belle B. Cooper)
I love me a good app origin story, and I particularly love when developers journal about their process/progress, so this post obviously hit a sweet spot for me. I was also impressed by how much Belle was able to accomplish in a single day!
(Also, that app name is just plain good.)
Snapthread 1.5
Snapthread 1.5 is now available! This update brings support for videos and Live Photos taken in landscape orientation. It also features a new icon and a number of small improvements designed to make the movie-creating process as fast, flexible, and simple as possible:
- You can now square-crop your videos and adjust the cropping area of individual clips.
- Your final video can be exported in any of the following aspect ratios: 3:4, 4:3, 9:16, 16:9, 1:1.
- Video clips in the opposite orientation of the one you selected will be letterboxed or pillarboxed by default. You can change this behavior on the new Settings screen.
- There is now an option to automatically save your video to your Photo Library when you tap the Share button.
- You can now 3D Touch a photo or video on the video selection screen to preview it before selecting it.
- You can now mute all of the clips at once from the music selection screen.
With this update, Snapthread becomes the best app for combining and sharing Live Photos. Personally, it has completely changed the way I think about and take Live Photos. I’m much more likely to keep a subpar photo now if the underlying video is good. And since Live Photos also capture the moment before I take the picture, I find myself mashing the shutter button while Charlie is saying something cute, knowing that I likely captured most, if not all of it.
Anyway, I hope you like the update and I’m looking forward to getting started on the iPad version in March!
Every once in awhile I have to fight off the urge to go through my blog and delete old posts that I consider stupid or poorly written. I have to remind myself that they’re all part of the journey; I’m a better writer now than I was four years ago, and a better programmer too.
Snapthread Roadmap
Landscape support is coming to Snapthread on Monday. It seems like such an obvious thing, and I’m sure anyone who hasn’t been following Snapthread’s development is wondering why on earth I didn’t support landscape videos to begin with. The truth is, this app seems to have taken on a life of its own, and has whisked me far away from the path of my original intentions. What started as an app to merge Snapchat videos is now on its way to becoming a complete video studio for Live Photos.
I didn’t anticipate that, but I’m excited. Really excited. To me, Snapthread 1.5 is really Snapthread 1.0. The beginning of a new app.
I have so many ideas for the future, but for the next point release I’m waffling between these two priorities: revamping the title card system, and making the app universal.
Currently, title cards are extremely boring and limited. However, they’re also not an essential feature, and the app still does something really useful without them. So, I’m leaning towards focusing on the iPad version for the time being. I’m also really hoping that I’ll generate enough revenue over the next few months to hire a designer to help me with some fun backgrounds for titles. Perhaps making the app universal would also boost sales and help fund that.
Anyway, here’s a list of features I think might be cool additions to Snapthread:
Planned before 2.0
- iPad support
- New and improved title cards (multiple title cards that can be rearranged, have fun backgrounds and fonts, etc.)
- For the initial view for video selection to be similar to Photos’ “Moments” tab, to make it easier to find what you’re looking for
Wishlist for the future
- Video filters
- Stickers maybe?
- Localization
- Ability to select a particular time range of background music
- A way to either manually auto-generate or perhaps have the app surprise you with a video based on a “moment” in your photo library. Similar to Photos’ “Memories” feature.
I’m committed to improving Snapthread as it’s become one of my own most frequently-used apps. I love making compilations of Live Photos and videos of Charlie to post on Instagram or send to my parents, who only get to see him in person a handful of times per year. I hope others will get as much enjoyment from it as I do, and will consider it $2 well spent.
I think I’m going to take the month of February off from programming, and focus on blogging, taking care of myself, and spending more quality time with my family. I’m looking forward to relaxing, writing, and chatting with you all via Twitter, e-mail, or Micro.blog.
My iPad Wishlist
Last month, I wrote about why my current MacBook Pro may be my last Mac. To summarize: even though I love the Mac, I really enjoy using iOS and am betting that in 3-4 years, when I’m ready to upgrade my computer, the new model of iPad Pro will be able to fit all of my computing needs. Yesterday, Ryan Christoffel over at MacStories wrote a post entitled “What I Wish the iPad Would Gain from the Mac.” He had some good ideas; I particularly agreed with his requests for multiple instances of the same app and persistent background privileges for apps. Here are some other things on my iPad wishlist:
Time Machine backups
Cloud backups are great and all, but who wants to put all their eggs in one basket? I sure don’t. That’s why I’d like to be able to backup my iPad by connecting it directly to an external hard drive. Sure, you can connect an iPad to your Mac and back it up that way…but if the point is to go Macless, then the iPad needs its own independent solution for creating physical backups.
Default apps, file handling, etc.
On my Mac, I have Safari set to automatically download files to my Desktop. I’d love an option in Safari for iOS to just download all files, no matter what type they are, to some designated folder in the Files app. These downloads should be displayed in a magical pane called a “download manager,” with fancy progress bars and “time remainings” and the whole kit and caboodle. Then, from Files, I should be able to tap on a file and it will automatically open in a default app of my choosing (unless I choose a different app from a menu of available apps).
Yes, I just described exactly how that works on a Mac.
Editing a file with multiple applications on iOS feels like a game of hot potato: the file gets passed from app to app, but nobody wants to own it and God forbid it “land” anywhere. Coming from the Mac, I like my files to have a home outside any one application. Files.app attempts to achieve this, but the existence of app-specific folders confuses things. It’s as if the transition from “let’s abstract away the file system” to “okay…I guess we can show you some of the files” was never quite completed. I don’t care about accessing hidden system files or anything, I just want Apple to firmly decide what mental model they want users to have when it comes to file management on iOS, and then use the basic principles of design to clearly communicate that.
iPad-only design paradigms/UI controls
Size classes aren’t good enough. There, I said it. The iPad needs more than just UISplitViewController: it needs more UI controls that are tailor-made for it. It needs its own coherent design language that is an extension of the iPhone’s: similar in spirit, but different. All of this needs to take into account the different ways that people use an iPad: on their lap with no hardware peripherals, with a keyboard, with an Apple Pencil or other stylus, etc.
Most importantly, Apple needs to lead the way on this with its own first party pro software. I think they should start with Logic, and charge a hefty price for it. That would be helpful.
And okay, can we talk about the fact that the 12.9″ iPad Pro has a resolution of 2048 x 2732 and still only shows, what, six app icons per home screen page? (an exaggeration, I know…but good grief!)
Multi-tasking improvements
I would love the ability to have some persistent “spaces” on my iPad of some kind. In other words, a set of side-by-side apps that always remained a pair no matter what. For instance, I’m imagining a space labeled “podcasting” that showed a recording app, a chat room app, and a slide-over with notes, or something. An app would be able to be associated with multiple spaces. I think this approach would fit a lot better with the way most people work.
Xcode, but probably not Xcode exactly
The last thing I really need in order to live the iPad Life is a way to develop apps on it. With wireless debugging now a reality, and a rumored API that would bring some cohesiveness to Mac and iOS development (I’m betting that’ll be Swift-only), a full-fledged IDE for iPad seems more possible and more likely than ever. I doubt it’ll support Objective C, and it’ll probably push Storyboards more than ever, and I’ll love it so so much.
Anyway, I’m pretty sure all of these things have been mentioned by other people a zillion times, but they’re also the things that are most important to me, personally. And that’s why you read this, right?
Making App Store screenshots involving a photo library is so hard. I always just use my own pictures, but they lack a certain polish. I could buy stock photos and put fake Live Photo badges on top them, but…ugh. I’d prefer a genuine screenshot, with real Live Photos.