<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk" -->

---
title: SwifterPM: faster Swift package resolution for...
description: Tuist released SwifterPM, a tool that speeds up Swift package resolution by leaving version solving to SwiftPM itself but replacing everything around it:...
canonical: https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: SwifterPM: faster Swift package resolution for generated, Bazel, and Buck2 projects | daily.dev
og:description: Tuist released SwifterPM, a tool that speeds up Swift package resolution by leaving version solving to SwiftPM itself but replacing everything around it:...
og:url: https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk
og:image: https://api.daily.dev/og/posts/EJuukaBPk.png
og:image:alt: SwifterPM: faster Swift package resolution for generated, Bazel, and Buck2 projects
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# SwifterPM: faster Swift package resolution for generated, Bazel, and Buck2 projects

**[
      Tuist
    ](https://daily.dev/sources/tuist-blog)** · 12 min read · 0 upvotes · 0 comments

## Summary

Tuist released SwifterPM, a tool that speeds up Swift package resolution by leaving version solving to SwiftPM itself but replacing everything around it: fetching pinned sources via tarballs instead of full git clones, and storing packages once in a global content-addressable cache with symlinks instead of copying them per worktree. Benchmarks show cold-run speedups of 1.75x-3.47x and worktree-warm speedups of 32x-180x, since warm restoration is mostly just laying down symlinks. It's now the default for Tuist-generated projects (opt-out via TUIST_USE_SWIFTERPM=0) and ships as a Bazel Bzlmod extension and a Buck2 macro. It doesn't help plain Xcode projects since Xcode's SwiftPM integration isn't extensible.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://tuist.dev/blog/2026/07/16/swifterpm>

## Questions this post answers

### What is SwifterPM and how does it speed up Swift package resolution?

SwifterPM is a tool from Tuist that leaves dependency graph resolution to the Swift Package Manager itself but speeds up everything around it, using a global content-addressable store and symlinks instead of copying sources into every worktree, plus tarball downloads instead of full git clones. Benchmarks show worktree-warm resolution dropping from over two minutes to under a second on the Pocket Casts iOS codebase, a 180x speedup.

_Teams juggling multiple agent worktrees can track tooling like this on daily.dev to cut wasted resolution time._

### How do I enable SwifterPM in a Tuist project or disable it if something breaks?

SwifterPM is used automatically by tuist install before generation on recent canary builds of Tuist, with a stable release following soon, and requires no configuration for projects using Tuist's XcodeProj-based package integration. If it mishandles a graph, set the environment variable TUIST_USE_SWIFTERPM=0 to fall back to standard SwiftPM while the issue gets fixed.

_Developers rolling out new resolver defaults can follow rollout details like this on daily.dev before upgrading._

### Can SwifterPM be used with Bazel or Buck2 for Swift package management?

Yes, SwifterPM ships a Bzlmod extension for Bazel with the same resolver shape as rules_swift_package_manager, configured via bazel_dep and swift_deps.from_package pointing at Package.resolved and Package.swift. For Buck2, it provides a swifterpm_restore macro that creates a restore target reading sources from .build/checkouts against the shared global store before your Apple build runs.

_Engineers evaluating Bazel or Buck2 for Apple builds can compare tooling options like this on daily.dev._

## Similar posts on daily.dev

- [Toss: Building less to ship faster](https://daily.dev/posts/toss-building-less-to-ship-faster-1arhtus0n) · 
      Tuist
     · 4 upvotes · 0 comments
- [The new Tuist, from build toolchains to bare metal](https://daily.dev/posts/the-new-tuist-from-build-toolchains-to-bare-metal-waw3c6jvd) · 
      Tuist
     · 0 upvotes · 0 comments
- [Bazel remote caching and insights in Tuist](https://daily.dev/posts/bazel-remote-caching-and-insights-in-tuist-mdlrtqhx3) · 
      Tuist
     · 0 upvotes · 0 comments

---

Tags: [#swift](https://daily.dev/tags/swift), [#bazel](https://daily.dev/tags/bazel)

[View this post on daily.dev](https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"SwifterPM: faster Swift package resolution for generated, Bazel, and Buck2 projects","url":"https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk"},"datePublished":"2026-08-23T12:23:37.883Z","dateModified":"2026-08-23T12:55:55.183Z","description":"Tuist released SwifterPM, a tool that speeds up Swift package resolution by leaving version solving to SwiftPM itself but replacing everything around it:...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4f595b7f725a45461d31b93b8bd8ec9c?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4f595b7f725a45461d31b93b8bd8ec9c?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"\n      Tuist\n    ","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"\n      Tuist\n    ","logo":"https://media.daily.dev/image/upload/s--3AYDH23h--/f_auto,q_auto/v1787487506/logos/tuist-blog?_a=BAMAMicg0","url":"https://daily.dev/sources/tuist-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"swift,bazel","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"\n      Tuist\n    ","item":"https://daily.dev/sources/tuist-blog"},{"@type":"ListItem","position":3,"name":"SwifterPM: faster Swift package resolution for generated, Bazel, and Buck2 projects"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/swifterpm-faster-swift-package-resolution-for-generated-bazel-and-buck2-projects-ejuukabpk#faq","mainEntity":[{"@type":"Question","name":"What is SwifterPM and how does it speed up Swift package resolution?","acceptedAnswer":{"@type":"Answer","text":"SwifterPM is a tool from Tuist that leaves dependency graph resolution to the Swift Package Manager itself but speeds up everything around it, using a global content-addressable store and symlinks instead of copying sources into every worktree, plus tarball downloads instead of full git clones. Benchmarks show worktree-warm resolution dropping from over two minutes to under a second on the Pocket Casts iOS codebase, a 180x speedup. Teams juggling multiple agent worktrees can track tooling like this on daily.dev to cut wasted resolution time."}},{"@type":"Question","name":"How do I enable SwifterPM in a Tuist project or disable it if something breaks?","acceptedAnswer":{"@type":"Answer","text":"SwifterPM is used automatically by tuist install before generation on recent canary builds of Tuist, with a stable release following soon, and requires no configuration for projects using Tuist's XcodeProj-based package integration. If it mishandles a graph, set the environment variable TUIST_USE_SWIFTERPM=0 to fall back to standard SwiftPM while the issue gets fixed. Developers rolling out new resolver defaults can follow rollout details like this on daily.dev before upgrading."}},{"@type":"Question","name":"Can SwifterPM be used with Bazel or Buck2 for Swift package management?","acceptedAnswer":{"@type":"Answer","text":"Yes, SwifterPM ships a Bzlmod extension for Bazel with the same resolver shape as rules_swift_package_manager, configured via bazel_dep and swift_deps.from_package pointing at Package.resolved and Package.swift. For Buck2, it provides a swifterpm_restore macro that creates a restore target reading sources from .build/checkouts against the shared global store before your Apple build runs. Engineers evaluating Bazel or Buck2 for Apple builds can compare tooling options like this on daily.dev."}}]}
```

