clockworklabs / clockworklabs/SpacetimeDB

Add Swift SDK and demo client support

Open
#4,819 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
25.2k
Forks
1.1k
Avg merge
2d 7h
Merged PRs (30d)
46

Description

This issue tracks reimplementing the work from stale PR #4509, which has been closed because it is too far out of date to merge directly.

Original pull request

What the original PR was trying to do

What Native Swift SDK for SpacetimeDB, plus Swift code generation, two end-to-end Swift demo clients, and CI/E2E tooling in the monorepo. This PR adds first-class Swift support via: - sdks/swift pure Swift package runtime - Swift backend in crates/codegen + CLI integration (spacetime generate --lang swift) - Swift demo clients: - demo/simple-module/client-swift - demo/ninja-game/client-swift - Swift-focused CI: - SDK/package build + test workflow - procedure callback E2E workflow - generated-binding drift check Why SpacetimeDB needed a native Swift client path for Apple platforms and realtime Swift UI/game workloads without relying on non-Swift client layers. This PR enables: - Native iOS/macOS integration through Swift Package Manager - Typed Swift bindings generated from module schema - End-to-end validation against real local modules - CI enforcement that generated Swift bindings r...

Closure context

  • Just want to make the same comment here as in the Kotlin PR:

https://github.com/clockworklabs/SpacetimeDB/pull/4471#issuecomment-4247615903

  • Tyler explicitly pointed this PR at the same closure rationale as the Kotlin PR: long-term language support should be approached in a way that works coherently across client and server support, rather than by continuing to accumulate fully separate SDK/codegen stacks.

Reimplementation notes

  • Reimplement this work on top of current master in a new PR.
  • Keep the original PR linked as historical context and as a source of useful implementation ideas where still relevant.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review stale PR #4509 and compare its approach with current master. Start with sdks/swift, crates/codegen, CLI integration, demo/simple-module/client-swift, and demo/ninja-game/client-swift, then inspect the referenced CI and E2E tooling. Done means the Swift SDK, generation path, demo clients, and validation workflows are reimplemented coherently in a new PR.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, rust, swift
Domain
build-system, ci-cd, devtools, mobile-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.