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

> Discover the primary programming language of the Bitchat project, a cross-platform chat app. Learn how Swift 5.9 powers its modern features and build process.

- Repository: [permissionlesstech/bitchat](https://github.com/permissionlesstech/bitchat)
- Tags: getting-started
- Published: 2026-08-20

---

**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`](https://github.com/permissionlesstech/bitchat/blob/main/Package.swift) file at the repository root explicitly declares the Swift tools version and platform targets:

```swift
// 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`](https://github.com/permissionlesstech/bitchat/blob/main/bitchat/BitchatApp.swift), the application bootstrap uses SwiftUI's `@main` attribute:

```swift
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`](https://github.com/permissionlesstech/bitchat/blob/main/bitchat/BitchatApp.swift) | Application entry point and runtime setup | `@main`, `App` protocol, `@StateObject`, `Scene` |
| [`bitchat/Views/ContentView.swift`](https://github.com/permissionlesstech/bitchat/blob/main/bitchat/Views/ContentView.swift) | Main chat interface | SwiftUI `View` protocol, `body` computed property |
| [`bitchat/Services/NotificationService.swift`](https://github.com/permissionlesstech/bitchat/blob/main/bitchat/Services/NotificationService.swift) | Push notification handling | `async/await`, `Task`, structured concurrency |
| [`bitchat/Protocols/BitchatProtocol.swift`](https://github.com/permissionlesstech/bitchat/blob/main/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`](https://github.com/permissionlesstech/bitchat/blob/main/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`](https://github.com/permissionlesstech/bitchat/blob/main/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`](https://github.com/permissionlesstech/bitchat/blob/main/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`](https://github.com/permissionlesstech/bitchat/blob/main/BitchatApp.swift) entry point conforms to the SwiftUI `App` protocol, and views like [`ContentView.swift`](https://github.com/permissionlesstech/bitchat/blob/main/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`](https://github.com/permissionlesstech/bitchat/blob/main/Package.swift) with `.iOS(.v16)` and `.macOS(.v13)` platform specifications. These minimum versions ensure full SwiftUI and concurrency feature availability.