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

Try Vettery and we'll connect you directly with thousands of companies looking for talented iOS devs.

Sponsor iOS Dev Tools.

Hopper

A reverse engineering tool for OS X, that lets you disassemble, decompile and debug your 32/64bits Intel Mac, Windows and iOS executables. A lot of what Hopper does goes straight over my head, but the feature list seems pretty powerful. It lets you extract procedural information such as basic blocks and local variables, view a graphical representation of the control flow graph, and it's fully scriptable and extensible.

Other Similar Tools

LifetimeTracker

A debugging tool to help you identify retain cycles and memory issues while running your app. LifetimeTracker requires just one line of code to integrate into your app, and it'll give you a floating bar that lets you know when it identifies an issue. Tapping the info button gives you full details of the issue including the leaked object type and address. Unlike other retain cycle detectors that rely on Objective-C runtime magic, this small tool simply focuses on tracking lifetime of objects which means that it can be used in both Objective-C and Swift codebases.

Bugsnag

A drop-in framework and online service that aims to make debugging your iOS apps a more pleasant experience. The Bugsnag Cocoa library automatically detects crashes and alerts you via Slack. You can sort errors by users impacted, or use advanced filtering (by version, user, and more) to prioritise the most harmful bugs first. All debug info is captured including a stacktrace (with support for dSYMs). Support for Swift and Objective-C. Monitor your backend and frontend applications, too, to proactively improve your software quality.

Brisk

A Mac app for filing Radar bug reports and optionally crossposting them to Open Radar. Brisk is written in Swift and uses Sonar to communicate with Apple's Radar web APIs. Once logged in with your Apple ID, you are given a form to complete your bug report including attachments. You can save your report to a file as a draft or submit it straight to Radar. If you have an Open Radar account and API key, you can also choose to crosspost the bug report there.

Dotzu

An in-app debugging tool that gives you enhanced logging, networking information, crash reporting and more without having to exit the app. Dotzu is simple to add with a single line of code. It then gives you a button that floats over the top of your app giving you quick access to a lot of debugging information. It automatically overrides print calls so you can view all logs without having to change your code. It also works by default with the shared URLSession or you can add the logger to custom configurations. It even works with Alamofire.

DBDebugToolkit

A drop-in debugging library for iOS apps. DBDebugToolkit is simple to set up with just a single line of code. After setup, a shake of the device will present a menu with a huge array of debugging information. This includes everything from performance including realtime graphs of CPU and memory usage, user interface with options to show frames and slow down animations, to networking with a list of all requests sent by the application, and loads more. You can also set up other triggers if shake isn't right for your app.

Bugfender

A remote logger for iOS and Android apps. Bugfender stores logs created by your app and sends them to their server, which you can then view in real time on the online console. You can set tags and levels for each line logged to later search and filter entries within the log viewer, and you can get information about the device for each logging session and review OS versions and device features. You can get started for free with unlimited app installs, app users and sessions, or sign up to a paid plan to remove logging restrictions.

Bugsee

A free SDK for bug and crash reporting of iOS, Android and the web. Bugsee allows you to report a bug directly from the app by just clicking the screenshot. Reports include video of the last minute, full events log, console logs and network traffic along with all environment details. In the case of a crash, Bugsee will auto report the video leading up to the crash, including the reason, method, and the file and line number that caused the crash. Everything is available to view online with video synchronised with all system events and logs.

Raygun

A drop-in SDK and online service that provides crash reporting and real user monitoring. Raygun's error and crash reporting silently monitors your app, collecting all error and crash events that are affecting your users. When issues are found they are presented on your dashboard, with detailed diagnostic reports about every single error and crash. Real User Monitoring gives you detailed data on how every user interacts with your app, including complete user sessions and journeys, so you can find problem areas well before they affect more of your users.

Reveal

A powerful runtime inspector for view debugging iOS apps. Reveal gives you 2D and 3D visualisations of your view hierarchy and allows you to change view properties at runtime on the fly to see the effect immediately. Reveal 2 has recently been released with many new features including the ability to debug applications running on devices connected by USB, making inspection easier and more reliable; support for inspecting App Extensions such as messages, notification, keyboard and widget extensions; filtering of views and constraints by name and memory address; and an all-new design.

