UIKit rendering - The run loop

On the previous post, we discovered that the commit of the current implicit transaction is responsible of our initial interrupted layout phase. So we only have one question left: when...

UIKit rendering - CATransaction

On the previous post, we discovered a mysterious CATransaction.commit at the bottom of our interrupted layout phase stack. Let’s find out its role in the layout process. Experimentation The CATransaction...

UIKit rendering - Tracking a layout phase

On iOS, the layout of a view hierarchy is expressed dynamically using the Auto Layout constraint system. Thus a view hierarchy can adapt itself to all the possible device screens...

Android, from LiveData to StateFlow

The following article will detail how we can replace the presentation layer’s livedatas with stateFlows and some caveats we encountered along the way. On the 30th of October, kotlinx.coroutines 1.4.0...

Video playback on iOS & tvOS

When developping an application on iOS and/or tvOS, video playback can be a strategic or accessory component. There are different solutions available on iOS/tvOS, each of them with pros and...

Understanding Copy on Write

In a previous article we saw the difference between reference and value types in Swift. Let’s look at the memory management a bit closer! Heap, Stack, value types and reference...

Implementing fastlane in 50 lines of code

Fastlane is a tool used by almost every mobile developer. The main advantages are its simplicity, the time it saves us and the fact that it’s built on top of...

Types of types

Let’s talk about types and memory! In Swift a type can either be value type or reference type. Value types A Value type is a type that provides value semantics....

Linting licenses

Dependencies are at the core of programming. In iOS, we often use Cocoapods to manage dependencies in our projects. But if we are not careful, we can add a dependency...

Visit Monitoring

As Covid-19 started to spread, we tried to find a way to help as developers, with the tools at our disposal. One idea was to use out of the box...