iOS Dev Tools

The greatest iOS development tools, including websites, desktop and mobile apps, and back-end services.
Updated daily by Adam Swinden.

If you have any suggestions for tools that you would like to see added to the list, please let me know by email, Twitter or Facebook.

Sponsor

Agent.ai enables app developers to respond to their users faster, 24/7/365, while helping service agents become more productive. Our solution leverages a host of features, most importantly artificial intelligence, designed to improve engagement, customer retention and expedite the time it takes for customers to get resolutions to their questions. In other words, we help apps provide faster support while reducing costs, and improving customer satisfaction.

Sponsor iOS Dev Tools.

TotalTerminal

A Terminal.app plugin that provides persistent Visor Window which slides down when you press a hot-key.

Other Similar Tools

Eject

A command line tool for converting Interface Builder files into Swift layout code. Eject aims to help when Interface Builder reaches its limits and starts getting in the way, by providing an easy path to transition to full programatic view layout. It looks through xib files and generates code based on the views and layout constraints it finds, using user labels for variable names. The output should be good quality Swift code ready to be pasted into the loadView method. You can also use Eject for free on the web as it is hosted as a Vapor application.

needless

A simple command line tool that can help you write better, more concise Swift APIs by removing needless words from function names. needless can process text from STDIN or files specified in a list of paths and will attempt to apply the Swift API Design Guidelines by printing out function names with needless words such as repeated type information and will even suggest an alternative. You can also add it as an Xcode build phase that will generate warnings to highlight wordy functions in the source files.

pxctest

A command line tool that lets you execute tests in parallel on multiple iOS simulators. pxctest is simple to install using Homebrew, and once you've compiled your project for testing, you can run a single command to execute your tests on as many simulators as you need, including different devices and iOS versions. There are a number of different options to customise how your tests are run, and you can even provide a file that is copied to the simulator's Preferences plist to change the state of the simulator settings.

json2swift

A macOS command line tool that generates Swift data model code based on JSON data. json2swift generates immutable Swift struct definitions along with thread-safe initialisers to create structs from JSON data. It performs sophisticated type inference to detect data types such as URLs and dates. For example, if you add a date format hint to your JSON, it will correctly add string to date parsing. It also aims to provide the correct optionality, making properties non-optional unless 'null' is found in the JSON.

xcute

A simple Python command line tool for understanding Xcode project structures and configurations. xcute will inspect an Xcode project file and print a table detailing each of the Xcode schemes including SDK and configuration. You can also provide flags to get details about any build setting across all your schemes, which could be useful for quickly checking provisioning settings, for example. It can also export CI config files using a built-in template for Travis or any other custom template you create.

Depcheck

A dependency analyser tool for Swift projects. Depcheck reports dependencies per class, allowing you to easily detect classes that have too many dependencies. It can also report how many dependants a class have making it easy to spot the most over-used and under-used classes. It supports Xcode projects and workspaces so works great if you are using cocoapods.

imsticker

A small command line tool that makes it quick and easy to create an Xcode project for an iOS 10 sticker pack. imsticker saves you a lot of clicks by giving your a single command to automate the entire process of creating an Xcode project, adding sticker images including animated sequences, and creating all the required icons. You just need to prepare your sticker images and large app icon in a folder, and imsticker will create the project ready for you to open, run and submit to the App Store.

SourceKitten

A framework and command line tool for interacting with SourceKit. SourceKitten links and communicates with sourcekitd.framework to parse the Swift AST, extract comment docs for Swift or Objective-C projects, get syntax data for a Swift file and more. You can use SourceKitten to generate full code completion details, print Swift docs as JSON or Objective-C docs as XML, print Swift structure information as JSON and print Swift syntax information as JSON.

xcpretty

A command line tool for formatting xcodebuild output. xcpretty pretty aims to be a fast and flexible formatter that dramatically improves the readability of xcodebuild output. It is designed to be piped with xcodebuild and thus keeping 100% compatibility with it. It's even a bit faster than xcodebuild itself, since it saves your terminal some prints. There are a few different formats to choose from including simple, Spec style, and Test-Anything-Protocol compatible. You can also specify reporters to create JUnit-Style XML or simple HTML reports, or create your own custom formatters.

TLDR pages

