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

Most developers debug their apps from logs generated by the application. If you've ever received bug or issue reports from users, you'll know they can be hard to replicate.

Bugfender is the simplest way to collect your app's usage data from real users on real devices. It's easy-to-use SDK can be setup in under 60 seconds, which sends logs to our online storage service. You can filter through logs, devices and even individual users to help identify issues, fix bugs and provide even better customer support.

Sponsor iOS Dev Tools.

appOwiz

An all-in-one tool for collecting user feedback, beta distribution, crash reporting and analytics. appOwiz provides drop-in SDKs for iOS, Android and Windows that give you a suite of beta testing features. In app bug and feedback reporting lets users identify mistakes and send their feedback in app including text, audio, and screen image and video captures. Built in crash reporting will also provide symbolicated crash logs. Reported bugs and crashes are accessible in the webpanel or can be forwarded to third party services like Bugzilla.

Other Similar Tools

Bluepill

A tool created by the developers at LinkedIn that lets you run iOS tests in parallel using multiple simulators. In its simplest form, Bluepilll will run your tests on 4 simulators in parallel, producing a JUnit report when the test run completes. It will automatically pack tests into groups with similar running time, and can run in headless mode to reduce memory consumption. You can also supply a config JSON file to customise how your tests are run, including options to specify how many simulators to run, which device to use, how to handle failures, output formatting, and more.

FBSimulatorControl

A Mac OS X library for managing, booting and interacting with multiple iOS Simulators simultaneously. FBSimulatorControl is built by the engineers at Facebook and can simultaneously launch iPhone, iPad, watchOS and tvOS simulators, making if perfect for running end-to-end tests. It can boot Simulators via Xcode's Simulator.app or by launching directly with CoreSimulator. Direct launch supports video recording and fetching screenshots and crashlogs.

snapdiff

An add-on tool for FBSnapshotTestCase that makes the output of failed UI tests much more readable without the need for expensive image diffing software. snapdiff will parse xcodebuild output, detect any failed snapshot tests, and generate human-consumable HTML output. This output can be stored locally so can be handled by your CI scripts. The HTML output includes each test name along with side-by-side comparison of the reference and result images, and optional debug information if the tool has found a problem.

FBSnapshotTestCase

A test case created by the engineers at Facebook for testing UI code. FBSnapshotTestCase takes a configured UIView or CALayer and uses the renderInContext: method to get an image snapshot of its contents. It compares this snapshot to a reference image stored in your source code repository and fails the test if the two images don't match. A descriptive error message is printed to the console on failure along with a one-line command to see an image diff if you have Kaleidoscope installed.

BoardingBot

A service that creates a beta testing website for your app. BoardingBot will create a site using the information and screenshots taken from iTunes Connect. You can also optionally enable BoardingBot to create a form page on your site for users to opt-in to beta testing and request a TestFlight invitation. You can also link a Facebook App Page, and BoardingBot will be able to answer chat messages from your Facebook fans and automatically send them TestFlight invitations if they provide their email address.

AcceptanceMark

A command line tool for automatically generating Acceptance Tests in Xcode. AcceptanceMark lets you quickly generate XCTextCase classes in Swift to test multiple inputs by creating simple Markdown tables that describe all the possible input values and the expected output values. The tool generates the code to execute a test runner with all the inputs and compares the outputs with the expected values, for each row of the table. You just have to write the test runner code needed to pass the input to your system and return the output.

Splitforce

An A/B testing service and drop-in SDK for iOS, Android and Unity apps. Splitforce lets you test different designs and features with specific user segments that you can control remotely from the online dashboard. Changes can be rolled out instantly without the need to recompile and resubmit to the App Store. You can also let Splitforce auto-optimise your A/B tests by adjusting the frequency of variations based on a number of factors such as tap-through rate, or you can segment your users based on any information you collect using the targeting API.

PinpointKit

An open-source iOS library in Swift that lets your testers and users send feedback with annotated screenshots and logs using a simple gesture. PinpointKit lets users add arrows, boxes, and text to screenshots to point out problems as well as blur out sensitive information, and include automatic, opt-in system log collection. There is no backend required as it just uses email to spend the generated screenshots and logs. PinpointKit is also extensible due to its protocol-oriented architecture that lets you create your own senders, log collectors and log viewers.

Breakout Room

A drop in SDK that lets you record and replay every user interaction including swipes, taps and even app crashes. Breakout Room lets you analyse your user experience by filtering sessions based on device type, session length, user events and dozens of other data points. It also integrates with Crashlytics and lets you replay every event leading to a crash. You have complete control over which elements of your app Breakout Room records, and it also works offline where recordings will be uploaded the next time the user is online.

Dependency CI

