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.

An Xcode plugin turned standalone app that allows you to inject changes to class method implementations into a running application in the simulator or a macOS app. Injection has been recreated as a standalone app after plugin support was removed from Xcode 8. It works by "swizzling" the new method implementations onto the original class so they take effect immediately without having to relaunch the app. It also includes the Xprobe viewer for browsing an app's memory or creating a memory snapshot that can be exported as a standalone web page for later analysis.

Other Similar Tools

An Xcode source editor extension that helps you easily navigate to a number of places related to your project. XcodeWay gives you an extra menu in Xcode with options to jump to a number of different locations. This includes opening Finder to the Project folder, the relative or global DerivedData, Provisioning Profiles, Themes, Archives, DeviceSupport, or CodeSnippets. You can also quickly open the GitHub page for the project repo in your default browser, or open the project folder in iTerm. XcodeWay is extensible so if anything is missing you can add your own destinations and submit a pull request.

A simple Mac app that quickly reformats JSON to be pretty printed making it more humanly readable. Formatter provides a convenient window to drop your JSON files and instantly reformat them. You can also drop your files on the Dock icon as well.It also includes an Xcode extension which you can enable in System Preferences. This gives a menu item in Xcode you can use to format JSON files you are looking at from inside your project. Finally, it also includes a Quick Look plugin that makes JSON files easier to read from the Finder.

A menubar app to quickly create new iOS or macOS Swift playgrounds. With PlayAlways once you've set the path of where you want to save them, you can create iOS, macOS or tvOS playgrounds with a single click or keyboard shortcut. It also includes an Xcode extension that will create a playground from your currently selected Swift code, making it even easier to quickly test an idea in Swift before using it in your apps.

The app version of the Refactorator Xcode plugin for refactoring Swift. Now that Xcode 8 has removed plugin support, Refactorator App supplies the same renaming functionality in a standalone app. In addition to being able to rename public or internal vars, functions, enums etc it can now also generate a complete standalone static website of navigable code from your Xcode project with linked entities between files.

A curated collection of Xcode themes. codethemes includes over 60 different themes for Xcode categorised as light or dark, for which you can view the source, download or quickly install using ThemeInstaller. Currently the list only includes themes for Xcode, but support for other IDEs and editors will be added in the future.

A simple Mac app that makes is really easy to install themes for Xcode. ThemeInstaller saves you from having to manually copy the theme files to the correct directory. Just open a *.dvtcolortheme and it will be installed and ready to use on the next launch of Xcode. You can also install themes from any website that provides link with themeinstaller://install/theme-url schema.

A simple Xcode Source Editor Extension that will generate the methods required for conformance to Swift's Equatable protocol. You can select any Swift struct of class and with a menu item selection or keyboard shortcut, Swift Equatable Generator will create the extension and == method required to make it Equatable comparing each of the selected properties, saving you lots of time typing out boilerplate code.

An Xcode Source Editor Extension that will generate a Swift initialiser based on the properties you've selected. You start by highlighting the Swift stored properties from your struct or class that should be included in the initialiser and then select the menu option or use the keyboard shortcut. Swift Initializer Generator will then insert an initialiser that assigns values to the selected properties. This can be really useful if you've made a struct public and now have to provide the initialiser yourself, especially if you have a lot of properties.

An Xcode Source Editor Extension that lets you add import statements from anywhere in your code. Import gives you a simple keyboard shortcut and menu item that will move any import statements from the currently selected line into the proper position at the top of the file. This can be a real timesaver and stop you losing your place when you're half way down a long file and realise you're missing an import. Import supports Swift, Objective-C, C++, and C.

A command line tool written in Swift that searches source-code files for comments which begin with tags such as // TODO: or // SERIOUS:. When XcodeIssueGenerator finds a match, it writes a warning or error to the Issue Navigator. Because it runs post-build, it does not trigger “treat warnings as errors” allowing you to use Issue Navigator, while still blocking compilation with other project warnings. Additional options that let you specify build configuration, comment tags for which to search, and exclude directories.

An Xcode plugin that shows you a break down of Swift build times. Build Time Analyzer uses the log files generated by Xcode when building to display a function by function list detailing exactly how long it took the compiler to build your project. The Swift compiler can sometimes be surprisingly fussy about certain code expressions, causing a dramatic increase in build time. This plugin helps you identify which syntax atrocities you need to commit to save yourself a lot of time waiting for builds to complete.

