LabHub

블로그

모던 Swift & Apple 개발 2026 완벽 가이드 - Swift 6 Strict Concurrency · SwiftData · Foundation Models · SwiftUI 5 · Vapor · TCA 심층 분석

한국어English日本語

프롤로그 — 2026년 Swift가 다시 흥미로워진 이유

2014년 WWDC에서 Chris Lattner가 무대에 올라 "One more thing... a new programming language called Swift"라고 말했을 때, 많은 사람은 이것을 Objective-C의 더 깔끔한 후속자 정도로 받아들였다. 10년이 지난 2026년 5월, 그 평가는 완전히 바뀌어 있다.

Swift는 이제 단순히 iOS 앱을 만드는 언어가 아니다. Swift 6.1의 strict concurrency 모델은 데이터 레이스를 컴파일타임에 잡고, region-based isolation은 Sendable 어노테이션의 보일러플레이트를 크게 줄였다. SwiftData는 Codable 기반 영속화 + CloudKit 동기화를 한 줄의 매크로로 끝내고, Foundation Models 프레임워크는 약 30억 파라미터의 온디바이스 LLM을 Apple Silicon Neural Engine 위에서 돌린다.

서버에서는 Vapor 4와 Hummingbird 2가 async/await 위에 깔끔한 라우팅 DSL을 올렸고, AWS Lambda Swift는 콜드 스타트 100ms를 끊는다. Embedded Swift는 Raspberry Pi Pico와 ARM Cortex-M 위에서 malloc 없이 동작한다. Skip은 Swift 코드를 Kotlin으로 트랜스파일해서 Android에 떨군다.

이 글은 Swift 6 동시성 모델부터 SwiftData History API, Foundation Models tool calling, SwiftUI 5 ContainerValues, App Intents, Swift Testing, Swift Macros, SwiftPM 6, TCA 1.x, Vapor 4, Embedded Swift, Swift Wasm 6까지 — 2026년 Apple 개발자가 알아야 할 모든 변화를 한 번에 정리한다.


1장 · Swift 6 Strict Concurrency — 데이터 레이스를 컴파일타임에 잡다

Swift 6.0은 2024년 9월 GA됐고, 2026년 5월 stable은 6.1.2다. 가장 큰 변화는 strict concurrency checking이 기본이 됐다는 것이다.

Swift 5에서는 -strict-concurrency=complete 플래그를 켜야 데이터 레이스 경고가 나왔다. Swift 6은 이걸 기본 모드로 만들었다. 무엇이 바뀌나?

// Swift 5에서는 경고, Swift 6에서는 에러
class Counter {
    var count = 0
}

func runConcurrently() async {
    let counter = Counter()
    Task { counter.count += 1 }
    Task { counter.count += 1 }
    // ❌ Counter가 Sendable이 아닌데 Task 클로저로 캡처됨
}

이걸 잡으려면 actor로 감싸거나, Sendable 프로토콜을 명시적으로 채택해야 한다. 처음에는 마이그레이션 비용이 크지만, 일단 통과하고 나면 데이터 레이스 클래스 버그가 사실상 제거된다.


2장 · Region-Based Isolation — Sendable의 보일러플레이트를 줄이다

Swift 6에 들어온 가장 우아한 기능 중 하나가 region-based isolation(SE-0414)이다. 핵심 아이디어 — non-Sendable 값이라도 컴파일러가 "다른 스레드에서 접근하지 않는다"는 것을 추적할 수 있다면 안전하게 전달할 수 있다.

// non-Sendable 클래스
class ImageBuffer {
    var pixels: [UInt8] = []
}

func process() async {
    let buffer = ImageBuffer()
    buffer.pixels = generatePixels()
    
    // Swift 5 strict: 에러 — ImageBuffer가 Sendable이 아님
    // Swift 6: OK — buffer는 이 시점부터 호출자가 접근하지 않으므로 안전하게 transfer 가능
    await processOnBackground(buffer)
}

컴파일러는 buffer가 함수 종료 전에 호출자 region에서 사용되지 않는다는 것을 정적 분석으로 증명하고, transfer를 허용한다. 이게 없었다면 Sendable을 따로 채택하거나 모든 데이터를 복사해야 했다.

실제 코드 베이스에서 region isolation 덕에 Sendable 어노테이션 50~70%를 제거할 수 있다는 게 일반적 보고다. iOS 17·18 시대의 SwiftUI 코드가 Swift 6에서 훨씬 깔끔해진 이유.


