Backstage Blog

RSS logo

You're browsing posts of the category iOS

What's New with SoundCloud, November 2022

November 11th, 2022 by Ang Huang

We recently made updates to our SoundCloud iOS and Android apps to address key user experience (UX) fixes according to user feedback. Read on to find out more.

Read more…

What's New with SoundCloud, October 2022

October 17th, 2022 by Ang Huang

We recently made updates to our SoundCloud iOS and Android apps to address key user experience (UX) fixes according to user feedback. Read on to find out more.

Read more…

Dependency Inversion as a Driver to Scale Mobile Development

February 24th, 2021 by Firat Karatas

As our codebase scales, the need for cleaner architecture becomes more apparent. The dependency inversion principle (DIP) is one tool that helps us build cleaner relationships among our software modules. In this post, DIP is presented using atomic modules and is later applied to frameworks.

Read more…

Breaking Loose from Third-Party Lock-In with Custom Refactoring Tools

August 11th, 2020 by Andrés Portillo

Code refactoring is an essential part of the job of software developers. As time goes on, technology evolves, product requirements change, and new features are built into a codebase. Find out how the iOS Collective at SoundCloud created a custom refactoring tool to transform more than 900 source files.

Read more…

The Magic of Generating an Xcode Project

February 20th, 2020 by Andrea Cipriani

Learn how SoundCloud improved the productivity of its iOS engineers by using Tuist to generate Xcode projects.

Read more…

Implementing Dark Mode Using the Observer Pattern

November 8th, 2019 by Matias Villaverde

Last week’s update to the SoundCloud iOS app includes support for Dark Mode. This took several months of work and collaboration between design and engineering teams across the company, so we wanted to share our approach to implementing Dark Mode and some of the obstacles we encountered along the way.

Read more…

Integration Testing for Memory Leaks

November 23rd, 2018 by Matthew Healy

Memory leaks are a common problem when writing iOS applications, and while we all know we should be on the lookout for them, it’s often too easy to miss a vital weak reference. By leveraging integration testing, we can catch these issues and spend more time actually building features.

Read more…

How We Develop New Features Using Offsites and Clean Architecture

November 2nd, 2018 by Guilherme Endres

In 2017, our team of six engineers wanted to try out a clean architectural pattern and decided to use VIPER. In the text below, I’ll cover how the team worked on this.

Read more…

Automatic Stubbing of Network Requests to Deflakify Automation Testing

January 26th, 2018 by Donal O'Brien

Apple introduced automated UI testing in Xcode 7. This was a great addition for developers because this native support promised, among other things, an improvement in the flakiness notoriously associated with automation tests. As many of us developers have experienced, tests can sometimes fail even when there has been no modification to the test or underlying feature code.

Read more…

Leveraging frameworks to speed up our development on iOS - Part 1

October 16th, 2017 by Pedro Piñera

Growth in code bases come with exciting scalability challenges. As the size of our iOS codebase and team at SoundCloud grew, we faced challenges: long compile times and conflicts. Our productivity started to suffer as a result. We took inspiration from the work done in the backend (Building Products at SoundCloud) and applied it to mobile development. The main goal was to get back to a state where development is fun, fast, and would scale as the number of contributors grew. We modularized our iOS project by splitting it up into modules with well-defined responsibilities and public interfaces that interconnect them.

Read more…