Pushtry

A super simple free web service for testing push notifications with your iOS or Android app. Pushtry lets you send push notifications to your devices using Apple Push Notification Service or Google Cloud Messaging service without requiring you to run your own backend. Push notifications can be sent as plain text of complete JSON so you can test all remote notification features. They have also provided a comprehensive step by step guide to setting up push notifications on iOS and OSX including managing certificates and provisioning profiles, and how to configure your app.

Peek

An open source library that lets you easily check your application against your user interface's specification guides. Once added to your app, Peek is activated by tapping the volume buttons. You can then tap on any UI component to see its layout information. Double-tapping presents the Peek Inspectors where you can find a staggering amount of contextual information about the view you're inspecting, including view, layer, layout and view controller attributes, along with application, screen and device level information.

Knuff

An open source OS X app to help with debugging the Apple Push Notification Service. Knuff, along with the companion app for iOS, lets you send push notifications to the Apple Push Notification Service with no configuration needed. It can grab your certificate right from your keychain and get the device token automatically, load and save documents including token and JSON payload, and has support for error response codes, universal certificates and custom JSON payloads.

Endo

A drop-in SDK and OS X app that enables untethered debugging of your iOS apps. Endo receives and displays all debugging output via WiFi using Bonjour, making debugging your app easier when plugging in your device isn't possible. It also provides a command line prompt that allows you to setup and remotely execute commands that trigger blocks of code in your app. A built in file system navigator also allows you to remotely view the device file system including uploading and downloading files. Endo is quite expensive, but a free trial version is also available.

Buglife

A drop-in SDK that lets your users or testers report bugs directly from your app. Buglife will automatically take a screenshot when you shake the device, which can then be annotated with arrows, magnification and blurring for sensitive information. Bug reports are sent directly to you by email or can be accessed from the Buglife dashboard, where you can view device environment details and console logs. There's also several third party integrations including Slack, HipChat, JIRA, Pivotal Tracker, and more, so Buglife can fit into your existing workflow.

ViewMonitor

A really useful view debugging tool that measures view positions with accuracy. ViewMonitor is a drop-in library that gives you an activation switch that floats on top of your interface. Once enabled, it displays a overlay giving you useful information about any selected view, including frame, background colour, font size and text colour. Obviously not a tool to be left your production app but certainly handy if you're having some layout issues.

Alpha

A debugging framework for iOS applications. Alpha combines multiple debugging tools built on top of a simple, unified API. It lives entirely in your app sandbox and collects information during your application lifetime. It offers many really useful features including: viewing app wide events such as background state transitions, view controller appearances and push notifications; inspecting active object instances on the heap and any other class or object in the app; logging network connections made using NSURLSession and NSURLConnection; and loads more.

OSStatus.com

A website that lets you quickly lookup any Apple API error. OSStatus.com lets you search by error name, integer, OSType, hex or string code, framework name or header file. Search results give you platform (OS X or iOS), framework, header file, error name, code and description, making it easy to identify any cryptic errors you're experiencing. OSStatus.com is much faster than digging through the Apple documentation or header files yourself so it's definitely worth bookmarking.

Infer

A static analysis tool built by the engineers at Facebook. Infer can inspect Objective-C, Java or C code to intercept critical bugs before they have shipped to people's phones, and help prevent crashes or poor performance. It currently supports several types of errors including memory leaks, null dereferencing, parameters and ivars not null checked, premature nil termination arguments, and retain cycles. Facebook is running it continuously on the main Facebook apps for Android and iOS, Facebook Messenger, Instagram, and others, so it's probably worth using on your projects as well.

CocoaLumberjack

A fast and simple yet powerful and flexible logging framework for Mac and iOS. CocoaLumberjack is really easy to use as it's DDLog macros use the exact same syntax as NSLog, but is an order of magnitude faster and offers many more powerful features. You can configure it send log statements to multiple loggers such as a file, the console, or a custom logger to send your log statements to a database or over the network. It's also extremely configurable with options to change log levels per file, logger or Xcode configuration and also to compress archived log files and upload log files to a central server.

iOS Console