3장 · @MainActor 개선과 nonisolated(unsafe)

SwiftUI는 모든 View가 암묵적으로 @MainActor인 모델이다. Swift 6은 이걸 더 정교하게 만들었다.

@MainActor
class ViewModel {
    var items: [Item] = []
    
    nonisolated(unsafe) static let shared = ViewModel()
    // ↑ 이게 없으면 글로벌 ViewModel.shared는 main actor 격리 위반
}

nonisolated(unsafe)는 마이그레이션 도구다. 시간을 내서 진짜 actor로 바꿔야 하지만, 우선 컴파일은 통과시키고 빠르게 출시할 수 있게 해준다.


4장 · Embedded Swift — Raspberry Pi Pico에서 malloc 없이

2024년에 공개된 Embedded Swift는 Swift를 임베디드 마이크로컨트롤러로 끌어내린 프로젝트다. 2026년 5월 시점에 production-ready 직전 단계.

핵심 제약:

지원 타깃:

@_extern(c, "gpio_put")
func gpio_put(pin: UInt32, value: Bool)

@main struct Blink {
    static func main() {
        while true {
            gpio_put(pin: 25, value: true)
            sleep_ms(500)
            gpio_put(pin: 25, value: false)
            sleep_ms(500)
        }
    }
}

Apple은 자기네 SoC 펌웨어를 점진적으로 Swift로 옮기고 있고, 한국 라온시큐어 같은 보안 회사도 ARM Cortex-M HSM 펌웨어에 Embedded Swift를 실험 중이다.


5장 · SwiftData — Core Data를 대체하는 Codable 영속화

SwiftData는 iOS 17에서 처음 등장한 영속화 프레임워크다. Core Data를 모던 Swift 위에 재포장한 것에 가깝지만, 차이가 크다.

iOS 18에서 들어온 주요 기능:

@Model
final class Note {
    var title: String
    var body: String
    var createdAt: Date
    
    @Attribute(.indexBinary)
    var tags: [String]
    
    init(title: String, body: String) {
        self.title = title
        self.body = body
        self.createdAt = .now
    }
}

