← All docs

iOS App

The freeq iOS app is a native SwiftUI client built on the Rust SDK via FFI (UniFFI).

Features

  • Bluesky OAuth login — ASWebAuthenticationSession flow
  • Full chat — Channels, DMs, threads, replies, reactions, edits, deletes
  • Media capture — Photo library, camera, and voice recording (hold-to-record, slide to cancel)
  • Inline media — Images with pinch-to-zoom lightbox, video with download+play, audio player
  • E2EE DMs — Full Double Ratchet via Rust FFI
  • Discover tab — Browse and search public channels
  • Swipe gestures — Swipe to open sidebar, swipe channel actions (mark read, leave)
  • Haptic feedback — Throughout the app
  • Push notifications — On mention/DM (permission requested on first mention)
  • Skeleton loading — Shimmer placeholders during load
  • Exponential backoff — Automatic reconnection (2→4→8→16→30s)
  • Background/foreground lifecycle — Reconnects on foreground

Architecture

SwiftUI Views
     ↕
AppState (ObservableObject)
     ↕
SwiftEventHandler (bridges Rust events → SwiftUI)
     ↕
FreeqSDK.xcframework (UniFFI Swift bindings)
     ↕
freeq-sdk-ffi (Rust FFI wrapper)
     ↕
freeq-sdk (Rust SDK)

Building

# Prerequisites: Xcode, Rust toolchains for iOS
rustup target add aarch64-apple-ios aarch64-apple-ios-sim

# Build the SDK framework
./freeq-ios/build-rust.sh

# Open in Xcode
open freeq-ios/freeq.xcodeproj

Requires sudo xcode-select -s /Applications/Xcode.app/Contents/Developer (not just Command Line Tools).

Target

  • iOS 18.0+
  • iPhone and iPad
Supported by
Powered by