An open source tool that takes the tedium out of creating Auto Layout constraints. Auto Layout Magic can create all the constraints you need in the case where you have a single screen that scales up or down to fit the device screen size. In this case each view has a proportional width and height relative to the screen size and is is placed at an X and Y coordinate which is a proportional distance to the main views trailing and bottom edge. Auto Layout Magic will automatically add these four constraints to all your views saving you a lot of time.

An Xcode plugin for the Gradle build management tool that adds support for building Xcode projects. Gradle Xcode Plugin can execute a build on your Mac but also integrates nicely with various build servers like Jenkins, Go, etc. The plugin not only builds the application, but also has support for code signing, packaging and distribution which can all be configured with a single configuration file. It also integrates with several third-party services including Cocoapods, HockeyApp, Crashlytics, and more.

An Xcode plugin for refactoring Swift and Objective-C. Refactorator can rename public or internal vars, functions, enums etc. It accesses the SQLite database Xcode compiles using SourceKit to understand your code, making it fast and means all targets of a project are included in refactoring including code written in Objectve-C. To refactor some code, select a symbol in a Swift file and click the right-click menu item to list places in the target that declare or refer to that symbol. Enter a new value for the identifier in the bottom textfield and click the Preview button to view the changes that would be made. Click the Save button to save these changes to disk. There is also an Undo button to revert the changes if you need to.

An Xcode plugin that lets you build and run selected lines of code in Xcode without running the whole project. With VWInstantRun you can quickly test a tiny piece of Objective-C or Swift code without having to run the whole project. You just select your code in Xcode, then either use the hotkey or select the 'Instant Run' option from the 'Product' menu to build and run the selected lines, you'll have the output instantly in your Xcode console. It's currently limited to only support Foundation module, but development is ongoing to add additional support.

An Xcode plugin for refactoring Swift code. Swifactor will rename public or internal vars, functions, enums etc. For private and local entities you can use Xcode's existing "Edit All in Scope" functionality, but for anything else there is not currently a built in way to refactor your Swift code. Swifactor uses SourceKit to parse your project's Swift sources and accurately find symbol references. Where a symbol is defined in a framework Swifactor will also parse across targets to the framework if you start in the referring module.

An Xcode plugin that adds clickable links to your Xcode console, so you never wonder which class logged a message. With KZLinkedConsole, if you log a message to the console with a fileName.extension:123 format, that text becomes into a clickable hyperlink that will open the specific file and highlight the line. As the plugin just looks out for that format, you can use any logging mechanism including regular NSLog and print, but some popular logging frameworks, including XCGLogger and SwiftyBeaver, support the format out of the box.

An Xcode plugin that improves working with colours in your projects. Crayons gives you access to the custom colours you've defined in code to use directly in Interface Builder, without having to manually recreate them in the Color Picker. You can share palettes of colours from your source files using class methods or UIColor categories, and if you decide to change a color, you just need to change it's implementation because colours are generated dynamically when the project builds.

An Xcode plugin that lets you jump from any line of code in your project to its corresponding GitHub history, blame, pull requests, issues or notifications page. Reveal-In-GitHub can also be customised with your own keyboard shortcuts or by creating your own URLs for other pages on GitHub or even different sites to jump to using dynamic {placeholders} to represent the git remote URL, commit, file path and selection. As with most plugins, Reveal-In-GitHub can be installed using Alcatraz.

An Xcode plugin that provides auto-completion for NSLocalizedStrings. Whenever you type any of the NSLocalizedString macros, Lin will pop up a list of strings from your localised strings files, while also displaying the translations for any languages you've set up. The list is also filtered as you type so you can quickly find the string you need. Lin supports both Objective-C and Swift and is available through Alcatraz.

An Xcode Plugin that allows you to create custom file templates for your iOS or OS X projects. Stencil lets you create custom Swift or Objective-C file templates from existing selected files, then you can simply select your custom template when creating a new file. Custom templates can also include interface build files (.xib and .storyboard), and are stored in your project directory so you can include them in source control. Also, newly created templates include all the references Xcode needs to correctly name and attribute your new files (e.g. ___FILEBASENAMEASIDENTIFIER___ and ___COPYRIGHT___).

