-
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 all 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,53 @@ | ||
| --- | ||
| layout: new-layouts/post | ||
| published: true | ||
| date: 2025-11-10 13:40:00 | ||
| title: "Introducing Temporal Swift SDK: Building durable and reliable workflows" | ||
| author: [FranzBusch] | ||
| category: "Developer Tools" | ||
| featured-image: | ||
| url: '/assets/images/swift-temporal-sdk-blog/[email protected]' | ||
| alt: 'Featured blog image with the diagram of a Temporal workflow' | ||
| featured-image-dark: | ||
| url: '/assets/images/swift-temporal-sdk-blog/[email protected]' | ||
| alt: 'Featured blog image with the diagram of a Temporal workflow' | ||
| --- | ||
|
|
||
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. | ||
|
|
||
| Building reliable distributed systems requires handling failures gracefully, coordinating complex actions across multiple services, and ensuring long-running processes complete successfully. Rather than develop these resiliency features into every application or service you develop, an alternative approach is to use __workflows__. Workflows encapsulate your code so it runs durably and handles many common failure scenarios. | ||
|
|
||
| Temporal is widely used for workflow orchestration across many languages. With the release of the SDK, Temporal is now available for Swift developers building production cloud services. | ||
davelester marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ## Writing durable workflows in Swift | ||
|
|
||
| Durable workflows run to completion even when infrastructure fails. If your server crashes mid-execution, Temporal automatically resumes the workflow from where it left off with no lost state or manual intervention required. By bringing this capability to the Swift ecosystem, developers can focus on application logic while Temporal handles state management, retries, and recovery. | ||
|
|
||
| The SDK provides a seamless Swift developer experience by: | ||
|
|
||
| - Using familiar async/await patterns and structured concurrency to build maintainable workflow code. | ||
| - Leveraging Swift's strong type system to catch errors at build time rather than runtime. | ||
| - Providing macros to reduce boilerplate when authoring workflows. | ||
|
|
||
| Temporal workflows are particularly valuable for handling multi-step coordination in applications that must survive failures, such as data pipelines, business automation, payment processing, and operational 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. | ||
| - **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](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, check out the [general Temporal documentation](https://docs.temporal.io/), which provides valuable context for building robust distributed systems. For a video introduction, watch this [conference presentation](https://www.youtube.com/watch?v=2KW78hoPBWA) from Server-Side Swift 2025 where the project was announced. | ||
|
|
||
| ## 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. | ||
|
|
||
FranzBusch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| The project is actively developed and we welcome contributions, bug reports, and feature requests. Ready to start building reliable distributed systems? Visit the [Temporal Swift SDK repository](https://github.com/apple/swift-temporal-sdk) to get started. | ||
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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.