// 쿼리
let recent = try modelContext.fetch(
    FetchDescriptor(predicate: #Predicate { $0.createdAt > Date.distantPast })
)

CloudKit 통합도 한 줄. ModelConfiguration(cloudKitDatabase: .private("iCloud.com.example"))만 추가하면 자동 동기화. 2026년 시점에서 신규 앱이 Core Data를 새로 쓸 이유가 거의 없다.


6장 · Observation Framework — @Observable 매크로

iOS 17에서 CombineObservableObject + @Published를 대체하는 새 framework가 들어왔다. 이름은 Observation.

Before (Combine 시대):

class ViewModel: ObservableObject {
    @Published var items: [Item] = []
    @Published var isLoading = false
}

After (Observation 시대):

@Observable
class ViewModel {
    var items: [Item] = []
    var isLoading = false
}

@Observable은 Swift Macro로 구현됐다. 컴파일 타임에 KeyPath 추적과 willSet 트리거를 자동으로 합성한다. 차이점:

대규모 앱일수록 리렌더 횟수가 줄어드는 효과가 크다.


7장 · Foundation Models — 온디바이스 LLM이 표준 API로

2024년 WWDC에서 공개된 Foundation Models 프레임워크는 Apple Intelligence의 핵심이다. iOS 18.4·macOS 15부터 정식 API로 풀렸다.

스펙:

기본 사용:

import FoundationModels

let session = LanguageModelSession()
let response = try await session.respond(to: "Summarize this email in 2 sentences: ...")
print(response.content)

핵심 기능 두 가지:

@Generable
struct WeatherQuery {
    var city: String
    var unit: TemperatureUnit
}

let query: WeatherQuery = try await session.respond(
    to: "How hot is it in Seoul in fahrenheit?",
    generating: WeatherQuery.self
)
// query.city == "Seoul", query.unit == .fahrenheit

서버 LLM과 비교하면 컨텍스트와 추론 능력은 약하지만, 온디바이스 + 무료 + 프라이버시라는 세 가지 강점이 비할 데 없다.


8장 · App Intents — Siri와 Apple Intelligence의 진입점

App Intents는 iOS 16에서 시작된 프레임워크인데, Apple Intelligence와 합쳐지면서 위상이 완전히 달라졌다. 2026년 시점에서 App Intent를 등록하면:

struct AddNoteIntent: AppIntent {
    static let title: LocalizedStringResource = "Add Note"
    
    @Parameter(title: "Title")
    var noteTitle: String
    
    @Parameter(title: "Body")
    var body: String
    
    func perform() async throws -> some IntentResult {
        let note = Note(title: noteTitle, body: body)
        try modelContext.insert(note)
        return .result(value: note.id)
    }
}

이게 등록되어 있으면 "노트 앱에 회의 메모 추가해줘"라는 Siri 명령이 정확한 매개변수로 매핑된다. 2026년 Apple은 App Intent 등록을 사실상 의무화하는 방향으로 가고 있다.


9장 · SwiftUI 5·6 — 애니메이션과 ContainerValues

iOS 17에서 SwiftUI 5, iOS 18에서 SwiftUI 6가 나왔다. 주요 변화들:

ScrollView {
    LazyVStack {
        ForEach(items) { item in
            Card(item)
                .scrollTransition { content, phase in
                    content
                        .scaleEffect(phase.isIdentity ? 1 : 0.85)
                        .opacity(phase.isIdentity ? 1 : 0.5)
                }
        }
    }
    .scrollTargetLayout()
}
.scrollTargetBehavior(.viewAligned)

이 정도 인터랙션을 UIKit으로 짜면 200줄, SwiftUI 5에서는 10줄.


10장 · Swift Charts 2.0 — 벡터화 렌더링과 3D

Swift Charts는 2022년에 처음 발표됐고 2026년 5월 stable은 2.0. 핵심 변화:

Chart {
    ForEach(data) { point in
        LineMark(
            x: .value("Time", point.time),
            y: .value("Value", point.value)
        )
        .interpolationMethod(.catmullRom)
        .foregroundStyle(by: .value("Series", point.series))
    }
}
.chartXSelection(value: $selectedTime)
.chartScrollableAxes(.horizontal)

데이터 분석 SwiftUI 앱이 2026년에 폭발적으로 늘어난 배경에는 Swift Charts 2.0의 기여가 크다.


11장 · Swift Testing — XCTest를 대체하는 모던 테스트 프레임워크

XCTest는 2014년 이래 Apple 플랫폼의 표준 테스트 프레임워크였지만, 매크로 기반 모던 Swift와 잘 맞지 않았다. 2024년 발표된 Swift Testing(swift-testing)이 그 자리를 빠르게 차지하고 있다.

import Testing

@Test func basicAddition() {
    #expect(2 + 2 == 4)
}

@Test(arguments: [1, 2, 3, 4, 5])
func square(value: Int) {
    #expect(value * value >= value)
}

@Test("Network call returns 200")
func networkSuccess() async throws {
    let response = try await fetchUser(id: 42)
    #expect(response.status == 200)
}

핵심 개선:

2026년 5월 stable은 swift-testing 0.10.x이고, Xcode 16부터 IDE에 1급 통합됐다.


12장 · Swift Macros — 컴파일 타임 코드 생성

Swift 5.9에서 도입된 매크로 시스템은 2026년에 완전히 안정화됐다. 두 가지 종류:

매크로는 swift-syntax 600 위에서 SwiftSyntax 트리를 받아 새로운 SwiftSyntax 트리를 반환하는 컴파일러 플러그인이다.

@freestanding(expression)
public macro stringify<T>(_ value: T) -> (T, String) = #externalMacro(
    module: "MyMacros",
    type: "StringifyMacro"
)

let (result, source) = #stringify(2 + 3)
// result == 5, source == "2 + 3"

매크로의 좋은 점:

단점은 빌드 시간 증가와 디버깅 어려움. 매크로 expansion을 디버깅하려면 Xcode "Expand Macro" 메뉴로 결과 코드를 펼쳐봐야 한다.


13장 · Swift Package Manager 6 + Swift Build

Swift Package Manager는 2026년에 6.0 메이저 업데이트가 들어왔다. 가장 큰 변화는 Swift Build의 도입이다.

Swift Build는 Apple이 xcodebuild의 내부 빌드 엔진을 오픈소스화한 것. 기존 SwiftPM의 llbuild를 점진적으로 대체하고, 결과적으로 SwiftPM 빌드와 Xcode 빌드가 같은 엔진 위에서 돈다.

SwiftPM 6의 다른 변화:

