iOS Tech Stack

6 Min Read • Oct 6, 2023

Alex Tudose

Alex Tudose

Head of iOS

Founders have several reasons to pay close attention to every aspect of their product, including the technology stack. Some might think the technical side isn’t so important when it comes to the proof of concept or the MVP, when the primary focus is on functionality and speedy launch. But development never stops there. In the long run, a founder will want to maintain their product, add new features, perform experiments and scale it. Having a good technical foundation will make the work leaner and faster, instead of forcing the team to re-work existing code and ultimately minimising costs.

At Tapptitude, we spent years perfecting our methods by building amazing mobile products for our clients. Through this process, we gained a lot of insights on both iOS and Android app development. We always enjoy the challenges of starting with an idea or concept and bringing it to life, and we’ve come to learn how important it is to use the right technology and the right tools tailored to each client's needs.

Let’s start at the beginning: What is a tech stack?

A technology stack is a set of tools that is used not only for developing mobile and web products, but also for any IT software. It essentially serves as a toolkit which comprises programming languages, frameworks, libraries, UI/UX tools and various other development tools.

In the early stages of development, choosing the right combination of tools is crucial, and it’s also a topic that requires an important conversation with the founder. When choosing a framework, both parties must agree on whether the best solution is using a native framework, or a cross-platform one like React Native app development, Flutter, or an alternative option.

Tapptitude’s iOS tech stack

We have refined our iOS app development process through experimentation and testing of various tools and technologies and determining what suits each client best and what doesn't. We don’t believe in the ‘one process fits all model’. While you'll find us reaching into the same toolkit, you'll also notice us adapting and customising the tools to align with the specific needs of the client we're currently working with. We’ve hung on to a handful of tools that proved to be efficient, robust and secure, and which optimise our development process significantly.

Check out our full iOS tech stack below.

1. Programming Language

There are two main programming languages used in iOS mobile app development, namely Swift and Objective-C. Given that nowadays Objective-C is mostly used in legacy projects, we recommend opting for Swift for any project we work on, be it a new project or an existing one.

Swift is a powerful and robust programming language developed by Apple and the open-source community and was launched in 2014. Writing Swift code is interactive and intuitive; the syntax is concise but also expressive, and includes a multitude of modern features. 

2. iOS Toolkit

Tapptitude’s iOS mobile app development Toolkit includes XCode, Charles, Proxyman, Postman, curl.

Xcode

With continuous updates from Apple, Xcode is a complete set of tools designed to create apps for Mac, iPhone, iPad, and other Apple devices. Xcode shines when it comes to coding, testing and debugging, user interface design and it ultimately sets the bar in terms of reliability, being officially provided and endorsed by Apple.

iOS SDK

Developed by Apple, the software development kit is used for mobile app development on Apple’s iOS operating system. The iOS SDK, combined with Xcode, allows us to use the Swift and Objective-C programming languages in the development process. Xcode also comes with a device simulator as well as Previews, a tool that enables the developer to have a real time visual representation of the user interface that is currently being built.
For the user interface building process, iOS SDK provides two different frameworks, namely UIKit and SwiftUI. Our development team is proficient in both, but to make an informed decision on whether to use SwiftUI or UIKit it’s essential to understand their designated usage. SwiftUI enables fast development of apps with simple to medium-complexity interfaces, making it ideal for prototyping and testing new ideas, and creating straightforward user interfaces, all while being able to work the same on all the operating systems (iOS, iPadOS, tvOS, watchOS). Conversely, UIKit is suitable for building more complex interfaces with advanced functionality. It allows developers to exercise more control over the UI. This further enables the creation of custom or advanced user interactions.

When comparing SwiftUI Vs UIKit, the choice of framework ultimately depends on the complexity of your application, although one should not feel stuck with their choice as porting functionality between the tools is rather trivial.

3. Stability Monitoring & Analytics

Tapptitude developers use a wide variety of stability tracking tools to monitor, diagnose and fix app issues effectively. These tools have multiple functionalities, such as performance monitoring, as well as alerts for key events such as crashes or freezes that include crucial information about the cause and place of the issues.
Depending on the use case, budget and scaling intentions, we can pick from a wide variety of tracking tools. 
The following are some of the stability tracking tools we’ve successfully used in the past to achieve great results when developing mobile apps for iOS.

  • Firebase Crashlytics & Analytics
  • Amplitude Analytics
  • Google Analytics
  • Mixpanel Analytics
  • Flurry Analytics
  • Appsflyer Analytics
  • Instabug
  • Sentry
  • UXCam

