“Trait-ifying” our libraries to reduce transitive dependencies
Point-Free is adopting SwiftPM traits across their Swift libraries to let users opt out of transitive dependencies they don't need. Using SwiftNavigation as a test bed, developers can now specify traits like CasePaths and Perception in Package.swift to avoid pulling in libraries like CustomDump, IssueReporting, and Sharing. The Dependencies library also supports traits to omit clock/Combine scheduler registrations and even Foundation/FoundationNetworking for Wasm and Android targets. Xcode provides a new UI for managing these traits. More libraries, including ComposableArchitecture 2.0, are getting the same treatment.