let package = Package(
    name: "MyApp",
    traits: [
        .default(enabledTraits: ["network"]),
        "logging",
    ],
    dependencies: [
        .package(url: "https://github.com/apple/swift-log", from: "1.5.0"),
    ],
    targets: [
        .target(
            name: "MyApp",
            dependencies: [
                .product(name: "Logging", package: "swift-log", condition: .when(traits: ["logging"]))
            ]
        )
    ]
)

이전까지 SwiftPM의 가장 큰 약점이었던 conditional dependency와 IDE 통합이 SwiftPM 6에서 한 번에 풀렸다.


14장 · Vapor 4.x — Server-Side Swift의 사실상 표준

Vapor는 2016년부터 시작된 Swift 서버 프레임워크다. 2026년 5월 stable은 4.95.

특징:

import Vapor

func routes(_ app: Application) throws {
    app.get("users", ":id") { req async throws -> User in
        guard let id = req.parameters.get("id", as: UUID.self) else {
            throw Abort(.badRequest)
        }
        return try await User.find(id, on: req.db).orThrow(.notFound)
    }
    
    app.post("users") { req async throws -> User in
        let payload = try req.content.decode(User.Create.self)
        let user = User(name: payload.name)
        try await user.save(on: req.db)
        return user
    }
}

Vapor 외에 Hummingbird 2(애플 사내 엔지니어들이 만든 가벼운 대안)와 AWS Lambda Swift Runtime(콜드 스타트 100ms 이하)이 자라고 있다. 한국에서는 토스 같은 회사가 일부 마이크로서비스를 Vapor로 옮긴 사례가 있다.


15장 · The Composable Architecture (TCA) 1.x

Point-Free의 Brandon Williams와 Stephen Celis가 만든 The Composable Architecture는 SwiftUI 시대의 가장 영향력 있는 아키텍처 라이브러리다. 2024년에 1.0이 GA됐고 2026년 5월 stable은 1.18.x.

핵심 개념:

@Reducer
struct CounterFeature {
    @ObservableState
    struct State {
        var count = 0
        var isLoading = false
    }
    
    enum Action {
        case incrementTapped
        case fetchNumberTapped
        case numberResponse(Int)
    }
    
    @Dependency(\.numberFact) var numberFact
    
    var body: some ReducerOf<Self> {
        Reduce { state, action in
            switch action {
            case .incrementTapped:
                state.count += 1
                return .none
            case .fetchNumberTapped:
                state.isLoading = true
                return .run { send in
                    let n = try await numberFact.random()
                    await send(.numberResponse(n))
                }
            case .numberResponse(let n):
                state.count = n
                state.isLoading = false
                return .none
            }
        }
    }
}

2024~2026 사이 들어온 중요한 변화:

대규모 SwiftUI 앱(특히 Kakao Pay·당근마켓·라인 일본 일부)에서 TCA 채택률이 빠르게 늘었다.


16장 · swift-async-algorithms와 swift-collections

표준 라이브러리만으로 부족한 경우를 위해 Apple은 swift-async-algorithmsswift-collections를 제공한다.

swift-async-algorithms:

let sensorStream: AsyncSequence<Reading, Error> = ...
for try await chunk in sensorStream.chunks(ofCount: 100) {
    let avg = chunk.map(\.value).reduce(0, +) / 100
    print("Avg over 100 samples: \(avg)")
}

swift-collections:

import Collections

var queue: Deque<Task> = []
queue.append(task1)
queue.prepend(urgentTask)
let next = queue.popFirst()

이 두 패키지는 사실상 "Swift 1.6 표준 라이브러리 확장팩" 위치다.


17장 · swift-syntax와 swift-distributed-actors

swift-syntax(600 시리즈)는 매크로 작성의 핵심이다. Swift 소스를 AST로 파싱하고 다시 인쇄하는 라이브러리.

import SwiftSyntax
import SwiftSyntaxMacros

public struct LoggedMacro: PeerMacro {
    public static func expansion(
        of node: AttributeSyntax,
        providingPeersOf declaration: some DeclSyntaxProtocol,
        in context: some MacroExpansionContext
    ) throws -> [DeclSyntax] {
        // declaration을 받아서 로그를 찍는 wrapper 메서드를 생성
        // ...
    }
}

swift-distributed-actors는 Actor 모델을 네트워크 너머로 확장한 프로젝트. 2024년 Apple이 GitHub에 공개했고, 2026년 5월 시점은 cluster 기능까지 GA. Erlang/Akka 같은 분산 시스템을 Swift로 짤 때 쓴다.

