# swift-package-manager

Published articles for swift-package-manager.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Swift 6.4 unifies building across Linux, macOS, Windows

DevFeed: [Swift 6.4 unifies building across Linux, macOS, Windows](<https://devfeed.tech/articles/swift-6-4-unifies-building-across-linux-macos-windows-41309.md>)

Original publisher: [Read original article](<https://www.theregister.com/devops/2026/09/17/swift-64-unifies-building-across-linux-macos-windows/5297006>)

Author: Joab Jackson

Published: 2026-09-17T04:27:00Z

Content type: article

Language: en

Sources: [www.theregister.com - Articles](<https://devfeed.tech/sources/www-theregister-com-articles.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [Development](<https://devfeed.tech/topics/development.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [cross-platform-development](<https://devfeed.tech/tags/cross-platform-development.md>), [devops](<https://devfeed.tech/tags/devops.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-6-4](<https://devfeed.tech/tags/swift-6-4.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

Swift 6.4 makes Swift Build the default engine for the Swift Package Manager, with building unified across Linux, macOS, and Windows.

### Source excerpt

Swift Build is now the default engine for the Swift Package Manager

## CocoaPods Deprecation Notice for OpenTelemetry Swift

DevFeed: [CocoaPods Deprecation Notice for OpenTelemetry Swift](<https://devfeed.tech/articles/cocoapods-deprecation-notice-for-opentelemetry-swift-32581.md>)

Original publisher: [Read original article](<https://opentelemetry.io/blog/2026/otel-swift-cocoapods-deprecation/>)

Author: OpenTelemetry Authors; Docs CC BY

Published: 2026-07-20T14:05:37Z

Content type: release

Language: en

Sources: [Blog on OpenTelemetry](<https://devfeed.tech/sources/blog-on-opentelemetry.md>)

Topics: [OpenTelemetry](<https://devfeed.tech/topics/opentelemetry.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>), [Maintainers](<https://devfeed.tech/topics/maintainers.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [migration](<https://devfeed.tech/tags/migration.md>), [opentelemetry](<https://devfeed.tech/tags/opentelemetry.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>)

### AI overview

OpenTelemetry Swift maintainers plan to deprecate CocoaPods support for the opentelemetry-swift and opentelemetry-swift-core pods as CocoaPods moves into maintenance mode. Swift Package Manager is the recommended installation method, and existing CocoaPods users are encouraged to plan migration.

### Source excerpt

As it was announced via CocoaPods Support Plan and via CocoaPods Spec Repository, CocoaPods is transitioning their project to maintenance mode, and cocoapods trunk is going to be read-only in a few months. The OpenTelemetry Swift maintainers are planning to deprecate CocoaPods support for all the pods published under opentelemetry-swift and opentelemetry-swift-core. Swift Package Manager (SPM) is now the recommended and preferred installation method for all new integrations. We encourage existing CocoaPods users to begin planning a migration to SPM.

## Migrating a Flutter Application from CocoaPods to Swift Package Manager

DevFeed: [Migrating a Flutter Application from CocoaPods to Swift Package Manager](<https://devfeed.tech/articles/flutter-spm-24864.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/yandex/articles/1054308/>)

Author: iamgirya (Яндекс)

Published: 2026-07-13T07:01:51Z

Content type: tutorial

Language: ru

Sources: [Яндекс - Как мы делаем Яндекс / Статьи](<https://devfeed.tech/sources/source.md>)

Topics: [Flutter](<https://devfeed.tech/topics/flutter.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Dart](<https://devfeed.tech/topics/dart.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [dart](<https://devfeed.tech/tags/dart.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [macos](<https://devfeed.tech/tags/macos.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [swiftpm](<https://devfeed.tech/tags/swiftpm.md>)

### AI overview

A practical guide to migrating Flutter applications from CocoaPods to Swift Package Manager. It covers dependency-graph analysis, plugin migration, dependency resolution, incremental migration, duplicate transitive dependencies, and successful iOS or macOS builds, including scripts for analysis and plugin conversion.

### Source excerpt

Flutter активно движется в сторону Swift Package Manager (SPM) и, как и весь Swift-мир, постепенно отказывается от CocoaPods. Сам Flutter описывает миграцию в два шага: включить флаг flutter config --enable-swift-package-manager и запустить сборку. Если после этого приложение собирается и в консоли появляется предложение deintegrate CocoaPods -- вы счастливчик. Если нет, добро пожаловать под кат. Привет! Меня зовут Даниил Гиренко, я Flutter-разработчик в Яндекс Про. Проект по переводу нашего супераппа с CocoaPods на Swift Package Manager оказался одним из самых сложных и долгих в моей карьере программиста. Весь мой пережитый ужас опыт я решил выразить в этой статье, чтобы решившиеся на миграцию разработчики (или агенты) понимали, какие подводные камни их ждут. Буду рад, если ваш проект займёт недели, а не месяцы, как у меня. В этой статье -- полноценный гайд по миграции любого Flutter-приложения. Разберём граф зависимостей, научимся мигрировать плагины, зарезолвим зависимости и доберёмся до успешного билда. Внутри есть готовые скрипты для анализа и автоматического перевода плагинов, множественные нюансы миграции и рассказы о моих костылях. Читать далее

## Flutter 3.44 will make Swift Package Manager the default for iOS and macOS apps

DevFeed: [Flutter 3.44 will make Swift Package Manager the default for iOS and macOS apps](<https://devfeed.tech/articles/saying-goodbye-to-cocoapods-swift-package-manager-is-soon-the-default-in-flutter-23043.md>)

Original publisher: [Read original article](<https://blog.flutter.dev/saying-goodbye-to-cocoapods-swift-package-manager-is-soon-the-default-in-flutter-645a92714a57?source=rss----4da7dfd21a33---4>)

Author: Jenn Magder

Published: 2026-04-30T15:57:00Z

Content type: release

Language: en

Sources: [Flutter - Medium](<https://devfeed.tech/sources/flutter-medium.md>)

Topics: [Flutter](<https://devfeed.tech/topics/flutter.md>), [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dependency-management](<https://devfeed.tech/tags/dependency-management.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [flutter-app-development](<https://devfeed.tech/tags/flutter-app-development.md>), [ios](<https://devfeed.tech/tags/ios.md>), [macos](<https://devfeed.tech/tags/macos.md>), [migration](<https://devfeed.tech/tags/migration.md>), [release](<https://devfeed.tech/tags/release.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

Flutter 3.44 will make Swift Package Manager the default dependency manager for iOS and macOS apps, replacing CocoaPods. The Flutter CLI will migrate projects automatically, temporarily fall back to CocoaPods for unsupported plugins, and allow developers to opt out if SwiftPM causes breaking issues.

### Source excerpt

Dash migration! Starting with the next stable Flutter release, 3.44, Swift Package Manager (SwiftPM) replaces CocoaPods as the default dependency manager for iOS and macOS apps. This means no more messing around with Ruby or CocoaPods installations just to get your app running! CocoaPods is officially in maintenance mode, and its registry will permanently become read-only on December 2, 2026. While existing builds will still work, no new versions or pods will be added to the trunk after this date. To ensure that your apps continue receiving dependency updates and to provide access to the Swift package ecosystem, Flutter is transitioning to Apple's supported dependency management solution: Swift Package Manager. If you've already migrated your plugin(s) to use SwiftPM, read the "Plugin developers" section below for new migration requirements. Here is how to manage the transition. App developers For app developers, the Flutter CLI handles the migration. When you run or build your iOS or macOS app, the CLI automatically updates your Xcode project to use Swift Package Manager. Check out the Flutter migration docs for app developers for more details. If your app relies on plugins that haven't adopted Swift Package Manager yet, Flutter will print a warning listing exactly which of your dependencies are unsupported. Flutter will temporarily fall back to CocoaPods for plugins that have not adopted Swift packages yet. Because CocoaPods support will eventually be removed entirely, if a plugin hasn't updated and breaks your build, file an issue with the dependency's maintainer to request Swift package support or find an alternative package. We know that migrations can sometimes hit a snag. If SwiftPM causes a breaking issue, you can temporarily disable it for your project. Open your pubspec.yaml file, navigate to the flutter section, and set enable-swift-package-manager to false under the config block: flutter: config: enable-swift-package-manager: false If you opt out, please

## Stream APIs, Swift Package Manager, Tutorial Trail Refresh, and the UWP Transition

DevFeed: [Stream APIs, Swift Package Manager, Tutorial Trail Refresh, and the UWP Transition](<https://devfeed.tech/articles/stream-apis-swift-package-manager-tutorial-trail-refresh-and-the-uwp-transition-19534.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/stream-apis-spm-tutorial-trail-and-uwp/>)

Author: Shai Almog

Published: 2026-03-20T00:00:00Z

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Universal Windows Platform](<https://devfeed.tech/topics/uwp.md>), [Maven](<https://devfeed.tech/topics/maven.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>)

Tags: [dependencies](<https://devfeed.tech/tags/dependencies.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [maven-plugin](<https://devfeed.tech/tags/maven-plugin.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

Codename One adds built-in support for Java Stream APIs and Swift Package Manager integration for iOS dependencies, refreshes its written tutorial trail, and removes the UWP target from the Maven plugin in version 7.0.229.

### Source excerpt

Codename One now includes built-in java.util.stream support, adds Swift Package Manager support for iOS dependencies, refreshes the written tutorial trail, and removes the UWP target from the Maven plugin in 7.0.229.

## Ship It Right: A Swift Package Quality Checklist. Part 3 of 3.

DevFeed: [Ship It Right: A Swift Package Quality Checklist. Part 3 of 3.](<https://devfeed.tech/articles/ship-it-right-a-swift-package-quality-checklist-part-3-of-3-24555.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/ship-it-right-a-swift-package-quality-checklist-part-3-of-3-e6afbb6f0a0e?source=rss----bcd96e620b02---4>)

Author: Oleksii Kolomiiets

Published: 2026-01-06T15:57:22Z

Content type: opinion

Language: en

Sources: [Snapp Mobile - Medium](<https://devfeed.tech/sources/snapp-mobile-medium.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [documentation](<https://devfeed.tech/tags/documentation.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [marketing](<https://devfeed.tech/tags/marketing.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-index](<https://devfeed.tech/tags/swift-package-index.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

The final part of a Swift package quality checklist argues that visibility and developer onboarding are essential after documentation, quality checks, community processes, and releases are in place. It explains how DocC tutorials can provide interactive, step-by-step onboarding and distinguishes tutorials from explanatory articles.

### Source excerpt

Parts 1 and 2 established everything you need for a solid, maintainable Swift package: documentation, automated quality checks, contributor-friendly processes, and professional releases. Your package is technically excellent and easy to contribute to. But here's the problem: good code doesn't promote itself. I've experienced this with every project. I spent weeks building SwiftFormatLintPlugin, writing documentation, setting up CI, creating examples. Then I pushed it to GitHub and... waited. Nothing happened. No stars, no issues, no discussions. Photo by Jakub Zerdzicki on UnsplashThis series is for Swift developers turning internal packages into polished public repositories. Parts 1-2 covered documentation, quality, and community. This final part focuses on growth and visibility. The same code, after I actually shared it on social media, started getting traction. Developers discovered it. The difference wasn't the code -- it was visibility. You can build the best Swift framework in the world, but if developers don't know about it, the impact is zero. Tutorials: Interactive Learning with DocC We have DocC to create tutorials -- quick-starts or how-tos with code and screenshots in a playful way. Tutorials are interactive, step-by-step guides that walk users through actual implementation. They're more engaging than articles and more structured than example code. I saw the impact tutorials can have when we added them to SnappTheming. Instead of users asking "how do I get started?" in issues, they will work through the tutorial and show up with specific, advanced questions. The tutorial does the heavy lifting of onboarding. Tutorials vs Articles Both are valuable, but they serve different purposes: Tutorials -- "Let's build something together." Interactive, step-by-step, with specific outcomes. Best for getting started or learning a workflow. Articles -- "Here's how this works." Explanatory, reference-oriented. Best for understanding concepts or exploring features. Use tutori

## Ship It Right: A Swift Package Quality Checklist. Part 2 of 3.

DevFeed: [Ship It Right: A Swift Package Quality Checklist. Part 2 of 3.](<https://devfeed.tech/articles/ship-it-right-a-swift-package-quality-checklist-part-2-of-3-24554.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/ship-it-right-a-swift-package-quality-checklist-part-2-of-3-b1a0ed970e4e?source=rss----bcd96e620b02---4>)

Author: Oleksii Kolomiiets

Published: 2026-01-05T08:49:32Z

Content type: tutorial

Language: en

Sources: [Snapp Mobile - Medium](<https://devfeed.tech/sources/snapp-mobile-medium.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [community](<https://devfeed.tech/tags/community.md>), [contribute](<https://devfeed.tech/tags/contribute.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [github](<https://devfeed.tech/tags/github.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>)

### AI overview

Part 2 of a three-part checklist for turning internal Swift packages into polished public repositories. It focuses on community and lifecycle practices, including contribution paths, simple pull request and issue templates, and contributor guidance.

### Source excerpt

In Part 1, we built the foundation: documentation, tests, automated quality checks. Your Swift package is technically solid. The code works, it's well-documented, and it maintains consistent quality. Now comes the shift: from "my code works" to "others can contribute." Photo by Luca Bravo on UnsplashThis series is for Swift developers turning internal packages into polished public repositories. Part 1 covered documentation and quality. This part focuses on community and lifecycle. This is where many solo-developed projects stumble. The code is great, but there's no clear path for contributions. Issues pile up without organization. Releases happen chaotically. The infrastructure that worked for solo development doesn't scale to community development. The gap isn't technical -- it's process. You need infrastructure for guiding contributions, managing work, communicating changes, and shipping professional releases. The first time someone outside your organization contributes to your project is special. They took time to understand your code, fix something, and send it back. Make their experience smooth. A clear contribution path, simple templates, and responsive feedback turn one-time contributors into regular contributors. The infrastructure we're building isn't bureaucracy -- it's hospitality. It shows contributors that you value their time and want to make contributing easy.PR and Issue Templates: Keep Them Simple Here's my philosophy on templates: they should be easy and optional. PR templates with fifteen sections and required checkboxes don't increase quality -- they discourage contributions. Three sections are enough. I learned this watching pull requests to my own projects. Early on, I created comprehensive templates with sections for "Testing Strategy," "Performance Implications," "Breaking Changes," "Documentation Updates," and more. Nobody filled them out completely. Contributors would either skip most sections or write "N/A" repeatedly, which helped nobody. No

## Ship It Right: A Swift Package Quality Checklist. Part 1 of 3.

DevFeed: [Ship It Right: A Swift Package Quality Checklist. Part 1 of 3.](<https://devfeed.tech/articles/ship-it-right-a-swift-package-quality-checklist-part-1-of-3-24553.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/ship-it-right-a-swift-package-quality-checklist-part-1-of-3-34d58d16f581?source=rss----bcd96e620b02---4>)

Author: Oleksii Kolomiiets

Published: 2026-01-05T08:49:11Z

Content type: tutorial

Language: en

Sources: [Snapp Mobile - Medium](<https://devfeed.tech/sources/snapp-mobile-medium.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [build](<https://devfeed.tech/tags/build.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [guides](<https://devfeed.tech/tags/guides.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial presents a checklist for turning internal Swift Package Manager packages into polished public repositories. Part 1 focuses on documentation and README design, including installation instructions, usage examples, badges, links to full documentation, and licensing, while also introducing quality automation, community infrastructure, and discoverability.

### Source excerpt

I still remember the moment I decided to open-source my first Swift Package Manager plugin. The code worked perfectly in our internal projects at Snapp, but making it public-ready? That was a different story. I spent the next week adding DocC documentation, setting up GitHub Actions CI, writing example apps, and addressing edge cases I'd been ignoring because "it worked for us". Photo by Vooglam Eyewear on UnsplashThis series is for Swift developers turning internal packages into polished public repositories -- covering documentation, quality, and community setup. Here's the thing: most developers know how to write good code. But there's a massive gap between "code that works" and "a repository that welcomes users and contributors." That gap includes: Documentation that assumes zero context -- Your README.md makes sense to you, but will it help someone discovering your project at 2 AM? Quality automation -- Are you manually checking code style, or does your CI catch issues before they reach main? Community infrastructure -- When someone wants to contribute, is the path clear or confusing? Discoverability -- Great code that nobody knows about might as well not exist. I learned these lessons by studying successful repositories, discussing best practices with experienced coworkers, and developing my own sense of what makes a project polished versus what might fall short. Let's start with the most visible part of any repository -- the README. README: Keep It ConciseREADME is the door, not the whole house. Follow a simple rule: the README should answer three questions: What does this do? How do I install it? Where can I learn more? What Belongs in a README 1. Title and One-Line Description -- make it crystal clear what this is. # SwiftFormatLintPlugin A Swift Package Manager plugin that integrates swift-format linting and formatting into your build workflow. 2. Key Badges -- status, version, license, supported platforms etc. [![Tests](https://github.com/oleksiikolomiietssnapp/Me

## Wise Tech Stack (2025 update)

DevFeed: [Wise Tech Stack (2025 update)](<https://devfeed.tech/articles/wise-tech-stack-2025-update-15459.md>)

Original publisher: [Read original article](<https://medium.com/wise-engineering/wise-tech-stack-2025-update-d0e63fe718c7?source=rss----f2565bbe9c46---4>)

Author: Milon James

Published: 2025-02-12T13:34:08Z

Content type: article

Language: en

Sources: [Wise Engineering - Medium](<https://devfeed.tech/sources/wise-engineering-medium.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Web](<https://devfeed.tech/topics/web.md>), [Tuist](<https://devfeed.tech/topics/tuist.md>), [Storybook](<https://devfeed.tech/topics/storybook.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [build performance](<https://devfeed.tech/topics/build-performance.md>)

Tags: [build-times](<https://devfeed.tech/tags/build-times.md>), [caching](<https://devfeed.tech/tags/caching.md>), [data](<https://devfeed.tech/tags/data.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [platform](<https://devfeed.tech/tags/platform.md>), [storybook](<https://devfeed.tech/tags/storybook.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [tech](<https://devfeed.tech/tags/tech.md>), [tech-stack](<https://devfeed.tech/tags/tech-stack.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tuist](<https://devfeed.tech/tags/tuist.md>), [update](<https://devfeed.tech/tags/update.md>), [web](<https://devfeed.tech/tags/web.md>), [xcode](<https://devfeed.tech/tags/xcode.md>), [xcodegen](<https://devfeed.tech/tags/xcodegen.md>)

### AI overview

Wise's 2025 technology update describes its web, iOS, and Android engineering stack, including Next.js-based web applications, Storybook visual testing, migration from Xcodegen to Tuist, adoption of Swift Package Manager, and Android development across a large Gradle repository.

### Source excerpt

Wise Engineering As of the financial year 2025, Wise supports 15.6 million active customers, moving approximately GBP 36 billion across borders each quarter. Approximately 65% of our transfers arrive instantly, and our Wise Platform facilitates payments for banks, financial institutions and enterprises globally. This success is driven by our technology-first approach, robust architecture, and dedicated engineering teams. Photo by Randy Fath on UnsplashHow we work at Wise Wise has more than 850 engineers working across key global locations, organised into independent squads and tribes. These teams are empowered to innovate and make decisions independently, fostering transparency, trust, and collaboration. This article follows our Tech Stack 2022 to cover the most recent improvements in Wise's tech stack that enable us to achieve our mission of money without borders -- instant, convenient, transparent and eventually free. Moving money with WiseOur web and mobile applications Our web applications are built using CRAB (a Wise-specific abstraction on top of the popular Next.js framework) and comprises of 40 distinct apps, each handling specific product functions making deployments safer and more manageable. One of the biggest changes has been in our testing methodology. We've adopted Storybook for visualising individual React components during development. Storybook pairs really well with Chromatic which captures snapshots after each change and can highlight the visual differences in the component. These snapshots are very effective for catching visual regressions during code changes which helps us prevent bugs from reaching our customers. Wise mobile app: faster, smarter, and more efficient Our iOS engineers have upgraded our infrastructure by migrating 250+ Xcode modules from Xcodegen to Tuist and switching from Cocoapods to Swift Package Manager (SPM), unlocking improvements in caching for builds. The team also improved flexibility, reducing zero-change build times from 2

## KMMBridge 1.2.1 Released - Kevin Schildhorn

DevFeed: [KMMBridge 1.2.1 Released - Kevin Schildhorn](<https://devfeed.tech/articles/kmmbridge-1-2-1-released-kevin-schildhorn-38241.md>)

Original publisher: [Read original article](<https://touchlab.co/kmmbridge-1.2.1>)

Published: 2025-02-04T00:00:00Z

Content type: release

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [releases](<https://devfeed.tech/topics/releases.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [gradle-plugin](<https://devfeed.tech/topics/gradle-plugin.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [release](<https://devfeed.tech/tags/release.md>), [spm](<https://devfeed.tech/tags/spm.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

KMMBridge 1.2.1 adds support for publishing Kotlin Multiplatform framework binaries as GitHub Releases for CocoaPods integration. It also improves CocoaPods build error logging.

### Source excerpt

KMMBridge is a Gradle plugin that publishes Kotlin Multiplatform Xcode Framework dependencies for Swift Package Manager and CocoaPods. The 1.2.1 release fixes issues around publishing packages using CocoaPods.

## Adding a Custom Artifact Manager - Kevin Schildhorn

DevFeed: [Adding a Custom Artifact Manager - Kevin Schildhorn](<https://devfeed.tech/articles/adding-a-custom-artifact-manager-kevin-schildhorn-38242.md>)

Original publisher: [Read original article](<https://touchlab.co/kmmbridge-artifactmanager-pt1>)

Published: 2025-01-27T20:30:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Google Cloud Platform (GCP)](<https://devfeed.tech/topics/google-cloud.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [amazon-s3](<https://devfeed.tech/tags/amazon-s3.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [google-cloud](<https://devfeed.tech/tags/google-cloud.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [spm](<https://devfeed.tech/tags/spm.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This tutorial explains how to create a custom KMMBridge Artifact Manager for publishing Kotlin Multiplatform XCFrameworks to Google Cloud Storage. It describes the Artifact Manager interface, its configuration and deployment functions, and where to define the manager in Gradle files.

### Source excerpt

KMMBridge allows you to publish artifacts to some of the most popular repositories online, but what if you want to publish somewhere else? This two part post will go through how to create a custom Artifact Manager for KMMBridge that will store artifacts in Google Cloud Storage

## Linting a Swift package with swift-format

DevFeed: [Linting a Swift package with swift-format](<https://devfeed.tech/articles/linting-a-swift-package-with-swift-format-24550.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/linting-a-swift-package-with-swift-format-a887b4e95a1e?source=rss----bcd96e620b02---4>)

Author: Oleksii Kolomiiets

Published: 2025-01-27T08:59:47Z

Content type: tutorial

Language: en

Sources: [Snapp Mobile - Medium](<https://devfeed.tech/sources/snapp-mobile-medium.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Xcode 16](<https://devfeed.tech/topics/xcode-16.md>), [developer tooling](<https://devfeed.tech/topics/developer-tooling.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [development-tools](<https://devfeed.tech/tags/development-tools.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ios](<https://devfeed.tech/tags/ios.md>), [lint](<https://devfeed.tech/tags/lint.md>), [packages](<https://devfeed.tech/tags/packages.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode-16](<https://devfeed.tech/tags/xcode-16.md>)

### AI overview

This tutorial explains how to enable linting for a Swift package during its build process with the built-in swift-format tool included in the Xcode 16 toolchain. It covers creating a package, adding a package plugin, attaching the plugin to targets, and displaying a test warning during the build.

### Source excerpt

Linting your code is handy and effective way to keep your team's code style in shape. Nowadays it's hard to imagine a project without functionality that alerts developers with warnings or errors about issues in the code. It could be done with a simple script added to build phases. But what can you do when you don't have one? Packages are excluded from this option, but they still need to be maintained. Or at the very least, you'll feel much better knowing your package code is clean and consistent, and no one can make it messy without receiving a warning. This article explains how to enable linting for a package during its build process, using only the built-in swift-format tool -- no external libraries required. Preparation With Xcode 16, swift-format is included as part of the Xcode toolchain, eliminating the need for external libraries and making Swift file formatting more convenient. For more information, refer to the Getting swift-format section. 1. Create a package Launch Xcode and select File > New > Package from the menu. Chose Library and add the name to the package. 2. Add Plugin Package plugin is: Swift script that can be run as part of your buildA package could have plugins as extra, or be all about pluginsPackage plugins are available only within packageGeneral plugins can be made available to the outsideLets you access development tools on your machine More information about package plugins can be found in the Meet Swift Package plugins article. Start by creating a dedicated folder for all potential plugins, including the one you're currently working on. Ctrl + click on your package name in Xcode and select "New Folder" or use any other method to create a folder in the root of your project. Next, create a folder specifically for your plugin's logic. Since it will lint the package code using swift-format , the name SwiftFormatPlugin was chosen. By the end, the structure would look like this Now, let's add some content to plugin file import Foundation impor

## Debugging Kotlin in Xcode with SPM Builds - Kevin Galligan

DevFeed: [Debugging Kotlin in Xcode with SPM Builds - Kevin Galligan](<https://devfeed.tech/articles/debugging-kotlin-in-xcode-with-spm-builds-kevin-galligan-38318.md>)

Original publisher: [Read original article](<https://touchlab.co/spm-kotlin-debugging>)

Published: 2024-12-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [builds](<https://devfeed.tech/tags/builds.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developers](<https://devfeed.tech/tags/developers.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [skie](<https://devfeed.tech/tags/skie.md>), [spm](<https://devfeed.tech/tags/spm.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article explains how updated SKIE and KMMBridge support local debugging of Kotlin Multiplatform binaries distributed through Swift Package Manager. With the Xcode Kotlin plugin, iOS developers can browse and debug the Kotlin code without locally compiling or configuring KMP dependencies.

### Source excerpt

Virtually all native mobile teams integrate Kotlin Multiplatform by publishing Xcode binaries, usually with SPM. This is generally easy to integrate, but prevented iOS developers from browsing or debugging Kotlin. Today we have fixed that situation.

## KMMBridge 1.1.0 Released - Kevin Galligan

DevFeed: [KMMBridge 1.1.0 Released - Kevin Galligan](<https://devfeed.tech/articles/kmmbridge-1-1-0-released-kevin-galligan-38240.md>)

Original publisher: [Read original article](<https://touchlab.co/kmmbridge-1.1>)

Published: 2024-12-05T00:00:00Z

Content type: release

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [gradle-plugin](<https://devfeed.tech/topics/gradle-plugin.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [.NET 11](<https://devfeed.tech/topics/net-11.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [releases](<https://devfeed.tech/tags/releases.md>), [spm](<https://devfeed.tech/tags/spm.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

KMMBridge 1.1.0 is a significant internal refactoring of the Gradle plugin used to publish Kotlin Multiplatform Xcode Framework binaries through Swift Package Manager and CocoaPods. The release improves maintainability and adds Gradle configuration cache support where possible, while introducing separate modules for GitHub features and potentially requiring plugin ID changes for GitHub publishing.

### Source excerpt

KMMBridge is a Gradle plugin that publishes Kotlin Multiplatform Xcode Framework dependencies for Swift Package Manager and CocoaPods. The 1.1.0 release is a significant internal refactoring to support ongoing improvements and maintainability.

## Bumble chooses Tuist for iOS project scaling after comparing SPM and Bazel

DevFeed: [Bumble chooses Tuist for iOS project scaling after comparing SPM and Bazel](<https://devfeed.tech/articles/scaling-ios-at-bumble-part-3-3-results-and-developer-quality-of-life-22604.md>)

Original publisher: [Read original article](<https://medium.com/bumble-tech/scaling-ios-at-bumble-6f0602682903?source=rss----6353b5325b1a---4>)

Author: Jonathan Crooke

Published: 2024-03-12T15:23:14Z

Content type: comparison

Language: en

Sources: [Bumble Tech](<https://devfeed.tech/sources/bumble-tech.md>)

Topics: [Tuist](<https://devfeed.tech/topics/tuist.md>), [iOS development](<https://devfeed.tech/topics/ios-development.md>), [bazel](<https://devfeed.tech/topics/bazel.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>)

Tags: [bazel](<https://devfeed.tech/tags/bazel.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [tuist](<https://devfeed.tech/tags/tuist.md>)

### AI overview

In the final part of Bumble's build and project-management overhaul, the team explains why it chose Tuist over Swift Package Manager and Bazel for its iOS project-scaling needs. It found SPM's Xcode integration too slow at its scale and considered Bazel powerful but costly to adopt and maintain.

### Source excerpt

Scaling iOS at Bumble: Part 3/3 -- Results and Developer Quality of LifeRecap This is the third and final post in a series on our 2022 & 23 build and project management overhaul. We investigated whether one (or none!) of Swift Package Manager (SPM), Tuist or Bazel would be the tool to overcome our project scaling challenges. In the first post we explained the state-of-play coming into this project. In the second we discussed the results of our proofs of concept. In this post we will explain our conclusions, and talk about the migration project itself. The decisionWe chose Tuist It shouldn't be much surprise that we didn't choose SPM. In fact, we found it to be entirely unsuitable for our use case. This isn't to say that SPM is a poor tool in general -- far from it. Initially we would have preferred to adopt it, however we couldn't ignore the fact that, at least regarding its Xcode-integration, SPM exhibits unacceptably poor performance for our use case, and at our current scale; and this is before we consider our expected future scaling! For those starting new, or smaller projects, SPM seems to provide a nice user experience. However, it also deserves to be regarded as a "first-party CocoaPods". It serves a very similar use-case, and may lead to similar performance drawbacks. Bazel was a different matter. It is undoubtedly a powerful tool, but is a high-investment choice; compared to both SPM and Tuist it diverges much from the traditional iOS development experience, increasing disruption for developers. Also, since Bazel experience is still quite uncommon, this adds extra onboarding load for new team members. We also need to support and maintain infrastructure internally; we have small infrastructure teams and Bazel presents concerns about poor bus factor for a tool that is a single point of failure. During our proof of concept it became clear that in spite of its power, Bazel would be costly for us in the short term. In comparison, Tuist hit a sweet spot between the

## Building with nightly Swift toolchains on macOS

DevFeed: [Building with nightly Swift toolchains on macOS](<https://devfeed.tech/articles/building-with-nightly-swift-toolchains-on-macos-21725.md>)

Original publisher: [Read original article](<https://oleb.net/2024/swift-toolchains/>)

Author: Ole Begemann

Published: 2024-03-05T18:54:44Z

Content type: tutorial

Language: en

Sources: [Ole Begemann](<https://devfeed.tech/sources/ole-begemann.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [toolchains](<https://devfeed.tech/topics/toolchains.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [macos](<https://devfeed.tech/tags/macos.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [toolchains](<https://devfeed.tech/tags/toolchains.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A practical guide to installing and selecting nightly Swift compiler toolchains on macOS. It covers using custom toolchains in Xcode and from the command line, including the TOOLCHAINS environment variable and bundle IDs. The article also notes limitations such as unsupported playgrounds, built-in Swift Package Manager behavior, and App Store submission restrictions.

### Source excerpt

The Swift website provides nightly builds of the Swift compiler (called toolchains) for download. Building with a nightly compiler can be useful if you want to check if a bug has already been fixed on main, or if you want to experiment with upcoming language features such as Embedded Swift, as I've been doing lately. A toolchain is distributed as a .pkg installer that installs itself into /Library/Developer/Toolchains (or the equivalent path in your home directory). After installation, you have several options to select the toolchain you want to build with: In Xcode In Xcode, select the toolchain from the main menu (Xcode > Toolchains), then build and/or run your code normally. Not all Xcode features work with a custom toolchain. For example, playgrounds don't work, and Xcode will always use its built-in copy of the Swift Package Manager, so you won't be able to use unreleased SwiftPM features in this way. Also, Apple won't accept apps built with a non-standard toolchain for submission to the App Store. On the command line When building on the command line there are multiple options, depending on your preferences and what tool you want to use. The TOOLCHAINS environment variable All of the various Swift build tools respect the TOOLCHAINS environment variable. This should be set to the desired toolchain's bundle ID, which you can find in the Info.plist file in the toolchain's directory. Example (I'm using a nightly toolchain from 2024-03-03 here): # My normal Swift version is 5.10 $ swift --version swift-driver version: 1.90.11.1 Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4) # Make sure xcode-select points to Xcode, not to /Library/Developer/CommandLineTools # The Command Line Tools will ignore the TOOLCHAINS variable. $ xcode-select --print-path /Applications/Xcode.app/Contents/Developer # The nightly toolchain is 6.0-dev $ export TOOLCHAINS=org.swift.59202403031a $ swift --version Apple Swift version 6.0-dev (LLVM 0c7823cab15dec9, Swift 0cc0590933

## Scaling iOS at Bumble: Part 2/3 -- The Assessment

DevFeed: [Scaling iOS at Bumble: Part 2/3 -- The Assessment](<https://devfeed.tech/articles/scaling-ios-at-bumble-part-2-3-the-assessment-22603.md>)

Original publisher: [Read original article](<https://medium.com/bumble-tech/scaling-ios-at-bumble-239e0fa009f2?source=rss----6353b5325b1a---4>)

Author: Jonathan Crooke

Published: 2024-02-15T13:49:17Z

Content type: article

Language: en

Sources: [Bumble Tech](<https://devfeed.tech/sources/bumble-tech.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Tuist](<https://devfeed.tech/topics/tuist.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [bazel](<https://devfeed.tech/topics/bazel.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [bazel](<https://devfeed.tech/tags/bazel.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-app-development](<https://devfeed.tech/tags/ios-app-development.md>), [performance](<https://devfeed.tech/tags/performance.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [testing](<https://devfeed.tech/tags/testing.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>), [tuist](<https://devfeed.tech/tags/tuist.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article recaps Bumble's assessment process for replacing parts of its iOS project and build toolchain. It describes onboarding, proof-of-concept work, full-app conversion, and assessment criteria for Swift Package Manager, Tuist, and Bazel, including blockers, user experience, and performance.

### Source excerpt

Scaling iOS at Bumble: Part 2/3 -- The AssessmentRecap In our previous post we discussed how we came to be investigating project and build toolchain replacement solutions for our iOS codebase at Bumble Inc. We began executing proofs of concept for Swift Package Manager (SPM), Tuist and Bazel. The Process Our investigative process for each tool was performed in roughly the same manner: 1. Onboarding With the exception of some light use of SPM as a third-party dependency manager, no-one on the team was fully fluent with any of the tools. This meant that at first, we needed to learn the basics, which could be achieved by creating a minimum-viable manifest for one of our node modules. This would involve learning the manifest format and core commands for building, testing etc. 2. Medium-sized proof of concept Following on from the initial onboarding, we would then progress to converting parent modules, traversing the tree post-order. At each level we'd cover more of our core requirements and encounter edge-cases. Throughout, we noted learnings, limitations and fixes. 3. Full-app conversion At this stage, since our module tree exhibits a strong level of uniformity, we'd now have gathered enough experience to fully convert the app's child modules, and do so using automated tooling. How we achieved this will be discussed below. Unsurprisingly, the top-level app target was its own challenge, and required considerably handcrafting. We only aimed to achieve a minimum-viable conversion at this stage, and didn't expect tests to pass. That said, we'd usually have a fairly conformant conversion anyway, that would launch successfully to its home screen and usually plenty more. 4. Assessment With a converted app target in hand, we would now have a candidate for assessment. But what did we want to know? Our analysis looked at these areas: Blockers: simple enough, any limitations or issues in the tool's functionality whereby it was unable to serve our basic requirements Subjective user

## How Apollo Manages Swift Packages in a Monorepo with Git Subtrees

DevFeed: [How Apollo Manages Swift Packages in a Monorepo with Git Subtrees](<https://devfeed.tech/articles/how-apollo-manages-swift-packages-in-a-monorepo-with-git-subtrees-23357.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/how-apollo-manages-swift-packages-in-a-monorepo-with-git-subtrees>)

Author: Zach FettersMoore

Published: 2024-01-30T07:45:00Z

Content type: article

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [monorepo](<https://devfeed.tech/topics/monorepo.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [Git](<https://devfeed.tech/topics/git.md>), [Submodules](<https://devfeed.tech/topics/submodules.md>), [Library](<https://devfeed.tech/topics/library.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Code](<https://devfeed.tech/topics/code.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [ios](<https://devfeed.tech/tags/ios.md>), [library](<https://devfeed.tech/tags/library.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [monorepo](<https://devfeed.tech/tags/monorepo.md>), [packages](<https://devfeed.tech/tags/packages.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [submodules](<https://devfeed.tech/tags/submodules.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article describes Apollo iOS's challenges with managing multiple Swift Package Manager library targets in a monorepo. It explains the goal of distributing smaller, independently versioned packages while preserving an efficient shared development and testing workflow, and discusses Git submodules as one approach and its operational drawbacks.

### Source excerpt

The monorepo is a common structure for many software projects, and Apollo iOS is no different. Our project was structured in a single repo containing many different Swift Package Manager (SPM) library targets, along with test code and code only used as part of development. This presents a few problems however, one being that when a user adds the SPM package as a dependency, it will pull down all of the code and files in the repo, even though most of them aren't needed.

## An Introduction to Swift Package Manager and how it works

DevFeed: [An Introduction to Swift Package Manager and how it works](<https://devfeed.tech/articles/an-introduction-to-swift-package-manager-and-how-it-works-24750.md>)

Original publisher: [Read original article](<https://medium.com/ymedialabs-innovation/an-introduction-to-swift-package-manager-and-how-it-works-cfe8e0d8cbd3?source=rss----8b5620c36355---4>)

Author: prateek arora

Published: 2023-04-11T05:00:35Z

Content type: tutorial

Language: en

Sources: [ymedialabs-innovation - Medium](<https://devfeed.tech/sources/ymedialabs-innovation-medium.md>)

Topics: [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [tvOS](<https://devfeed.tech/topics/tvos.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [ios](<https://devfeed.tech/tags/ios.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [package-management](<https://devfeed.tech/tags/package-management.md>), [packages](<https://devfeed.tech/tags/packages.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

An introductory tutorial explains Swift Package Manager (SPM), its role in downloading, compiling, and linking Swift dependencies, and its integration with Swift. It compares SPM with third-party options such as CocoaPods and Carthage, outlines supported platforms and requirements, and describes advantages and limitations.

### Source excerpt

What is a package Manager? A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner. or A package manager deals with packages, distributions of software and data in archive files. Packages contain metadata, such as the software's name, description of its purpose, version number, vendor, checksum (preferably a cryptographic hash function), and a list of dependencies necessary for the software to run properly. What is Swift Package Manager (SPM) As per official Apple Swift Documentation: "The Swift Package Manager is a tool for managing the distribution of Swift code. It's integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies." The Package Manager is included in Swift 3.0 and above. Why do we need Swift Package Manager? Though we have multiple other ways to manage the dependencies like cocoa pods, Carthage etc. then why is there a need to use SPM? The answer is both cocoa pods and Carthage are third-party package managers, which eventually leads to extra code and efforts one has to put in order to utilise these third-party package managers. For example: For cocoa pods, we need to have a pod framework to be installed, which then needs ruby, gem file or brew in order to install pods. But then SPM comes inbuilt with XCode, so there won't be extra effort and extra files that will be getting added once we use SPM. System Requirement SwiftPM is compatible with macOS, iOS, tvOS and Linux For macOS, you need XCode 11 and above. For Linux, you have to install it manually or use swiftenv. Advantages SwiftPM is open-source like Cocoapods. It may be challenging or fast to contribute but it is possible. Ease of managing dependency's dependencies. If a dependency relies on another dependency, the Swift Package manager will handle it for you. Ease of resetting, manag

## When Should I Use KMMBridge? - Russell Wolf

DevFeed: [When Should I Use KMMBridge? - Russell Wolf](<https://devfeed.tech/articles/when-should-i-use-kmmbridge-russell-wolf-38348.md>)

Original publisher: [Read original article](<https://touchlab.co/when-should-i-use-kmmbridge>)

Published: 2023-01-10T08:00:00Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>)

### AI overview

This article explains when teams should use KMMBridge rather than KaMPKit for Kotlin Multiplatform projects. It focuses on teams with existing iOS applications, separate repositories, or developers who do not need to work directly with Kotlin, and describes consuming published Kotlin binaries through CocoaPods or Swift Package Manager.

### Source excerpt

Here is how to determine when to use KMMBridge vs KaMPKit for your multiplatform projects, depending on your team's needs.

## Building an XCFramework on Kotlin Multiplatform from Kotlin 1.5.30

DevFeed: [Building an XCFramework on Kotlin Multiplatform from Kotlin 1.5.30](<https://devfeed.tech/articles/building-an-xcframework-on-kotlin-multiplatform-from-kotlin-1-5-30-25559.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2021/kmp-xcframework-official-support/>)

Author: Marco Gomiero

Published: 2021-08-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [building](<https://devfeed.tech/tags/building.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [macos](<https://devfeed.tech/tags/macos.md>), [release](<https://devfeed.tech/tags/release.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>)

### AI overview

A tutorial on using the official XCFramework support introduced in Kotlin 1.5.30 for Kotlin Multiplatform projects. It explains how to replace custom Gradle tasks, build debug and release XCFramework variants, and distribute them through options such as CocoaPods or Swift Package Manager.

### Source excerpt

A few days ago, Kotlin 1.5.30 has been released. One of the features contained in the release is the official support for XCFrameworks on Kotlin Multiplatform. XCFramework is a binary that can contain multiple platform-specific variants (even for iOS and macOS at the same time). It has been introduced by Apple during the WWDC 2019 as a replacement for FatFrameworks. Before Kotlin 1.5.30, an XCFramework could be created only by running the xcrun command that will pack the frameworks for every different required platform into an XCFramework.

## Firebase SDK for Apple now fully supports Swift Package Manager

DevFeed: [Firebase SDK for Apple now fully supports Swift Package Manager](<https://devfeed.tech/articles/firebase-sdk-for-apple-now-fully-supports-swift-package-manager-16397.md>)

Original publisher: [Read original article](<https://firebase.blog/posts/2021/08/firebase-swift-package-manager>)

Author: Peter Friese; Paul Beusterien

Published: 2021-08-27T00:00:00Z

Content type: release

Language: en

Sources: [Firebase Blog](<https://devfeed.tech/sources/firebase-blog.md>)

Topics: [Firebase](<https://devfeed.tech/topics/firebase.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [ios](<https://devfeed.tech/tags/ios.md>), [news](<https://devfeed.tech/tags/news.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [updates](<https://devfeed.tech/tags/updates.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

Firebase 8.6.0 for iOS fully supports Swift Package Manager, allowing developers to add Firebase to iOS projects through Xcode. The article explains the setup process and describes the engineering work behind the integration.

### Source excerpt

News, tutorials, and updates from the Firebase team.

## AppCode 2021.2: улучшения поддержки Swift, автодополнение выражений, окно иерархии вызовов для Swift и не только

DevFeed: [AppCode 2021.2: улучшения поддержки Swift, автодополнение выражений, окно иерархии вызовов для Swift и не только](<https://devfeed.tech/articles/appcode-2021-2-swift-swift-23930.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/573126/>)

Author: yeswolf (JetBrains)

Published: 2021-08-16T09:53:35Z

Content type: release

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [async/await](<https://devfeed.tech/topics/async-await.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [appcode](<https://devfeed.tech/tags/appcode.md>), [async](<https://devfeed.tech/tags/async.md>), [await](<https://devfeed.tech/tags/await.md>), [call-hierarchy](<https://devfeed.tech/tags/call-hierarchy.md>), [complete-statement](<https://devfeed.tech/tags/complete-statement.md>), [ide](<https://devfeed.tech/tags/ide.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [local-history](<https://devfeed.tech/tags/local-history.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>)

### AI overview

This release article describes AppCode 2021.2 improvements, including support for Swift features such as result builders, enum Codable synthesis, and async/await. It also covers documentation completion, Call Hierarchy, Swift Package Manager build and debugging support, a Kotlin Multiplatform Mobile plugin, a debugger Preview Tab, and Local History search.

### Source excerpt

Привет, Хабр! В этом посте, как и всегда, расскажем о новом релизе AppCode. Всем, кому интересно, -- добро пожаловать под кат. Читать далее

## Cross compiling for Apple Silicon with Swift Package Manager

DevFeed: [Cross compiling for Apple Silicon with Swift Package Manager](<https://devfeed.tech/articles/cross-compiling-for-apple-silicon-with-swift-package-manager-25400.md>)

Original publisher: [Read original article](<https://smileykeith.com/2020/12/24/swiftpm-cross-compile/>)

Author: Keith Smiley

Published: 2020-12-24T22:32:00Z

Content type: article

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [x86](<https://devfeed.tech/topics/x86.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [architectures](<https://devfeed.tech/tags/architectures.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [build](<https://devfeed.tech/tags/build.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [performance](<https://devfeed.tech/tags/performance.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [x86](<https://devfeed.tech/tags/x86.md>), [x86-64](<https://devfeed.tech/tags/x86-64.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article explains how to cross-compile Swift Package Manager command-line binaries for Apple Silicon. It shows how to create a universal macOS binary containing both arm64 and x86_64 slices using the hidden --arch flag, and how to build separately for each architecture and combine the results with lipo, including an approach that also works on Linux.

### Source excerpt

If you distribute binaries for command line tools built with Swift Package Manager, you might have previously built your distribution binary with: % swift build --configuration release If you inspect the binary, you can see it was built for the current machine's architecture by default: % file .build/release/package .build/release/package: Mach-O 64-bit executable x86_64 Previously, this was sufficient since macOS only supported one architecture. Now, in order to fully utilize the native performance of Apple Silicon chips, we need to produce a fat binary that contains a slice for both x86_64 and arm64. Swift Package Manager has a few different ways to achieve this. The easiest way, as far as I can tell, is to pass the hidden --arch flag once for each architecture: % swift build --configuration release --arch arm64 --arch x86_64 This goes through a different code path in Swift Package Manager, and utilizes Xcode's underlying XCBuild tool. This results in the built binary being in a different path than usual. Inspecting the new artifact, we can see we have a binary containing both requested architectures: % file .build/apple/Products/Release/package .build/apple/Products/Release/package: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64] .build/apple/Products/Release/package (for architecture x86_64): Mach-O 64-bit executable x86_64 .build/apple/Products/Release/package (for architecture arm64): Mach-O 64-bit executable arm64 Another option is to build once for each architecture, and then combine the binaries using lipo. Unlike the --arch option, this approach also works on Linux. Here's an example: % swift build --configuration release --triple arm64-apple-macosx % swift build --configuration release --triple x86_64-apple-macosx % lipo -create -output package .build/arm64-apple-macosx/release/package .build/x86_64-apple-macosx/release/package Inspecting our final binary we can see it correctly

[Next page](<https://devfeed.tech/tags/swift-package-manager.md?cursor=WyIyMDIwLTEyLTI0VDIyOjMyOjAwKzAwOjAwIiwgImJjMjMyZmM5LTI0OGEtNGI2Ny04MDk1LTE5ZDA2ZGM0MWU4YyJd>)