VulCode

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.

All technologies

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.

Ordering a Minecraft server in the Flaem app: the package, the variant and the billing period

Flaem: iOS app

A panel client with a notification feed and home-screen widgets.

A new Plazer account without an email or phone number, with a recovery key

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.

This is how we write it in our services

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.

iOS clientNative SwiftWeb app

Notifications

APNs with full control
Web push once installed

Widgets

Yes
No

Time to a first version

Longer, with App Store review
Shorter

Sign-in data

The iOS Keychain
Browser storage

Shipping a fix

After App Store review
Right after deployment

Background work

IOS background tasks
In practice only with the app open

Hardware to build on

A Mac with Xcode
Any computer

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.

116,812
lines written in Swift
2.2%
of all the lines we have written
4
repositories with Swift code
8th
place among 26 languages

The libraries these projects stand on

From the dependency files of our repositories. With each, one sentence on what we use it for.

Plazer widgets on the phone screen: new messages and a voice room
On call in the Flaem phone app: alarms with action buttons and the ticket queue
  • 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.

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.