distributed actor ChatRoom {
    distributed func broadcast(_ message: String) async { ... }
}

let cluster = await ClusterSystem("MyCluster")
let room = try ChatRoom.resolve(id: roomID, using: cluster)
try await room.broadcast("Hello")

게임 백엔드, IoT 메시지 브로커, edge compute에 어울리는 도구. 한국 NCsoft 일부 신규 게임 서버가 swift-distributed-actors PoC를 돌렸다는 소문이 있다.


18장 · AWS Lambda Swift Runtime — 콜드 스타트 100ms

서버 Swift의 또 다른 영역은 AWS Lambda다. AWS Lambda Swift Runtime은 Apple과 AWS가 공동 관리하는 공식 런타임이고, 콜드 스타트가 보통 100ms 이하다.

import AWSLambdaRuntime

struct HelloHandler: LambdaHandler {
    typealias Event = APIGatewayV2Request
    typealias Output = APIGatewayV2Response
    
    func handle(_ event: Event, context: LambdaContext) async throws -> Output {
        return APIGatewayV2Response(statusCode: .ok, body: "Hello from Swift!")
    }
}

Lambda.run(HelloHandler.init)

배포는 swift build + zip + aws lambda update-function-code 3단계. Docker 이미지로 패키징도 가능.

장점:

단점:


19장 · Cross-Platform — Skip(Swift→Android)과 Swift Wasm 6

Swift는 Linux와 Windows에서 진작 동작했지만, 모바일 크로스 플랫폼은 오래 약점이었다. 2026년에는 두 가지 흥미로운 선택지가 있다.

Skip(skip.tools)은 Swift 코드를 Kotlin으로 트랜스파일해서 Android 앱을 만든다. SwiftUI를 그대로 쓰면 Skip이 Jetpack Compose 코드로 변환한다.

// 같은 SwiftUI 코드가...
struct ContentView: View {
    @State var count = 0
    var body: some View {
        VStack {
            Text("Count: \(count)")
            Button("Increment") { count += 1 }
        }
    }
}
// ↑ iOS에서는 SwiftUI로, Android에서는 Compose로 동작

Swift Wasm 6은 Swift를 WebAssembly로 컴파일한다. 2024년 Wasm 6가 GA되면서 component model 호환이 들어왔고, 브라우저와 서버리스 Wasm(Fastly, Cloudflare Workers) 양쪽에서 동작.

두 프로젝트 모두 "Apple 공식"은 아니지만 Swift workgroup이 적극 관여하고 있고, 2026년 시점에서 production 사례가 늘고 있다.


20장 · 한국/일본 Apple 개발 커뮤니티

Swift는 한국과 일본에서 강한 풀뿌리 커뮤니티를 가지고 있다.

한국:

일본:

영어권 자료만 보면 놓치기 쉬운데, 한국어/일본어 Swift 커뮤니티가 가지고 있는 노하우의 깊이는 만만치 않다.


21장 · 의사결정 가이드 — 어떤 도구를 언제 쓸까

질문 1. 어떤 플랫폼?
  ├─ iOS / macOS 단일 → SwiftUI 6 + SwiftData + Observation
  ├─ iOS + Android → Skip 또는 React Native / Flutter
  ├─ 서버 → Vapor 4 또는 Hummingbird 2
  ├─ AWS Lambda → AWS Lambda Swift Runtime
  ├─ 임베디드 → Embedded Swift
  └─ 브라우저 → Swift Wasm 6

질문 2. 영속화는?
  ├─ 로컬 단순 → SwiftData
  ├─ CloudKit 동기화 → SwiftData + cloudKitDatabase
  ├─ 서버 RDB → Vapor + Fluent
  └─ 기존 Core Data 자산 → Core Data 유지 (마이그레이션 비용 계산)

질문 3. 상태 관리는?
  ├─ 소규모 화면 → @State + @Observable
  ├─ 중규모 화면 → @Observable + Environment
  ├─ 대규모 앱 → TCA 1.x
  └─ 분산 시스템 → swift-distributed-actors

질문 4. LLM이 필요한가?
  ├─ 온디바이스 + 무료 → Foundation Models
  ├─ 강력한 추론 필요 → 서버 LLM (Claude, GPT) API 호출
  └─ Apple Intelligence 통합 → App Intents + Foundation Models 조합