A handy Xcode plugin that can automatically override the description method of any class. Overriding the description method is really helpful in debugging your in memory objects, but doing it by hand is time consuming and error prone. With this plugin installed all you have to do is select the properties you want included and select Make Description from the Edit menu. The plugin will create a description method from your selected properties. It even handles converting known structs with their respective NSStringFrom… methods.

An Xcode plugin for collaborative editing. CoPilot lets you publish the currently active editor window as a shared document and advertises it via Bonjour. Anyone can then subscribe to the shared editor window and view changes made in realtime over a WebSocket connection. Editing is supported in both directions so both the server and client can make changes to the same shared window. It will even highlight the cursor position and text selections for anyone currently editing the document. CoPilot is an interesting idea that could be really useful for remote paired-programming.

An Xcode plugin that adds a large collection of text selections, duplication and deletion commands to Xcode. Marvin's commands include delete line, duplicate line, join line, move to EOL and insert LF, select current word, sort lines, and loads more. As an added bonus, Marvin will also clean up whitespace on save.

An Xcode plugin that helps you optimise your screen real estate by making common sense decisions on handling what's displayed in the editor window based on what you're currently doing. DBSmartPanels lets you configure behaviors triggered by three different events: when you begin typing in a text document, when you open a text document, and when you open an interface file. Actions include hiding/showing the debugger or utilities pane, restoring debugging state and switching to the standard editor.

An Xcode plugin that's like 'Open Quickly' but for all menu bar actions, code snippets, unit tests, and custom actions. Double tapping the Command key brings up a text box where you can enter the command you need, giving you quick access to countless really useful actions. The text box uses fuzzy searching so you'll have no problem finding the action you need even if you can't remember the exact name. The list of built in actions is pretty extensive but you can also create your own 'SurroundWith' actions that allow you to reformat selected text.

A Xcode plugin to automatically generate missing image catalog assets. RTImageAssets can automatically create @2x and @1x images by downscaling a provided @3x image, or upscale an existing @2x image to @3x. It will also rename files correctly in the image set to include the proper filename suffix. RTImageAssets is available to download from GitHub or can be installed using Alcatraz.

An Xcode plugin that lets you quickly import your headers on the fly while typing. Just press the ⌘ + ctrl + H shortcut while typing and a popover appears with the selected text. If the selected text matches the name of a class/protocol or category method (classes are shown as [C], protocols as [P] and category methods as [ClassExtended()]), it will import the header at the top of the file, otherwise it will show a list of filtered identifiers and headers. Auto Importer is a great time saver, available on Alcatraz or GitHub.

An Xcode plugin that displays deltas against a git repo in the Xcode source editor once you've saved the file. Although Xcode shows you which files are currently added or modified in your project, there is no simple way to see what exactly has changed inside the file. With GitDiff, differences are highlighted right next your code with orange and blue lines for modified and new code respectively and red lines to indicates code that has been removed. You can even hover over the deleted and modified line numbers to see original source. GitDiff is available in Alcatraz or you can download the source from GitHub.

An Xcode plugin that allows you to use colours in the Xcode debugging console. XcodeColors really helps with debugging by letting you make error messages stand out by printing them out in red, or logically separate parts output from your code by logging in different colours. There is no limit to the colours you can use - you can specify any RGB value in your source code for foreground and/or background colours. XcodeColors defines a handful of macros that you wrap around your NSLogs to print in your desired colour, or you can define your own macros to automatically log in different colours.

An Xcode plugin that provides a GUI for CocoaPods. Once installed you access the GUI by selecting 'CocoaPod UI' from the 'Product' menu. If your project doesn't yet have a Podfile one will be created, then you can start browsing the list of available pods. Pods are arranged in a searchable alphabetical list, and when you've found what you need the latest version of the pod can be added to your project with one click. You can edit existing pods to change the selected version and add external sources or remove them from your project. CocoaPodUI will also check for outdated pods with the option of showing an outdated count on the Xcode icon.

An Xcode plugin that provides what 'Open Quickly' doesn't. A keyboard shortcut activates a search box for you to type in your query to give you fast navigation around your Xcode project. It can search in all parts of your project including subprojects, interface builder, and Core Data models, and is much more intelligent that Xcode's 'Open Quickly'. It's CamelCase aware and uses various bits of regex magic to find the files or symbols you want. It's compatible with Xcode 5 and the developer has just made it open-source on Github.