Automatic compliance testing for all of the dependencies in your application. Dependency CI checks the status, licenses and security of every library you depend upon as soon as you push. It will identify dependencies that are deprecated, unavailable, unmaintained or unlicensed early to help avoid potential issues. Dependency CI currently supports over 20 different package managers across several programming languages including Carthage and CocoaPods for iOS projects.

Quant-UX

An integrated usability tool to design, test and analyse interaction prototypes. Quant-UX lets you create interactive prototypes, test it with real users and analyse their behaviour. Use the visual editor to create your interactive prototypes in minutes without writing any code, including a rich palette of iOS buttons, screen transitions and animations. Once your design is ready, you can share a link with your testers you can test your prototype on their iPhone. User interaction during a test is recorded and analysed in real time and visualised in various charts and heat maps.

Koncept

A prototyping and usability testing tool for web and mobile apps. Koncept lets you create interactive prototypes using intuitive layout tools to add interactions, animations and gestures. You then decide which tasks you want to add to certain scenes, share the prototype with users and then start tracking accurate metrics on user behaviour, including task acceptance and completion rates, completion times, sessions and more. You can also view heat maps of each of you screens to view exactly where users are tapping.

Ship

A new issue tracking app and service for Mac and soon iOS. Ship is fully native with offline support so you can search for issues, create and run queries, view charts, file new issues and update existing issues while offline. When you come back online, your changes automatically sync back to the server. It also has Slack integration which will notify you whenever changes are made, or you can use the Python and REST APIs to automate common tasks and link Ship with other tools. Ship is currently free but they do plan to start charging later this year.

Dixie

An open source Objective-C testing framework from the developers at Skyscanner for altering object behaviours. Dixie provides a set of tools which developers can use to test their code, centred around the idea of creating chaos to test the worst case scenario. Examples of this could include: hijacking your app's localisation to simulate long strings or other unexpected text; inject mocked network responses so you don’t have to rely on real network communication; or injecting randomised properties to your data models to test your app's robustness.

Fakery

A Swift library for generating fake data. Once installed, Fakery can generate a huge range of different dummy data, including names, addresses and phone numbers, businesses, payment information, lorem ipsum, sports teams, email and web addresses, IP address and passwords. It's also quite powerful when it comes to generation of locale-specific data - it includes JSON files for more than 20 locales. Fakery is useful in all the cases when you need to use some dummy data for testing, population of database during development, etc.

scan

The latest edition to the fastlane suite of tools. scan makes it super easy to run tests of your iOS and Mac app. It does all the heavy lifting for you to run your tests. Running tests requires just a single command, the rest is handled for you with sensible defaults and a configurable Scanfile. It also offers integration with Travis and Slack and supports HTML, JSON and Unit reports. And in case you missed the news, fastlane is now part of Fabric.

BugClipper

A drop-in bug reporting and user feedback SDK for iOS apps. BugClipper lets your testers or users report issues directly from your app, with annotated screenshots, screen recordings and crash videos. You receive the bug reports with all the extra details you need including system information such as version, device type, network connectivity and more. BugClipper also provides an online dashboard which lets you manage all your apps in one place and monitor the issues in real time, collaborate with your team members and track progress.

AppFaqs

A drop-in SDK and service that lets you add native FAQs to your app. AppFaqs removes the need for app updates to change your FAQs, instead you just need to update your FAQ page on the AppFaqs site and it's automatically updated in your app. AppFaqs currently supports iOS 8+ in Objective-C and Swift but support for Mac and Android is coming soon. Pricing is a monthly subscription based on the number of FAQ views across an unlimited number of apps. AppFaqs is also offering 50% off forever for iOS Dev Tools readers.

XcodeServer API Docs

Unofficial documentation of the Xcode Server API. With Xcode 7, Apple introduced an API which allows you to integrate Xcode Server with your workflow. XcodeServer API Docs aims to fix the lack of documentation for the new API. Many of the endpoints are already fully documented in the interactive Apiary documentation with more to be added soon. Each endpoint includes an example request including parameters, headers and body; and an example response with HTTP status code and body.

SupportKit

A drop-in SDK that makes it easy to have conversations with your users. With SupportKit installed your users can reach out to you through an interface that looks and feels like the iOS Messages app. Messages from your users are sent to your e-mail inbox, CRM system, or your team's Slack channel. When you reply to your user with your platform of choice, SupportKit instantly delivers your message directly into your app with an optional push notification. You can also set properties for each user so you know exactly who you're talking to when they send you a message.

Testfire

An untethered bug reporting service for iOS and Android. Testfire lets your testers capture video with app logs and device details for every bug they find. Submitted bugs can include screen recording, gesture recording, last frame screenshots and screenshot annotations and will automatically include system or custom (Lumberjack, Logger, etc) log capture. Issue videos can then be replayed in the dashboard with synchronised log streaming to help you identify the bug. You can also add to the issue to one of several issue trackers using the integration with JIRA, GitHub, Pivotal Tracker, Trello and Fogbugz.