22장 · 흔한 마이그레이션 함정

Swift 5 → Swift 6 마이그레이션에서 자주 보는 패턴:

급하게 옮기지 말고, 모듈 단위로 천천히. Apple도 strict concurrency 마이그레이션에 3년을 잡았다.


23장 · 2026년 Apple 개발의 풍경

정리하면:

  1. Swift 6 strict concurrency가 기본 — 데이터 레이스 클래스 버그가 사실상 사라짐.
  2. SwiftData가 Core Data를 대체 — 신규 앱은 SwiftData가 default 선택지.
  3. Observation이 Combine을 대체@Observable이 새 표준.
  4. Foundation Models가 Apple Intelligence 핵심 — 온디바이스 LLM이 무료 API로 풀림.
  5. App Intents 등록은 사실상 의무 — Siri, Spotlight, Apple Intelligence 통합 전부 여기 의존.
  6. Swift Testing이 XCTest를 대체 — 매크로 기반 모던 테스트.
  7. SwiftPM 6 + Swift Build — 빌드 시스템이 통합되고 traits로 conditional dependency 해결.
  8. 서버 Swift 성장 — Vapor, Hummingbird, AWS Lambda Swift.
  9. TCA가 대규모 SwiftUI 앱 표준 아키텍처 — Point-Free의 영향력 커짐.
  10. Embedded Swift 등장 — Swift가 마이크로컨트롤러까지 내려옴.
  11. Cross-platform 옵션 다양화 — Skip, Swift Wasm 6.

Apple 개발자에게 2026년은 학습 부담이 큰 해다. 그러나 새 도구 하나하나가 클래스를 갈아치우는 변화여서, 한 번 익히면 코드 베이스의 안전성과 표현력이 크게 올라간다.

마지막 조언 — 새 프로젝트라면 무조건 Swift 6 strict concurrency·SwiftData·Observation·SwiftUI 6를 default로 깔고 시작하자. 기존 프로젝트라면 모듈 단위로 천천히. 그리고 Apple의 WWDC 세션과 swift.org 블로그를 매년 가을과 봄에 꼭 챙겨보자.


참고 자료 (References)

  1. Swift.org — https://www.swift.org/
  2. Swift 6 announcement — https://www.swift.org/blog/announcing-swift-6/
  3. Swift Evolution — https://github.com/swiftlang/swift-evolution
  4. SE-0414 Region-based Isolation — https://github.com/swiftlang/swift-evolution/blob/main/proposals/0414-region-based-isolation.md
  5. Embedded Swift documentation — https://github.com/swiftlang/swift/blob/main/docs/EmbeddedSwift.md
  6. SwiftData official docs — https://developer.apple.com/documentation/swiftdata
  7. Observation framework — https://developer.apple.com/documentation/observation
  8. Foundation Models framework — https://developer.apple.com/documentation/foundationmodels
  9. App Intents — https://developer.apple.com/documentation/appintents
  10. SwiftUI documentation — https://developer.apple.com/documentation/swiftui
  11. Swift Charts — https://developer.apple.com/documentation/charts
  12. Swift Testing — https://github.com/swiftlang/swift-testing
  13. Swift Macros guide — https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
  14. swift-syntax — https://github.com/swiftlang/swift-syntax
  15. Swift Package Manager — https://github.com/swiftlang/swift-package-manager
  16. Swift Build — https://github.com/swiftlang/swift-build
  17. Vapor — https://vapor.codes/
  18. Hummingbird — https://hummingbird.codes/
  19. AWS Lambda Swift Runtime — https://github.com/swift-server/swift-aws-lambda-runtime
  20. The Composable Architecture — https://github.com/pointfreeco/swift-composable-architecture
  21. Point-Free — https://www.pointfree.co/
  22. swift-sharing — https://github.com/pointfreeco/swift-sharing
  23. swift-async-algorithms — https://github.com/apple/swift-async-algorithms
  24. swift-collections — https://github.com/apple/swift-collections
  25. swift-distributed-actors — https://github.com/apple/swift-distributed-actors
  26. Skip (Swift to Android) — https://skip.tools/
  27. Swift Wasm — https://swiftwasm.org/
  28. Hacking with Swift — https://www.hackingwithswift.com/
  29. let's swift conference — https://letsswift.kr/
  30. iOSDC Japan — https://iosdc.jp/
  31. try! Swift Tokyo — https://www.tryswift.co/

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다