Swift: what we build with it and why
We write native iOS apps for our platforms in Swift, plus libraries with a clean core: the interface in SwiftUI, widgets in WidgetKit and notifications through APNs.
Swift in real screenshots
The projects on this page on the screens from the portfolio and the case studies, each with a short description and the way to the full one.
Plazer: iOS app
A native SwiftUI client: the session in the Keychain, live messages over WebSocket and the same logic layer as on Android.
When Swift, and when something else
A technology has to fit the place the code will run and the team that will take it over. The final choice is made in the quote, together with you.
We pick Swift
Native iOS apps
Flaem and Plazer have SwiftUI apps on iOS that look and behave like the rest of the system. The Flaem client covers the panel with a notification feed, Plazer its live conversations over WebSocket.
Notifications through APNs
A native app gets notifications through APNs even when it is closed, and a tap opens the right screen. An admin lands straight on the server that has a problem.
Widgets in WidgetKit
Widgets on the iPhone home screen can only be built with WidgetKit, which means Swift. The Flaem client shows the key information in them without opening the app.
The session in the Keychain
Plazer keeps the session in the iOS Keychain, not in an ordinary app file. Access to the sign-in data is guarded by the system.
The same logic as on Android
Plazer on iOS uses the same logic layer as on Android, and SwiftUI only draws the interface. A change in the logic reaches both phones.
A library and a program in one package
The kite interpreter keeps the whole Scheme language in the KiteCore library, and the REPL is a separate, thin program in the same Swift package. XCTest checks every layer. We generate Xcode projects from a file with XcodeGen, so several people do not fight over the project file.
We pick something else
An Android app
On Android, widgets, FCM notifications and Jetpack Compose are handled by Kotlin code. Flaem and Plazer have separate Kotlin apps there.
The same features on many platforms
When iOS is one of several platforms with the same features, one codebase in React Native with TypeScript or in Flutter costs less. We pick Swift when the app needs what only iOS has.
A first version without the store
A TypeScript web app reaches people right after deployment, with no App Store review. To test an idea that is usually enough.
Cryptography and the protocol
Plazer's encryption core is in Rust and has one implementation for every app. A second copy in Swift would mean a second protocol to check.
The app's back end
Swift runs on servers too, but the services our apps talk to are in Go or Rust. The Plazer hub is in Go, and the Flaem core in Rust.
A program for Mac, Windows and Linux
We write a desktop program that must also run on Windows and Linux in C# with Avalonia. That is how the Flaem and Plazer desktop apps were built.
Swift compared, point by point
Each need on a row of its own, with what each of the two columns gives you on it side by side.
Notifications
Widgets
Time to a first version
Sign-in data
Shipping a fix
Background work
Hardware to build on
Swift in all our code
How many lines we have written in Swift, and what part of everything we have written that is. We count the lines added in the commits of our repositories, language by language.
The libraries these projects stand on
From the dependency files of our repositories. With each, one sentence on what we use it for.
SwiftUI
The app interface.
WidgetKit
Home-screen widgets.
XcodeGen
The Xcode project generated from a file.
XCTest
Logic tests.
Questions about Swift
Answers about Swift, our projects and the numbers on this page.
Read next
Write-ups of the projects on this page and an overview of every technology.
A project in Swift?
Describe what you want to build. We reply within an hour and tell you plainly whether this technology is a good choice.



