Swift SDK for Temporal by Apple

1 month ago 1

Temporal is a distributed, scalable, durable, and highly available orchestration engine used to execute asynchronous, long-running business logic in a scalable and resilient way.

  • 🚀 Swift package for authoring Temporal workflows and activities
  • 📦 Compatible with Swift Package Manager
  • 📱 Supports Linux and macOS
  • 🔧 Built with Swift 6.2+ and Xcode 26+

🔗 Jump to:

The Temporal Swift SDK provides a package for building distributed, durable workflows and activities using Swift's modern concurrency features. Temporal enables you to build reliable applications that recover from failures, scale dynamically, and maintain long-running business processes with confidence.

Key Features:

  • 🔄 Durable Workflows: Build fault-tolerant workflows that survive infrastructure failures
  • 🏗️ Scalable Architecture: Distribute workflow execution across multiple workers
  • Swift Concurrency: Native integration with Swift Structured Concurrency
  • 🎯 Type Safety: Compile-time type checking for workflow and activity definitions
  • 📊 Observability: Built-in support for logging, metrics and tracing
  • 🔧 Macro-based APIs: Simple @Workflow and @Activity macros to avoid boilerplate
  • 🧪 Testing Support: Easily test your workflows and activities

The Temporal Swift SDK excels in scenarios requiring reliable, long-running business processes such as:

🛒 E-commerce & Payment Processing

  • Order fulfillment workflows with inventory, payment, and shipping coordination
  • Multi-step payment processing with automatic retry and rollback capabilities
  • Subscription billing and recurring payment management

🔄 Data Processing & ETL

  • Large-scale data transformation pipelines with fault tolerance
  • Event-driven data processing with guaranteed delivery
  • Batch processing jobs with progress tracking and resumption

🏢 Business Process Automation

  • Approval workflows with human-in-the-loop interactions
  • Multi-system integration and orchestration
  • Document processing and compliance workflows

📊 Monitoring & Operations

  • Health check orchestration across distributed systems
  • Automated incident response and remediation
  • Scheduled maintenance and cleanup tasks
  • Swift version: Swift 6.2+

To install/upgrade Swift, see https://www.swift.org/install/

To use the Swift Temporal SDK in your Swift project, add it as a dependency in your Package.swift file:

dependencies: [ .package(url: "https://github.com/apple/swift-temporal-sdk.git", upToNextMinor: "0.1.0") ]
  1. Clone the repository

    git clone [email protected]/apple/swift-temporal-sdk.git
  2. Build the package

  3. Run tests

  4. Run an example

    # Install Temporal CLI from https://temporal.io/setup/install-temporal-cli temporal server start-dev cd Examples/Greeting swift run GreetingExample

Here's a simple example showing how to create a workflow and activity:

import Temporal import Logging // Define an activity @ActivityContainer struct GreetingActivities { @Activity func sayHello(input: String) -> String { "Hello, \(input)!" } } // Define a workflow @Workflow final class GreetingWorkflow { func run(input: String) async throws -> String { let greeting = try await Workflow.executeActivity( GreetingActivities.Activities.sayHello.self, options: ActivityOptions(startToCloseTimeout: .seconds(30)), input: input ) return greeting } } // Create worker and client @main struct MyApp { static func main() async throws { let worker = try TemporalWorker( configuration: .init( namespace: "default", taskQueue: "greeting-queue" ), target: .ipv4(address: "127.0.0.1", port: 7233), transportSecurity: .plaintext, activityContainers: GreetingActivities(), workflows: [GreetingWorkflow.self], logger: Logger(label: "worker") ) let client = try TemporalClient( target: .ipv4(address: "127.0.0.1", port: 7233), transportSecurity: .plaintext, logger: Logger(label: "client") ) // Execute workflow let result = try await client.executeWorkflow( GreetingWorkflow.self, options: .init(id: "greeting-1", taskQueue: "greeting-queue"), input: "World" ) print(result) // "Hello, World!" } }

Note

This SDK is currently under active development.

  • Release Cadence: Ad-hoc whenever changes land on main
  • Version Compatibility: Swift 6.2+ and macOS 15.0+ only

If you have any questions or need help, feel free to reach out by opening an issue.

Read Entire Article