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
.swiftfiles 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →