Useful Tools and services for iOS development 


I’d like to share a few tools I use when I work on iOS projects.

Fabric

Consist of a set of great tools that you can easily integrate to your app , one of the most valuables tools for me is Crashlytics where you can send Beta builds and receive crashes when they occur. You can add as many apps freely and manage them, and you can have teams with ability to manage their access. Also service hooks is really handy e.g. send a slack message when a crash reaches some level on some App. Answers tool will give you Analytics with many options as setting events ,observing retention, engagement and many more.. All you need is download the fabric app and it will guide you through the integration seamlessly. There is an iOS app for fabric for tracking your apps.

Fastlane

Automate your deployment from generating certificates to uploading to the App Store , it’s wonderful and time saving. One of my favorite tools is match which will automate certification and provisioning for the whole team using git, along with register_devices action you will be able to add new devices , recreate certs and profile without even visiting developer.apple.com (you still need to have access to the apple account). It has many actions and the docs is neat, you may check the many examples as well. (Having some knowledge of ruby will be very handy to you).

Cocoapods

The famous dependency manager for swift and Obj-c. It allows you to use open source / private libraries easily, few commands and your up to go. It makes it easy to update your dependencies and easy for Pods makers to update their Pods, so when there is new swift version , all you have to do is to update the Pods and you should be fine (JK you still have to suffer 😂😅, but it will be easier 😄). Another important feature is private pods that you may share with your team privately.

Another famous dependency manager is Carthage which I don’t use a lot, but one thing good about it is that it makes build time faster, so if you are using a big and well known frameworks you may consider using carthage for them, and leaving smaller and less complete libraries in Cocoapods so that you can change and experiment on them on Spot.

R.swift

An awesome tool for code generation from static files such as fonts , images , string files , nibs/storyboards, colors from .clr files.. which means no miss spelling errors and you get compile time assistant. I made this script that will generate Obj-c class from localizable.string which is a good practice to have your Strings encapsulated in methods or properties ..

JSONExport

It allows you to generate Model classes from JSON Objects, which is very useful for mapping API responses. It supports Java,Obj-C, and Swift, with number of libraries like Mappable, Realm, CoreData … JSON Accelerator is another amazing tool with the same goal for obj-c ,java, and Python.

Makeappicon

To generate app icons including icons for App Store, all you need is to upload 1024 icon and you will get all icon sizes for ios,android, and watch os.

Appetize

Upload an IPA and send it to the customer and they can view it on the web, no UDID needed!!!. Its great for demoing an example of a library or framework you made instead of asking the user to download and integrate or making a gif!!!. Really useful and amazing.

Sourcetree

This is the best GUI tool you can get to deal with Git and its free!!. It make working with Git a breeze. You get many options  like commit,push,merge,rebase,stash,resolve conflicts,reset , log all commits for certain file and revert to any version , add to index ,remove ,ignore ,checkout from any commit and more without the need to use terminal… though you still have terminal button to use terminal for more advanced operations .
If you use bitbucket like me, you get clone in sourcetree button for faster cloning as bonus, but you can have account added in the App and you can fetch all your repositories and clone any without going to bitbucket website.

Another tool is Github Desktop but with way less feature than sourcetree. Still useful to have it to use the open in desktop button in github !!.

CocoaControls

Its awesome website that you should check if you have not, where you can find amazing controls for iOS, macOS, watchOS,and tvOS. there are thousands of useful open source projects mainly as UI Components. Most of the New Projects have appetize embedded and you can try the control before using it. I would suggest to keep checking it from time to time , and to try to contribute in the projects.

xliff.brightec

awesome website for importing and generating xliff files for iOS, you simply import your xliff file, update the translation on the website and then export it to be used in Xcode.  Localise.biz  is not free but you can generate android xml and iOS .string localization files altogether.


Commercial

Paw (trial)

Best API Tool I ever used , what makes it great is that it can generate code for you in many languages, which you can use for fast prototyping. Paw has ability to add extensions for Importers (e.g. API blueprint, swagger, postman) and Exporters (curl, swift , java ..). and many other features.

Sketch (trial)

The best tool to design a mobile app, its simple to use for developers, where you can easily explore the design given by the designer and export its elements, figure out the sizes and colors , and modify the design easily. It’s even simpler for non-designers like me to use and make nice designs with help of free resources like this amazing website https://www.sketchappsources.com .

One amazing thing is that its pluggable where you can find many plug ins that do awesome features like AutoLayout by anime . Another nice thing is that it’s vector based where you can design in 1x and export in 3x and more , plus with the ability of Xcode to handle pdf you can export sketch resources in pdf :).

PaintCode (trial)

Will convert your SVG drawings and designs into Code ,swift/objc/android/javascript . Having the design in code will give you more abilities , simply you can customize anything like fill color, border colors/width/shape, etc.. and one important thing is Animation, PaintCode have a feature called Variable which makes it easy play with things like colors, positions, rotations …

#@end

These are useful subset of tools That I use always and works perfectly for me. There are many great tools out there that can make your life better and it’s good to try and see, one website that can help in that is thoughtworks.com.