Ship.io

A continuous integration and deployment service purpose-built for native iOS and Android apps. Ship.io automates your build-test-deploy cycles with configurable jobs that run every time code is pushed to your GitHub or BitBucket repository. A job can contain many different steps including compiling and code signing the app using xctool, running tests in frameworks like XCTest, OCUnit, and UIAutomation, and custom shell scripts. You can also test on real devices through their AppThwack integration. When all tests pass you can deploy your app through HockeyApp or Crashlytics and notify your team in Slack or HipChat.

Buildasaur

An open-source Mac app that provides local and automatic testing of GitHub Pull Requests with Xcode Bots. Buildasaur syncs with GitHub so that whenever a Pull Request is created it will create a bot and perform an integration. The results of the integration are reported back to GitHub by changing the status of the latest commit and posting a comment in the Pull Request conversation. Buildasaur runs as a background Mac app, its configuration window goes away when you don't need it, but you can check sync status at any time from the menu bar.

XcodeCoverage

A tool that provides a simple way to generate reports of the code coverage of your Xcode project. Once XcodeCoverage is installed either manually or using CocoaPods, whenever you run your unit tests you can execute 'getcov' from the command line to generate the coverage report in either HTML or Cobertura XML. By default, XcodeCoverage excludes Apple's SDKs, but the exclusion rules can be customised. It also includes a script that you can add as a test post-action to prompt to run code coverage after running unit tests.

Helpshift

An in-app customer support platform for mobile apps. Helpshift comes in the form of a drop-in SDK that allows your users to start an in-app conversation to help resolve their issues. You can respond to your users using the Helpshift web app with your responses being delivered as push or in-app notifications and it makes it easy to provide support with canned responses, bulk actions, and automations.

Doorbell

A free drop-in SDK that allows your users to send in-app feedback. You have the option to send any feedback you receive to several popular Project Management Systems or Issue Trackers including Pivotal Tracker, Trello, GitHub, BitBucket, Jira, and more. All received feedback is automatically tagged using sentiment analysis and classified as positive or negative or you create your own tags to easily group messages. Doorbell can also instantly notify you when you receive new feedback by email or in several popular Group Chat services including HipChat and Slack.

Tattle-UI

A drop in library that provides a simple interface for allowing your testers to provide feedback in app. The Tattle-UI library adds a floating button on every screen that the tester can click whenever they spot an issue. The library then takes a snapshot of the current screen for the tester to annotate and the option to record an audio note. Everything is then packaged into an email that automatically includes system information ready for the tester to send.

Kiwi

A Behavior Driven Development library that aims to make tests simpler and more readable than what is possible with the bundled test framework. Tests (or rather specs) are written in Objective-C and run seamlessley within Xcode. Specs are comprised of a set of functions that allow blocks of code to be run at various times within the contexts of your tests, and expectations that are the language you use to verify your object behavior. Expectations use readable verbs such as should, shouldNot, beIdenticalTo, containString, matchPattern and loads more. Kiwi also supports mock objects to imitate classes or protocols, stubs to return canned responses on selectors or message patterns, and asynchronous testing using asynchronous expectations such as expectFutureValue and shouldEventually.

AppbotX

A new fully featured in-app support solution for iOS. AppbotX is provides a drop-in library that offers a number of support features including: localised in-app notifications for communicating with your users; in-app user feedback that automatically captures device information such as OS version, device type, memory usage, disk usage and if the device is jailbroken; in-app FAQs that can be updated on the AppbotX web portal; version notifications that alert users to new versions available to download and "What's New" text once they've updated; and review prompts that channel happy users to leave reviews and unhappy customers to send you feedback directly. All the libraries are 100% open-source and available on GitHub so you can customise the look and feel, tweak the components to fit into your app.

BlitFeedback

A bug and feedback reporting service for iOS and Android. BlitFeedback provides a drop-in SDK that allows a user to give feedback while using your app. Users can create and send voice memos, screenshots, screen video recordngs and even create live screencast sessions so you can follow along in realtime. Reports can also be automatically forwarded to Jira, Bugzilla, GitHub, Bitbucket, Pivotal or email.

Lookback

A really interesting testing tool that allows your test users to submit user experience feedback by just using the app. Once you've added the Lookback SDK to your app your test users will be given the option to record video and/or audio while they're using the app. The SDK records video from the front-facing camera while also tracking the screen and gestures. You can then view the captures with the slick Lookback web app - check out the demos to see for yourself. I can't think of a better or simpler way to collect test user feedback!

TestFlight

A free testing service for mobile developers, managers and testers. Includes over-the-air ad hoc app distribution, monitoring tester engagement, logging and crash reporting.

HockeyApp

A paid alternative to TestFlight. Provides crash reporting, user feedback, ad hoc app distribution and app analytics.