-
Notifications
You must be signed in to change notification settings - Fork 254
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 6 commits
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,56 @@ | ||
| --- | ||
| 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
|
||
| The [Temporal Swift SDK](https://github.com/apple/swift-temporal-sdk) is now available as an open source project. This Swift package enables you to build reliable distributed systems using Temporal’s durable execution platform. | ||
davelester 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. Rather than develop these resiliency features into every application or service you develop, Temporal offers the pattern of a __workflow__. Workflows encapsulate your code so it runs durably and handles many common failure scenarios. | ||
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| With the Temporal Swift SDK, you can build resilient workflows that survive infrastructure failures. The SDK brings another essential tool for developers that build highly reliable and scalable production cloud services. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
FranzBusch marked this conversation as resolved.
Show resolved
Hide resolved
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ## Writing durable workflows in Swift | ||
|
|
||
| The Temporal Swift SDK enables developers to write reliable and durable workflows. Previously, 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 SDK provides a seamless Swift developer experience by: | ||
|
|
||
| - Using familiar async/await patterns and Structured Concurrency to build maintainable workflow code. | ||
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - Leveraging Swift's strong type system to catch errors at build time rather than runtime. | ||
| - Providing macros to reduce boilerplate when authoring workflows. | ||
|
|
||
| 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.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
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. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - Data processing & ETL where you may be performing large-scale data transformation pipelines. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - Business process automation with approval workflows and human-in-the-loop interactions. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - Monitoring and operations with scheduled maintenance and cleanup tasks. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## 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
|
||
| Temporal has also published a [blog post](https://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. | ||
FranzBusch marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
FranzBusch marked this conversation as resolved.
Outdated
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](https://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. | ||
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
davelester marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Community and feedback | ||
|
|
||
| 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.