By Todd Burner, Developer Advocate
In this series, we feature customers that have used our platform in an innovative way. For this installment, we chatted with freelancer and indie app developer Levi Bostian, who uses Fabric and fastlane to scale his one-person development shop.
Levi Bostian is a native Android and iOS app developer from Cedar Rapids, Iowa, who spends his days building apps for a rotating set of external clients. As a one-man app development shop, he needs to set-up a streamlined development process so he can focus his attention on client work without being bogged down with tedious tasks. But since Levi is extremely busy running his business, he doesn’t have much time to learn complicated new tools. Let’s learn more about Levi, his work, and his experience streamlining his development process.
What types of apps do you work on?
"I am a freelancer building native Android and iOS apps with Node.js APIs for startups. I’m also an indie developer building my own apps like Your Circle, a virtual support group app for cancer patients. In the past, I have built social media, mobile banking, beauty, manufacturing, and music streaming apps as well as apps that connect to Arduinos. I have also worked with Google, Salesforce, Jack Henry and Associates, and a dozen startups on their apps. I love the variety of apps I get to work on."
What challenges have you run into as a freelance developer?
"Because I work with external clients, I distribute a lot of builds for many separate apps. My biggest pain point has been distributing beta apps as I make incremental changes and add testers. Every time I need to beta test a new build, I have to update the provisioning profile, update beta testing devices, build and sign the app and then distribute it - which is a lot of steps. This gets repetitive and is very error prone especially since I don’t have access to the users’ devices for troubleshooting. I need to get everything right the first time."
Levi was looking for a way to automate the distribution of these daily beta builds to each of his clients. For a while, he tried to script the signing and distribution steps on his own, but it required too much maintenance to keep up and running. After talking to some friends, he learned about fastlane. fastlane is an open source toolset that automates app deployment. In other words, it does the heavy lifting of streamlining code signing, distribution, and more. While Levi was already using Fabric to distribute beta builds and monitor app stability, he decided to try using fastlane to speed up distribution of his native Android and iOS apps to his external customers.
When did you first start using fastlane?
“I was using Crashlytics Beta, which is part of the Fabric platform, for my Android and iOS beta testing because it makes adding new testers and managing versions very easy. I had been manually uploading builds using the Fabric plugin, but with my business growing, I also needed a way to automate the build, signing and deployment process. It was getting really hard to manage all of the provisioning profiles and devices registered to each app.
After many headaches with code signing, I decided I was going to get fastlane setup and I did. Whoa! It handles the code signing and building steps and also lets me automate the submission of the beta app after those are done. It saves me tons of time, which I can now use to focus on building apps! I’m so glad I picked it up!”
What was your initial reaction and experience?
“I was blown away by how easy it was to get up and running. The documentation on GitHub is very thorough and you can generate everything you need on the Fabric site. The first time I ran 'fastlane run crashlytics' it distributed my app with a few simple inputs. That’s when I knew I had found something great!"
Growing & scaling with fastlane
Now that Levi has used fastlane in more than 10 shipped projects, he's uncovered new, creative ways to use our toolset to scale his business and make working with external clients easier.
Now that you’ve been using fastlane for 8 months, how has it impacted your development process?
“It’s been saving me so much time. I’ve been able to take on more work and do more side projects. I love it! And in addition to distributing my beta apps, I’ve been gradually adopting other fastlane tools too.
For example, I just started using match. Match saves me the headache of creating and syncing a huge amount of provisioning profiles. I really dislike dealing with those manually and using match in fastlane to manage all your apps, devices, certs, profiles all via a git repo is magic. I want to give fastlane a big kiss for all it does for me there.
I’m also delighted by how I can configure fastlane to be a hands free build system. I have my iOS and Android Fastfiles setup with parameters so that when I run a fastlane action, it doesn't require any work on my end. It just runs in the background and does all the hard work for me. I can spend my time working on features instead!”
Did anything else about fastlane surprise you?
“The amount of Android support. Initially, my friend told me it was just for iOS but after poking around, I realized I can do so many things with it in Android too! Outside of distributing betas, I’m able to manage Play Store metadata and APK uploads and I even use it to run gradle tasks. I use it for complex tasks, such as building versions of my app via gradle and releasing those builds to Crashlytics, as well as simple tasks, such as running gradle clean. It’s much easier to type "fastlane install" rather than "./gradlew installDevelopmentDebug."
What resources do you use to get help with fastlane?
“There is a very active GitHub community for support and bugs. I’ve thought about contributing code to the project as well, but fastlane has everything that I need at the moment. When the time comes, I will make sure to do so - and I would be happy to be a part of it. The product is so rock solid and it would be an honor to help out.”
By using fastlane and Fabric together, Levi has been able to successfully scale his business without needing to hire additional help. He’s quickly become a power user of fastlane and wants to explore the many more fastlane tools.
How has your use of Fabric & fastlane evolved over time?
“I started by only using Fabric to distribute beta builds, then added fastlane into the mix. Now, I’ve been gradually adding a bunch of other fastlane tools to my flow. I use match for iOS and the gradle action heavily for Android.
Today, all projects that I build (or apps that I make some updates to) I install fastlane right away. I distribute 5 - 8 beta releases a week for both (Android and iOS) apps. By using fastlane in conjunction with Crashlytics Beta, I have way fewer headaches because I have the fastfile fully configured to ask for no input. One command and within 3 - 8 minutes a build is out to my client.
One of my products I mentioned earlier, Your Circle, is a white labeled app. All of its builds share the same code base with nice theming added to each. I have fastlane setup so that I can build and release updates to all of the white labeled apps with 1 command. Plus, I use fastlane to generate all of the separate icons for each white labeled app target. So awesome! All commands, certificates, list of devices, synced via Git with the project. I have no idea what I would have done if I didn’t have fastlane to distribute this app.
Since adding fastlane into my workflow, my client relationships have greatly improved because I’m able to sync everything I need into my git repo so that it’s contained in the project. This helps me keep track of my code and metadata in the same place, makes it easier to communicate updates to clients, and speeds up releases.”
Are you thinking about trying any other fastlane tools?
“Taking screenshots for the app stores is something I hope to try soon. I plan to set up fastlane up to a CI so it can automatically take screenshots for me in the background and make it a hands-off process. I’m excited about the potential there.”
What advice would you give to new fastlane users?
“Come into fastlane with an idea of what you want the toolset to do for you. Do not get overwhelmed by the dozens of plugins and actions it provides, come in with a game plan. If that is to sync your provisioning profiles with your team, start there. It's easy to add to your configuration at any time, but just start with one problem to solve and get to it.”