What Is the Primary Programming Language Used in the Bitchat Project?

Bitchat is written almost entirely in Swift 5.9, using modern language features including SwiftUI, async/await, and Swift Package Manager to build a cross-platform chat application for iOS 16+ and macOS 13+.

The permissionlesstech/bitchat repository is a Swift-native project with no significant code in other languages. Every core component—from the app entry point to network services and UI rendering—is implemented in .swift files, leveraging Swift's type-safe concurrency and declarative UI framework.

Evidence from the Source Code

Package Manifest Confirms Swift 5.9

The Package.swift file at the repository root explicitly declares the Swift tools version and platform targets:

// swift-tools-version:5.9
import PackageDescription

let package = Package(
    name: "bitchat",
    platforms: [.iOS(.v16), .macOS(.v13)],
    dependencies: [
        .package(url: "https://github.com/21-DOT-DEV/swift-secp256k1", exact: "0.21.1")
    ],
    targets: [
        .executableTarget(name: "bitchat", dependencies: [.product(name: "P256K", package: "swift-secp256k1")])
    ]
)

This manifest is itself a Swift file, and the swift-tools-version:5.9 directive ensures all package logic uses Swift 5.9 syntax and features.

SwiftUI App Entry Point

In bitchat/BitchatApp.swift, the application bootstrap uses SwiftUI's @main attribute:

import SwiftUI

@main
struct BitchatApp: App {
    @StateObject private var runtime = AppRuntime()

    var body: some Scene {
        WindowGroup {
            ContentView()
                .environmentObject(runtime.publicChatModel)
                .environmentObject(runtime.privateConversationModel)
        }
    }
}

This pattern is exclusive to Swift and demonstrates how deeply integrated the language is into the app's architecture.

Key Swift Files in the Bitchat Codebase

File Purpose Swift Features Used
bitchat/BitchatApp.swift Application entry point and runtime setup @main, App protocol, @StateObject, Scene
bitchat/Views/ContentView.swift Main chat interface SwiftUI View protocol, body computed property
bitchat/Services/NotificationService.swift Push notification handling async/await, Task, structured concurrency
bitchat/Protocols/BitchatProtocol.swift Core protocol definitions Protocol-oriented programming, associated types

All files use the .swift extension and import Apple frameworks such as SwiftUI, Foundation, and Combine.

Modern Swift Features Powering Bitchat

The Bitchat project demonstrates production use of several advanced Swift capabilities:

  • SwiftUI — Declarative user interface framework replacing UIKit/AppKit
  • async/await — Structured concurrency for network operations and background tasks
  • Swift Package Manager — Native dependency and build management
  • Property wrappers (@StateObject, @Published, @EnvironmentObject) — Reactive state management
  • Protocol-oriented design — Extensive use of protocols for modularity and testability

Summary

  • Bitchat's primary programming language is Swift 5.9, as declared in Package.swift
  • The entire codebase consists of .swift files with no secondary languages for core functionality
  • SwiftUI provides the user interface layer across iOS and macOS
  • Swift Package Manager handles all dependencies and build configuration
  • Modern Swift features—async/await, property wrappers, and protocol-oriented programming—define the architecture

Frequently Asked Questions

Is Bitchat written entirely in Swift?

Yes, according to the source code analysis, Bitchat contains no significant implementation in other programming languages. All source files use the .swift extension, including the package manifest (Package.swift), application entry point, views, services, and protocol definitions.

What Swift version does Bitchat require?

Bitchat requires Swift 5.9, as specified by the swift-tools-version:5.9 directive in Package.swift. This version enables modern concurrency features and improved SwiftUI performance that the application relies upon.

Does Bitchat use UIKit or AppKit?

No—Bitchat uses SwiftUI exclusively for its user interface. The BitchatApp.swift entry point conforms to the SwiftUI App protocol, and views like ContentView.swift implement the View protocol with declarative body properties rather than imperative UIKit/AppKit code.

What platforms does Bitchat support?

Bitchat targets iOS 16.0 or later and macOS 13.0 or later, as defined in Package.swift with .iOS(.v16) and .macOS(.v13) platform specifications. These minimum versions ensure full SwiftUI and concurrency feature availability.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →