-
Notifications
You must be signed in to change notification settings - Fork 255
Blog post to introduce the Temporal Swift SDK #1221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
47054cd
Blog post to introduce the Temporal Swift SDK
FranzBusch 19c184e
Apply suggestion from @davelester
FranzBusch cb5f6b5
Apply suggestions from code review
FranzBusch e1eae02
More edits
FranzBusch c316f44
Remove commented out fragment
FranzBusch bb0a947
https links
FranzBusch 91726ad
Add images
FranzBusch a87dfc9
Fix heading
FranzBusch 6c45402
another -> an
FranzBusch 30ed97b
Address feedback
FranzBusch 2877d7b
Remove duplicate link
FranzBusch aa545be
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester 7e02282
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester ae7fc79
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester 5612183
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester fda49b3
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester dc720ac
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester 560d23b
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester 6eab41d
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester 39e301b
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester 5de8b44
Update _posts/2025-11-10-swift-temporal-sdk.md
davelester File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -373,7 +373,7 @@ FranzBusch: | |
| email: [email protected] | ||
| github: FranzBusch | ||
| gravatar: 3b34dbe9f3870b0e9bf1f4cb0750fa3d | ||
| about: "Franz Busch is a member of a team developing foundational server-side Swift libraries at Apple, and is a member of the SSWG." | ||
| about: "Franz Busch is a member of the Ecosystem Steering Group and the Swift Server Workgroup. He works in a team developing foundational server-side Swift libraries at Apple." | ||
|
|
||
| adrian-prantl: | ||
| name: Adrian Prantl | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| --- | ||
| layout: new-layouts/post | ||
| published: true | ||
| date: 2025-11-10 10:00:00 | ||
| title: "Introducing Temporal Swift SDK: Building durable and reliable workflows" | ||
| author: [FranzBusch] | ||
| category: "Developer Tools" | ||
FranzBusch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| --- | ||
|
|
||
davelester marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| [Temporal Swift SDK](https://github.com/apple/swift-temporal-sdk), a Swift package for building reliable distributed systems with durable execution, is now available as an open source project. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Building reliable distributed systems requires handling failures gracefully, coordinating complex workflows across multiple services, and ensuring long-running processes complete successfully. With the Temporal Swift SDK, you can now build fault-tolerant applications using Swift's modern concurrency features. The Temporal Swift SDK enables you to: | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| - **Build resilient workflows that survive infrastructure failures**, allowing your applications to recover automatically from crashes, network issues, or service restarts without losing state. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **Orchestrate complex distributed systems with type-safe APIs**, leveraging Swift's strong type system to catch errors at build time rather than runtime. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **Integrate seamlessly with Swift Concurrency**, using familiar async/await patterns and Structured Concurrency to build maintainable workflow code. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
FranzBusch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| Temporal has also published a [blog post](http://temporal.io/blog/announcing-the-swift-temporal-sdk) detailing the introduction of the Temporal Swift SDK highlighting the unique advantages this brings to Swift developers building distributed systems. | ||
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| This new Temporal Swift SDK fills a critical gap in the Swift ecosystem, enabling developers to write reliable and durable workflows with native Swift APIs and modern concurrency patterns. Before this SDK, Swift developers had to resort to more traditional approaches for building fault-tolerant workflows, such as implementing custom state machines on top of database systems or message queuing services, solutions that often required significant boilerplate code and careful handling of edge cases that Temporal manages automatically. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| The design and implementation of the Temporal Swift SDK has been informed and validated by multiple production use-cases, ensuring that the SDK meets real-world requirements for performance, reliability, and developer experience. | ||
|
|
||
FranzBusch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| The Temporal Swift SDK can be used across a wide range of real-world scenarios where reliability and coordination are paramount, including: | ||
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - E-commerce and payment processing where multi-step payment processing requires automatic retry and rollback capabilities | ||
| - Data processing & ETL where you may be performing large-scale data transformation pipelines | ||
| - Business process automation with approval workflows and human-in-the-loop interactions | ||
| - Monitoring and operations with scheduled maintenance and cleanup tasks | ||
|
|
||
| ## What is Temporal and why does it matter? | ||
|
|
||
| [Temporal](https://temporal.io) is an open source platform for building reliable distributed applications. At its core is the concept of durable execution, your code runs to completion even in the face of infrastructure failures. When a worker crashes or restarts, Temporal automatically resumes your workflow from where it left off, without requiring you to write complex retry logic or state management code. This is achieved through Temporal's architecture, which separates workflow orchestration from actual work execution: | ||
|
|
||
| - **Workflows** define the overall business logic and coordination. They describe the sequence of steps, decision points, and error handling for a process. Workflows must be deterministic given the same inputs and history, they must always make the same decisions. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **Activities** perform the actual work, such as calling external APIs, processing data, or interacting with databases. Activities should be idempotent, meaning they can be safely retried without causing unintended side effects. | ||
|
|
||
| Modern distributed systems face common challenges: coordinating multiple services, handling partial failures, ensuring consistency across operations, and managing long-running processes. Traditional approaches require building custom retry logic, state machines, and coordination mechanisms. Temporal provides a platform that handles these concerns, allowing you to focus on your business logic. | ||
|
|
||
FranzBusch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ## Getting started | ||
|
|
||
| To get started with the Temporal Swift SDK, explore its [documentation](https://swiftpackageindex.com/apple/swift-temporal-sdk/main/documentation/temporal) which provides detailed guides for implementing workflows and activities. The repository also includes a rich collection of [example projects](http://github.com/apple/swift-temporal-sdk/tree/main/Examples), demonstrating the SDK's capabilities across different use cases from simple task orchestration to complex multi-step business processes. For a deeper understanding of Temporal's core concepts and architectural patterns, be sure to check out the [general Temporal documentation](https://docs.temporal.io/), which provides valuable context for building robust distributed systems. | ||
|
|
||
| Community and feedback | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Temporal Swift SDK is an open source project and we're eager to hear from the Swift community. Whether you're building microservices, coordinating long-running processes, or simply curious about durable execution, we'd love to know how the Temporal Swift SDK works for you. The SDK provides a powerful foundation for building reliable distributed systems in Swift. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| The project is actively developed and we welcome contributions, bug reports, and feature requests. As with any distributed systems tool, different applications and environments present unique challenges, and community feedback is essential for improving the SDK's effectiveness across diverse Swift codebases. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
FranzBusch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| Ready to start building reliable distributed systems? Visit the [Temporal Swift SDK repository](https://github.com/apple/swift-temporal-sdk) to get started. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.