• Wrapping async-await with a completion handler in Swift

    It is not often when we need to wrap an async function with a completion handler. Typically, the reverse is what happens. This need can happen in codebases where the public interface can’t change just right now, but internally it is moving towards async-await functions. Let’s jump in and see how to wrap an async…

    Read More

  • How to keep Date’s microseconds precision in Swift

    DateFormatter is used for converting string representation of date and time to a Date type and visa-versa. Something to be aware of is that the conversion loses microseconds precision. This is extremely important if we use these Date values for sorting and therefore ending up with incorrect order. Let’s consider an iOS app which uses…

    Read More

  • Sorting arrays in Swift: multi-criteria

    Swift’s foundation library provides a sorted(by:) function for sorting arrays. The areInIncreasingOrder closure needs to return true if the closure’s arguments are increasing, false otherwise. How to use the closure for sorting by multiple criteria? Let’s take a look at an example of sorting an array of Player structs. Sort by score in descending order…

    Read More

  • AnyView is everywhere in Xcode 16

    Loved to see this entry in Xcode 16’s release notes: Xcode 16 brings a new execution engine for Previews that supports a larger range of projects and configurations. Now with shared build products between Build and Run and Previews, switching between the two is instant. Performance between edits in the source code is also improved…

    Read More

  • AnyClass protocol and Objective-C methods

    AnyClass is a protocol all classes conform to and it comes with a feature I was not aware of. But first, how to I ended up with using AnyClass. While working on code using CoreData, I needed a way to enumerate all the CoreData entities and call a static function on them. If that function…

    Read More

  • Swift 6 suitable notification observers in iOS

    I have a couple of side projects going on, although it is always a challenge to find time of them. One of them, SignalPath, is what I created back in 2015. Currently, I have been spending some time to bump the Swift version to 6 which brought a quite a list of errors. In many…

    Read More

  • Universal Links At Scale: The Challenges Nobody Talks About

    Originally published on the Just Eat Takeaway Engineering Blog. Universal Links have been around since iOS 9 (2015), yet the topic remains surprisingly underrated in the iOS community. While most developers understand the basic concept (associating your website with your app so links open directly in the app) the practical challenges of implementing and maintaining Universal Links at…

    Read More

  • Revisiting the JET iOS Modular Architecture in 2026

    Originally published on the Just Eat Takeaway Engineering Blog. When I published Modular iOS Architecture @ Just Eat in December 2019, modularisation was still a relatively novel concept in iOS development. We had been at it since 2016, driven by specific organisational needs: bringing together country apps onto a single platform and apply Conway’s Law rather than the…

    Read More

  • In-House Over-the-Air Localizations in a Modular iOS App

    Originally published on the Just Eat Takeaway Engineering Blog. Localizations are one of the few things in an iOS app that most teams quietly accept as immovable. Strings live in .strings and .stringsdict files, those files are compiled into the app bundle, and the app bundle is what the App Store serves. A wrong translation is therefore a…

    Read More