A free iOS console log viewer for OS X. iOS Console is a viewer inspired by the built-in OS X Console app, making it familiar and simple to use. It displays all messages logged by any connected iOS devices and, unlike the (difficult to find) log viewer built into Xcode, adds filtering and text highlighting to narrow down the logs. You can also quickly add a marker in the console log to make finding your place easier, and there are shortcut buttons to quickly access Crash Logs, Terminal and Activity Monitor.

Chisel

A collection of LLDB commands to assist in the debugging of iOS apps from the engineers at Facebook. Chisel includes commands for auto-layout debugging, adding breakpoints and watchpoints, performing actions on views and layers, logging and loads more. Some of my favourites include 'border' and 'unborder' to add and remove a border to any view and 'fv' to find a view in the hierarchy whose class name matches the provided regex. Chisel is open sourced on GitHub and the authors welcome pull requests if you have any commands you would like to add.

FLEX

A powerful in-app debugging tools from the team at Flipboard. FLEX (Flipboard Explorer) is a drop-in library that runs entirely inside your app, so you don't need to be connected to LLDB/Xcode or a different remote debugging server. You can inspect and modify views in the hierarchy, view and modify the properties and ivars on any object, dynamically call instance and class methods, view NSUserDefaults and the file system within your app's sandbox, access any live object via a scan of the heap, and more. It's an essential debugging toolkit.

PonyDebugger

A remote debugging toolset that uses Chrome Developer Tools on your browser to debug your application's network traffic and managed object contexts. PonyDebugger combines an iOS client and gateway server to send your app's network traffic through a proxy so you can use Inspector's Network tools to debug in the same way you would on a website in Google Chrome. You can also use PonyDebugger and the Chrome Developer Tools to browse entities and managed objects in a Core Data managed object context, display your app's view hierarchy as an XML tree, and remotely log text and object dumps.

Instabug

A service that makes it really easy for your users to report bugs. Instabug provides a drop-in SDK that presents an in-app bug reporting interface when the user shakes the device. Each bug report includes a screenshot that the user can annotate with text or drawings, written feedback, and all the current device stats. It also integrates with loads of popular bug tracking tools so can easily become part of your workflow.

PLCrashReporter

An in-process crash reporting framework for use on both iOS and OS X. PLCrashReporter powers many of the crash reporting services available for iOS including HockeyApp, Flurry, and Crittercism. If you don't want to signup to a crash reporting service, PLCrashReporter is probably the best open-sourced drop-in framework you can use.

APNS Pusher

A simple Apple Push Notification Service (APNS) debug application for Mac that lets you send push notifications to APNS with no configuration needed at all. It automatically grabs the certificate out of your keychain and discovers device tokens via bonjour. It also supports error response codes, switching between development and production environments, custom JSON payloads and can export identities to PEM format.

Kamakiri

Another Mac app for submitting bug reports to Apple's Radar. Kamakiri comes in the form of a full app with a menu bar item to get quick access to your bug reports. It automatically updates your bug reports in the background and will notify you in Notification Center when anything changes. Kamakiri isn't free but it's definitely one of the more fully featured bug reporters.

QuickRadar

A menu bar app that makes submitting Radars quicker and easier than using Apple's Bug Reporter. QuickRadar runs in the background on your Mac, giving you a keyboard shortcut to instantly open a window to type your bug report. The code is BSD licensed and hosted on GitHub so the developer welcomes contributions.

Shake Report

A useful little utility to get bug reports from users. The drop-in SDK allows users to shake their device to send a report. You can also download the backend component and deploy it on your server to have your reports collected and classified.

BugSense

Cross platform crash reporting service that supports Android, Windows Phone/Windows 8, HTML 5 and, of course, iOS. It provides real-time crash analytics and app quality data that you can use to keep your customers happy.

Crashlytics

Lightweight mobile crash reporting tool. Includes a Mac menu bar app the makes integrating the framework and monitoring crashes really easy. Crash reports can be viewed on the website and include full stack trace and device stats.

Crittercism

A unified solution to manage all app performance issues, including crash reporting and exception handling, response times, error rates and network/carrier latencies.

Spark Inspector

It's difficult to describe Spark Inspector - it seems to work by magic. It is a real-time runtime debugger that gives you a clever 3D view of your app's view hierarchy and allows you to change view properties at runtime. It can also monitor all NSNotifications being sent.