A collection of simplified and community-driven man pages for various terminal commands. TLDR pages aims to be an ever-growing collection of simplified "show me the common usages" man pages for the most common UNIX, Linux, OSX and SunOS commands. There are currently over 240 pages, each focussing on the most common usages, aimed at new or rusty command-line users. They don't explain general UNIX concepts and introduce examples gradually. But, of course, they don't cover everything; that's what man is for!

Swiftline

A set of tools to help you create command line applications in Swift. Swiftline is comprised of several tools including: Colorize, which adds colours and styles to strings before writing them to the terminal; Ask, Choose and Agree, for creating different kinds of prompts to get information from the user; Run, a quick way to run an external command and read its standard output and standard error; Env, to read and write environment variables; and Args, which parses command line arguments and return a hash of the passed flags.

Blade

A command line tool for making a better asset workflow for iOS developers. Blade will automatically build and rebuild Xcode image catalogs for app icons, universal images, and more using a Bladefile that specifies all your resources. It can automatically set up your Bladefile based on your existing Xcode project or you can use templates of asset catalogs which it will later populate. Once configured, a single command will generate all of the images needed within each image catalog.

Buck

A command line build system developed and used by the engineers at Facebook. Buck encourages the creation of small, reusable modules consisting of code and resources which are built in parallel to take advantage of multiple cores on your machine. It also reduces incremental build times by keeping track of unchanged modules so that the minimal set of modules is rebuilt. Buck integrates with Xcode and will generate all the configuration files it needs to work with your project by loading the iOS template.

CommandLine

A pure Swift library for creating command-line interfaces. CommandLine gives you all the features you need to simplify creating command line tools in Swift. This includes automatically generated usage/help messages, supports for all common flag styles (string, bool, counter, double, etc.), intelligent handling of negative int & float arguments, locale-aware float parsing, type-safe Enum options, and just for fun, full emoji support (although this is obviously not recommended).

Synx

A command-line tool that reorganises your Xcode project folder to match your Xcode groups. If your project folder is an unwieldy mess of sub folders or a single folder containing all project files but your Xcode project is sorted neatly into groups, you can use Synx to quickly reorganise you project folder into shape. Although the default options will probably satisfy your needs, there are also options to also remove source files and image resources that are not referenced by your Xcode project and to exclude specific groups.

Cakebrew

An open source Mac app for Homebrew. Homebrew is a package manager for OS X which lets you install thousands of command-line applications that would require manual compilation, but it requires using the command line. Cakebrew makes using Homebrew much easier by providing a GUI for all your Homebrew tasks like installing, uninstalling, and updating formulae, and running Homebrew doctor to find problems.

Liftoff

A command line tool for creating and configuring iOS Xcode projects. If you run Liftoff on a directory with an existing Xcode project it will perform various actions to get your project in shape, such as changing indentation levels, turning on warnings, adding default .gitignore and .gitattributes files, and initializing a new git repo. If Liftoff can't find an Xcode project, it will create one for you. Liftoff is completely customisable (and open-source) and configurations can easily be shared.

objc-run

A shell script which compiles and executes Objective-C source code files from the command line. objc-run is really useful for quickly testing a piece of code or if you have a small programming task that you want to handle in Objective-C that doesn't justify setting up a complete Xcode project. It also integrates nicely with CocoaPods. objc-run has made Objective-C my new favourite scripting language!

Nomad

A collection of really useful command line utilities from Mattt Thompson. The collection consists of 5 tools, each named after a major city, covering tasks including automated administration of the Apple Dev Center, sending push notifications, generating passbook passes, verifying in app purchase receipts and distributing dev builds. The utilities are all open source on Github and are written as Ruby gems so can be run on a server as well.

iTerm 2

A very decent alternative to the Terminal app on Mac. It adds loads of fantastic features including search, autocomplete, countless configuration options, TotalTerminal/Visor style hot-key triggered slide in windows and a lot more. The best thing is, it's free and open-source on GitHub.

CocoaPods

The best way to manage library dependencies in Objective-C projects. You just need to add a list of dependencies to a 'PodFile' in your Xcode project, run 'pod install' and you're ready to go. The collection of libraries that CocoaPods knows about is absolutely massive and includes all the popular ones, but you can also contribute your own.