All Articles

The Non-Scalable Approach to Private Beta Testing

Photo by Toa Heftiba on Unsplash

Photo by Toa Heftiba on Unsplash


A few weeks ago I launched Poster 2.0 in favor of helping people to quickly discover the best wallpaper that fits them. It went well and actually much better than the previous launch, which mainly held on Product Hunt. This milestone couldn’t be separated from the people around me, especially folks that helped me to test the app and give some feedback through the private beta. In this post, I’ll share how I do things that don’t scale by running the private beta without any sort of automation and just straightforwardly execute what I need to do.

First of all, why do we need to perform private beta? Currently I’m a fan of building in public, which I continuously do because it’s fun to talk with people along the progress of making the product and growing it together. Putting myself out there, helping each other, and becoming a more authentic person were always be my desire. But there’re cases like Poster, which is a paid product; and people couldn’t try it before they buy. Having a private beta will introduce them the real usage of the app, and it’s not unusual that people on private beta will be the first few customers that buy the product.

Searching for Private Beta Testers

To date, I still believe the market for Poster is the creatives. Sounds not niche enough? At least when I search for people around me, I tend to look into whether or not they’re similar to me. Someone that lives between the intersection of tech and design. And Twitter is my most favorite place to hang out with the like-minded ones, so I went to it to see if there’re folks that will be interested to try Poster.

I DM’ed many people around my circle eventually. But note that I didn’t use any template whatsoever. I believe 1-on-1 interaction is crucial at this phase, and it must be as authentic as you can be. It’s not only to make your process smoother, but also to have a long-lasting and mutual relationship. Remember that those people don’t only matter for this moment, but also later. The result is somehow expected; some didn’t answer, some answered without any interest at all, and some were curious to try. I just made sure that I’m truly a human to them.

It took several days for me to gather them around (read: patient). Some folks preferred email as the way to contact them, and some others preferred other platforms like Twitter DM or Telegram, which are also okay. Make the process easy for them was the main priority. So don’t worry about grouping them into one channel, which will slow you down in the long run.

The Unscalable Private Beta Process

I couldn’t find a common tool that people usually use to perform private beta testing on macOS platform. There’s TestFlight for iOS, but I don’t know why Apple doesn’t have such a great tool for macOS. Time was continuously moving, and I didn’t want to disappoint folks that already gave their availability to test. Then I thought, it might be okay to just shut down Poster automatically after some time that I’ve decided up front. Because it’s a private beta, and you don’t want your app to run forever on the non-customer’s machine, right? So I chose a date, and intentionally put this code to Poster:

// Check time to make sure the app is still eligible for beta.
let expiringDateFormatter = DateFormatter()
expiringDateFormatter.dateFormat = "yyyy-MM-dd"
let expiringDate = "2018-08-31")
if Date() > expiringDate! {

And BOOM! 💥 I distributed the Poster app to the folks wherever they’re, and they looked happy. Some suggestions and feedback were made, iteration was continuously running, and the app became better and better. No one ever complained about these unscalable things that I did. The interesting thing was, someone couldn’t do the test in the time period that I’ve given. You must be guessed that the app couldn’t run afterward, right? That’s true! I talked that it’s expected, and it’s okay to not having time to do that. At that time, it was near my launch date; so I didn’t send a new release again.

Moral of the Story

Sometimes we just seek what’s hyped out there without questioning what we should do at any given time. I was lucky to have a chance to do the unusual, which was having a private beta session where there’s no dependency on outside tools; just some tools that I usually use. On the path ahead, I want to always learn to give some healthy constraints like “How can I do X without Y?” So there would be emerging paths or anything that might surprise me. Sometimes that’s good, sometimes that doesn’t. But having that mindset is the way to grow, and I can’t wait to have more of it.

That’s the way I’ve done it. What do you think? Do you have any better approach to do the private beta? Or at least just telling how do you perform it on your product? I’m more than happy to read all of those insights! Feel free to comment below or reach me whenever you feel appropriate.

Published 21 Sep 2018