Subscribe for weekly commentary and coverage of Swift and Apple platform development. Written by Dave Verwer and published every Friday. Free.

Picture of Dave Verwer

Issue 707

11th April 2025

Written by Dave Verwer

Comment

This week, there wasn’t much to write about in Apple platform or Swift development, but I noticed an interesting article celebrating 20 years of Git from GitHub founder Scott Chacon.

It’s a fun trip through Git’s history, from the first commit, through the founding of GitHub, right through to where it is today:

“Over these last 20 years, Git went from a small, simple, personal project to the most massively dominant version control system ever built.”

You should read the full article, but I’ll also share my first experiences with Git. It was a time in software when several competitors to a well-entrenched industry standard emerged. The standard was Subversion and the competitors were Git, Bazaar, and Mercurial.

While writing today, I found something remarkable about the history of those three tools. Their first commit dates are remarkably close together. Bazaar started on the 26th March 2005, Git was 12 days later on the 7th April, and Mercurial started exactly 12 days after that on the 19th April. There was definitely something in the air during those few weeks!

I really struggled to use Git at first. No matter how many people told me “You just need to understand how it stores the commits internally”, it simply didn’t click. It also made me nervous that it would “magically” replace the whole working directory when switching branches. So, I spent time converting all my repositories from Subversion to Bazaar, thinking I could ignore Git. I was happy with Bazaar for a while as it had a similar command line interface to Subversion and never moved files around.

Of course, over time, I realised I had picked the wrong tool and that I’d be left behind if I stuck with Bazaar. I learned to use Git properly and started to trust its file and branch management. Eventually, GUI Git clients appeared and I never looked back.

Bazaar was under active development for 11 years and Mercurial is still under active development today, but Git was the clear winner. I can’t imagine developing anything without it today and it’s hard to imagine anything taking its place with it being integrated into so many tools and IDEs, including Xcode!

… but I still don’t understand how it stores its data. 😂

Dave Verwer

Try the all NEW RevenueCat Paywalls builder today!

Try the beta for the new highly flexible, natively rendering Paywall UI framework from RevenueCat. With RevenueCat Paywalls you can remotely configure and edit your entire paywall view without waiting on App Review. See how it works here.

Tools

How to inspect .ipa files and secure your iOS app from common mistakes

Artem Novichkov with a great reminder why you shouldn’t ever store sensitive information in your Info.plist, or for that matter anywhere in your final app bundle. 😱

Code

SwiftUI Keyboard Shortcut Scope

Keith Harrison starts his latest article with a straightforward statement:

“A SwiftUI keyboard shortcut remains active as long as the control it’s attached to is still in the view hierarchy, even when not onscreen.”

The implications are significant and might be causing your app’s keyboard shortcuts to behave unexpectedly. You should be aware of how this works if you’re using SwiftUI.


Supercharging SwiftUI Text with Dynamic Content Styling

Having SwiftUI’s Text views accept Markdown was a huge step forward, but it’s still a pain to apply subsequent formatting on top. I really like this technique and associated Swift package from Daniel Saidi that makes applying additional styling to specific words a breeze.


Building WASM Applications with Swift

Fatbobman:

With the official release of Swift 6.1, SwiftWasm has also undergone a major upgrade. This milestone update marks the first time SwiftWasm has achieved a build entirely based on the official Swift open-source toolchain—leaving behind the era of custom patches.

I didn’t realise this! It’s still not the most straightforward process, but having everything in the toolchain is a big step forward. Follow the article for a full walkthrough of how to do it.

And finally...

“That code remains the coolest code I’ve ever written to this day—and you can see it for yourself at the bottom of this page.”