The greatest iOS development tools, including websites, desktop and mobile apps, and back-end services.

A weekly update delivered right to your inbox. Sent once a week. No spam, not ever. Unsubscribe at any time.

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.

Sponsorship

The iOS Dev Tools audience includes some of the most engaged iOS Developers looking to find the best tools and services to help them build the next top app. If you've got something awesome to shout about that developers are going to love, then iOS Dev Tools is a great place to promote it. Learn more.

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!

Other Similar Tools

A Swift command line tool inspired by Make and Rake that helps you automate tasks in your projects. Sake centres around the Sakefile where you define your project tasks. The command line tool can generate a complete Xcode project so you can edit your Sakefile in Xcode with syntax highlighting and code autocompletion. Once you've created your Sakefile you can use Sake to list or execute any of your tasks from the command line. Sake is currently a work in progress on its way to version 1.0 and the creators are looking for help in the form of contributions.

A tool that gives you a command line interface to your Swift scripts. Beak can take a standard Swift file and then list and run any public global functions in it via a command line interface. It analyses your Swift file via SourceKit and finds all public and global functions, turning each into a runnable command while converting parameter names into command line flags. You can also use Beak to generate an Xcode project with all dependencies linked so you can edit your Swift file with full code completion.

A package manager that installs and runs Swift command line tools. Mint makes installing, running and distributing these tools much easier. It installs your tools via Swift Package Manager and globally installs and caches builds by version on demand. You can easily run the latest version or a specific version of a tool, or even use different versions of a tool side by side. Due to its use of Swift Package Manger for building tools, any tool that currently supports SPM automatically supports installing and running with Mint.

A command line tool that automates the creation and management of Xcode projects. Struct turns your Xcode project into a build artefact by letting you quickly and continuously regenerate it from a YAML or JSON spec file. You can create your first spec file by migrating an existing Xcode project ready to be customised and regenerated. Struct makes it easy to have multiple variants of a project with the ability to add additional source files and resources. Great for whitelabelling and multiple distribution channels.

A Swift based command line tool that lets you quickly try out any Swift pod or framework in a playground. Test Drive is ideal for testing a pod or framework without having to modify your project. You can also try out multiple pods and frameworks at once. You just have to run a single command with the name of a pod, or the URL to a Git repository, and Test Drive will create a playground for you. There are also options to choose a specific pod version, git branch, or platform.

A command line tool that helps find common xib and storyboard-related problems in your Xcode projects without running your app or writing unit tests. IBAnalyzer starts by parsing all .xib, .storyboard and .swift files in a folder and then uses this data to generate warnings. It can find unimplemented outlets and actions in classes, as well as @IBOutlets and @IBActions defined in code but not connected to from nibs. IBAnalyzer is open source and extensible so you can create new warnings by creating new types that conform to the Analyzer protocol.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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).

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.

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.

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.

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!

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.

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.

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.