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.
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.
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.
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.
Learn how SoundCloud improved the productivity of its iOS engineers by using Tuist to generate Xcode projects.
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.
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.
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.
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.
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.