I've been doing iOS development for a while. During that time, I've used a lot of different tools. Some of those tools changed over time, and some of them stayed in my toolbox for all those years. But no matter how long I use a tool, I always have the same expectation - it should make my life easier and get things done as fast as possible. Having that said, here is the list of tools I use at the beginning of 2021.
None of those tools are sponsored in any way, but the post contains affiliate links. If you buy any of these tools using the links down below, I will get something in return from the maker. If you don't like this, just search for those tools, and go to their websites yourself.
Of course, this is the obvious one. You might like or hate it, but it is necessary for any development for Apple platforms. I often compare Xcode to an adolescent teenager - sometimes it behaves civilized, and sometimes it has moods. The good thing is that usually (not you Xcode 12.3), each new version is getting better and better.
Dev Cleaner (Free)
When you connect a device with a new version of iOS, iPadOS, watchOS, and tvOS to Xcode, it downloads the device support files. Each of those files can take gigabytes of storage. Over time they accumulate on your disc taking valuable storage space. Because of this, quarterly, I delete old supporting files using Dev Cleaner. It scans Xcode's folders and finds all the things that can be deleted without breaking anything. Dev Cleaner is keeping my disk clean for over a year, and I never had any issues.
Sim Genie ($19.99)
The Sim Genie is a new app. It was released in 2020, but it is a must-have for anyone who runs their apps on the Simulators. It exposes many hidden or inconvenient features of a simulator in a compact menu.
The feature I love the most is the ability to open the App's content folder. Instead of figuring the paths out using a debugger, the Sim Genie exposes these folders right in a menu bar.
The Sim Genie is one of those apps that should be built into Xcode's toolchain.
This is my go-to tool when I need to draw a custom shape inside a UIView. It might feel like cheating, but when your deadline is around a corner, the last thing you want to think about is how to draw a freaking shape. Just draw whatever you need, and PaintCode will generate the code. Although the generated code is not perfect, it can be quite easily refactored and used in production.
PaintCode is not a tool I use daily, but it saved me a lot of time on a couple of occasions.
Yes, I use a GUI client for Git and deal with it 😎 The main reason I use Tower is convenience. I work on a project for a client where we heavily use rebase and submodules. Tower has outstanding support for those. There are two other features I like to mention: single-line staging and integration with GitHub.
Of course, you can achieve the same effects with other tools for free. But Tower has everything built-in and is convenient to use. It saves me time, and that why I use it daily.
Paw is probably the best native app to investigate and test Web APIs. I use it every time I had to consume a REST API. It has some time savers like support for multiple authentication standards or dynamic values. Dynamic values allow to take a response from one request and use it in another. For example, you can send an authentication request to get a user token and use returned token right away in another request. Also from version 3.2, it has support for GraphQL.
Paw is not cheap but, in my opinion, worth it. If this is too much for your budget, you can wait and grab it discounted or even for free. Just watch for promotions 😉
iTerm 2 (Free)
iTerm is my terminal of choice. I maybe use 1% of all the features, but I still prefer it over the macOS Terminal app. I can't explain why, but I feel more comfortable using iTerm.
If you are interested in my iTerm and shell configurations, please check out my dotfiles.
- macOS Terminal
If you are writing your apps in Swift, this tool is a must-have. Especially when you are working with other developers. Why? Because SwiftLint analyzes your code and ensures it is meeting all the standards and guidelines. It has dozens of built-in rules which can be customized. For example, let's say you don't want to have the
force casting in your code. You can enable the
force_cast rule in SwiftLint. Now, whenever you or someone else uses the
force casting SwiftLint will trigger an error.
Fastlane is another must-have tool, especially when you are responsible for delivering the application either to AppStore or to the testers. On the Fastlane website, you can read that it is the easiest way to build and release mobile apps. After a couple of years, I can say this statement is not an exaggeration.
Fastlane has many tools automating the configuration, build process, testing, and even sending an app with all the meta-information to iTunes Connect.
So, next time you start working on a new project, please invest time into writing the Fastlane script. You will thank me later 😉
- Various custom build scripts
- Tools built into the CI Services
Bitrise is a Continues Integration (CI) Service that allows building and distributing mobile applications. Although the number of options and integrations is overwhelming, the entire setup process is super easy and intuitive.
The best feature about Bitrise is that it allows you to use the Beta versions of Xcode in your build process. It is super useful after WWDC when I want to distribute an app with new iOS features to testers.
I've been using Bitrise personally and with my clients since late 2016, and it never let me down.
That's it. Those are my essentials tools I use as the iOS Developer. I'm curious, what are yours? Please share them in the comments.
Image credits: Barn Images.