Some of these platforms offer free subscriptions that include the stability tracking component  (e.g. Firebase) but that may not always be enough for every scenario. 

For more advanced user behaviour analysis, we have UXCam. It provides a solution that can automatically track user actions, and map them to particular app flows. UXCam also gives a valuable output in the schematic representations of the screens visited by the user during each application session.

4. Target devices

Here at Tapptitude, we’ve created mobile apps for a wide variety of devices, so we know precisely which development route to take when it comes to your unique product.

Here are all the types of devices we’ve worked on:

  • iPhone, iPad, Apple Watch, Apple TV
  • Tablets
  • Smart TVs
  • Smartwatches 
  • E-scooters
  • Smart home devices
  • DJI Drones
  • TV set boxes
  • Car infotainment systems
  • Mobile devices that have barcode scanners attached
  • IoT devices like smart lighting systems, food lockers, BLE devices and much more

5. App Integrations Tools

Our app integration assistance includes services related to social media platforms, payment platforms, cloud systems, and much more. Our work doesn’t end once the development process is complete: we make sure that your iOS mobile app always performs well across all devices and user channels, and that it’s fully integrated into the online ecosystem.

Here some of the tools we like to work with:

  • Payment platforms: Apple Pay, Stripe, PayPal, GPay and Square Payments;
  • Social logins: Facebook, Google and Apple;
  • Mapping technologies: Apple Maps, Google Maps and Mapbox;
  • Cloud messaging systems (push notifications): Firebase Cloud Messaging and others;
  • Real-time socket-based data capabilities: Sendbird, yellow.ai, socket.io and others;
  • Audio & video communication: Vonage (ex. Tokbox), Quickblox and others;
  • Media playback integrations: Spotify and others;

6. Dependency Management

Developer communities are an essential part of any development team. Knowing very well how much we have benefited from open source code written by others, we have made an objective from contributing to the community. 

Be it a contributor, or a simple beneficiary, the proper way to use distributed code is by using the power of dependency management tools. Xcode provides our developers with a robust set of tools and features to efficiently manage external libraries, frameworks, and packages that the projects rely on. There are two main ones that we use:

  • Swift Package Manager 
  • Cocoapods (mostly for legacy projects)

While Cocoapods is more mature, offers stability, and has an almost exhaustive selection of libraries that you can access via the tool, Swift Package Manager has been integrated and tailored to the nooks and crannies of Xcode, and is rapidly approaching its older competitors in terms of coverage. For the time being we are considering a combination of the two in the worst case scenario, but we are aiming to completely migrate towards the Apple pattendet solution in the near future.

7. CI/CD tools

CI/CD stands for continuous integration and continuous delivery (or continuous deployment) in its full form, and is considered the backbone of modern-day DevOps. Our developers use these tools to bridge the gaps between development and operation activities and, by enforcing automation, in building, testing and deployment of our iOS mobile applications. Monitorization and maintenance is crucial for any mobile app.

These are the tools we work with:

  • Xcode Cloud 
  • CircleCI
  • Fastlane

8. Distribution

The tools we use daily for distributing release candidates, as well as beta testing builds are TestFlight and Firebase App Distribution. 

Deciding between the two solutions is highly influenced by the requirements and destination of the project. However, for a while Apple has been steadily improving the capabilities of Testflight, offering solutions such as the Enterprise Program, and Unlisted App Distribution mechanics, and upgrading. This means that we now have an out of the box, proprietary solution to start with, and only consider others in special scenarios.

9. Internal processes

The source code managing workflow our team uses is called gitflow. Based on our internal usage, as well as the popularity of the approach we determined this to be the best fitting for doing mobile CI/CD. We even integrated the QA department into the source code merging process as a mandatory step to maximise the chances of spotting issues way before the code reaches the production environment, thus making the post integration testing leaner. 
Depending on the budget and timeframe constraints, our CI/CD process may also include the standard Unit Testing most projects have, as well as User Interface Testing, both streamlined by Xcode.

All things considered, the tools and technologies presented in this article represent a good solution to our current needs. Still, we have come a long way in properly defining a toolset, and we have experienced all sorts of changes, from programming language, all the way to insignificant 3rd party tools, which for a while have fulfilled our needs. In the end we advise everyone to take our recommendations with a grain of salt. The software world is one of many changes, so we are open to receiving them, and incorporating new or different solutions in our stack, as long as they help us deliver better quality products to our customers.

Alex Tudose

Head of iOS

Senior iOS Developer with more than 5 years of experience in developing native mobile apps. I always aim to combine fantastic user experiences, with solid design principles, and strong development solutions. When I'm not coding, I'm most likely outdoors, riding my bike.