Keyhole provided iOS app consulting to an agricultural technology company, helping recover and deliver a Swift-based mobile application that was nearly complete but blocked from release. Following a contractor transition, the client lost access to critical infrastructure, including source control, cloud services, and the Apple Developer account, leaving the application difficult to deploy and maintain. The engagement focused on restoring ownership, stabilizing the application, and guiding it through production readiness.
Why Mobile App Deployment Stops So Many Developers (And How To Beat It)
Deploying a mobile app is often more difficult than building it. In this guide, we simplify the confusing, often poorly documented process of deploying a Flutter app for internal testing. Learn step-by-step how to distribute your app through Google Play Internal Release and Apple TestFlight, so real-world testers can start using your app sooner.
Web and Mobile Dev with Expo and Express
So, you want to develop a new website with spiffy apps on Android and iOS, and you want that website and your APIs to run in Node Express. It sounds like a lot of work to write the website in React (or Flutter or whatever the language de jour is), the Android app with Android Studio, and the iOS app with Xcode…
Automating Flutter Deployments: Part 3 – Configuring CircleCI
Recently, I’ve worked on automating some internal processes for building and releasing Flutter applications. Part of this effort included utilizing Fastlane with a Continuous Integration/Delivery platform to build and deploy the app. This blog post will outline the process I followed to run the build on CircleCI after I had configured Fastlane to build and deploy the application from my local machine.
Automating Flutter Deployments: Part 2 – Screenshots
Recently, I worked on automating some internal processes for building and releasing Flutter applications. Part of this work has involved integrating integration test runs and screenshots as part of the release and deployment process.
I wanted to be able to use the same set of tests to validate our code on Android and iOS devices without having to write large amounts of platform-specific code or configuration. These tests needed to be able to integrate with Fastlane, so they can be utilized by CI/CD. Specifically, this restricted setup runs using command line tools with no manual steps in Xcode or Android Studio, aside project level configuration.
This blog is Part 2 of a three-part series exploring automating Flutter CI/CD on CircleCI. Part 1 covered setting up Fastlane to build and deploy applications locally, this post outlines automating screenshot capture and test runs, and part 3 discusses configuring CircleCI to automate these processes.





