Skip to main content

Installation

Prism is distributed as a Swift package. No Homebrew, no CocoaPods — add it to your Package.swift.

Requirements

RequirementMinimum
Swift6.3+
Xcode16.4+
iOS / macOS / tvOS / watchOS / visionOS26+
PrismServer uses Network.framework — macOS only for server targets. Client modules work on all Apple platforms.

Swift Package Manager

Client app (iOS/macOS)

Package.swift
// swift-tools-version: 6.0
import PackageDescription

let package = Package(
    name: "my-app",
    platforms: [.iOS(.v17), .macOS(.v14)],
    dependencies: [
        .package(url: "https://github.com/byescaleira/prism.git", from: "4.4.0")
    ],
    targets: [
        .target(
            name: "my-app",
            dependencies: [
                .product(name: "Prism", package: "prism")
            ]
        )
    ]
)
import Prism gives you PrismUI, PrismArchitecture, PrismNetwork, PrismStorage, PrismSecurity, PrismIntelligence, and PrismCapabilities.

Server API

Package.swift
// swift-tools-version: 6.0
import PackageDescription

let package = Package(
    name: "my-server",
    platforms: [.macOS(.v14)],
    dependencies: [
        .package(url: "https://github.com/byescaleira/prism.git", from: "4.4.0")
    ],
    targets: [
        .executableTarget(
            name: "my-server",
            dependencies: [
                .product(name: "PrismServer", package: "prism")
            ]
        )
    ]
)

Full-stack (client + server)

Package.swift
// swift-tools-version: 6.0
import PackageDescription

let package = Package(
    name: "my-project",
    platforms: [.iOS(.v17), .macOS(.v14)],
    dependencies: [
        .package(url: "https://github.com/byescaleira/prism.git", from: "4.4.0")
    ],
    targets: [
        .target(name: "App", dependencies: [.product(name: "Prism", package: "prism")]),
        .executableTarget(name: "Server", dependencies: [.product(name: "PrismServer", package: "prism")])
    ]
)
Pin to a specific version for production: .package(url: "...", exact: "4.4.0"). Use from: for automatic minor/patch updates.

Available Products

Import only what you need:
ProductIncludes
PrismUmbrella — UI, Architecture, Network, Foundation, Intelligence, Capabilities, Video
PrismServerHTTP server, routing, middleware, database, WebSocket, GraphQL, MCP
PrismUI100+ components, design tokens, theming
PrismArchitectureStore, reducer, middleware, router
PrismNetworkHTTP client, WebSocket client, cache, retry
PrismStorageDefaults, Disk, Memory, SwiftData, Keychain
PrismSecurityBiometrics, encryption, cert pinning, JWT
PrismIntelligenceCoreML, Apple Intelligence, NLP/RAG
PrismGamificationChallenges, streaks, leaderboards
PrismCapabilitiesStoreKit, HealthKit, Camera, Location
PrismFoundationCore utilities — logging, extensions, protocols

Verify Installation

ContentView.swift
import Prism

struct ContentView: View {
    var body: some View {
        PrismButton("Hello, Prism!", variant: .filled) {
            print("It works!")
        }
        .prismTheme(.default)
    }
}
swift build
If it compiles, you’re good. Open in Xcode to run on simulator.

IDE Setup

open Package.swift
Xcode resolves dependencies automatically. Full autocomplete, jump-to-definition, and debugging.

Server: Docker & Scaffolding

Dockerfile
# Build stage
FROM swift:6.0-jammy AS builder
WORKDIR /app
COPY Package.swift Package.resolved ./
RUN swift package resolve
COPY Sources/ Sources/
RUN swift build -c release

# Run stage
FROM swift:6.0-jammy-slim
WORKDIR /app
COPY --from=builder /app/.build/release/my-server .
EXPOSE 8080
CMD ["./my-server"]
docker build -t my-server .
docker run -p 8080:8080 my-server
import PrismServer

try PrismServerScaffold.generate(name: "my-api", directory: "./my-api")
Creates a ready-to-run project with Package.swift, main.swift, Dockerfile, and .gitignore.
Prism reads configuration from environment variables and .env files via PrismConfig:
.env
PORT=3000
HOST=0.0.0.0
DATABASE_PATH=./data/app.db
PRISM_ENV=production
let config = PrismConfig.load()
let port = config.port              // from PORT (default 8080)
let isProd = config.isProduction    // checks PRISM_ENV == "production"
let dbPath = config.get("DATABASE_PATH", default: ":memory:")
Supports environment profiles: .env.env.{PRISM_ENV} → environment variables (highest priority).

Next Steps

Quickstart

Build an iOS app or server API — pick your path.

UI Components

Explore 100+ SwiftUI components with design tokens.

State Management

Build reactive apps with PrismStore and reducers.

Server Core

Routing, middleware pipeline, request/response lifecycle.