SPM compatible License

MUDownloadButton is a Progressive Download button written in pure swift and inspired by AppStore download button . feel free to contribute and pull requests


  • iOS 13.0+
  • Swift 5.0+



To use MUDownloadButton create an instance and add it to your own view as a subview:

  let downloadButton = MUDownloadButton()
  downloadButton.frame = CGRect(origin: origin, size: size)

The button can have 4 different states:

  • idle – before downloading state
  • waiting – between start request and actual start
  • downloading – when download is started
  • downloaded – when download finished

The state of the button can be changed through its state property.


You can use the MUDownloadButtonDelegate to monitor taps on button and state changes . The progress of download can be changed through itss progress property.


  1. Customizable properties are :
  • mainTintColor – main color of button
  • downloadedButtonImage – downloaded button image – system images preferred
  • idleButtonImage – idle button image – system images preferred


To run the example project, clone the repo, and run the Demo directory


Currently only supports SPM and iOS 13+

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler.

Once you have your Swift package set up, adding AHDownloadButton as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: https://github.com/mahadshahib/MUDownloadButton.git, .upToNextMajor(from: "0.9.9"))


Mohammad ShahibZadeh


MUDownloadButton is licensed under the MIT license. Check the LICENSE file for details.


View Github