I believe it should be up to the developer to determine the exact versions of dependencies used in their projects. When adding Pods to the Podfile, most developers use the optimistic operator pod 'RxSwift', '~> 4.1.1' or even leave out the version information entirely pod 'RxSwift'. This is because no one wants to go through the hell of finding new versions of their dependencies and updating manually. This also means the Dependency manager(CocoaPods) will have to decide which version to install in your project. Granted, with the optimistic operator, CocoaPods would probably never install a version of the Pod with breaking changes as long as the framework's developer continues using semantic versioning. But then, you wouldn't even get to know about the breaking release at all.