Skip to content
Heroku build pack for Swift
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
bin feat: Update default Swift version to 4.1 Apr 11, 2018
swiftenv @ 2579e61 feat: Update swiftenv Apr 11, 2018
.gitmodules Use swiftenv to install swift Feb 18, 2016
LICENSE Initial commit Dec 4, 2015 docs(readme): Fix GitHub spelling Sep 18, 2018

Heroku buildpack: swift

This is a Heroku buildpack for Swift apps that are powered by the Swift Package Manager.

Check out the Curassow-example-helloworld for a fully working example that can be deployed to Heroku.


Example usage:

$ ls
Procfile Package.swift Sources

$ heroku create --buildpack kyle/swift

$ git push heroku master
remote: -----> Swift app detected
remote: -----> Installing Swift 4.1
remote: -----> Installing clang-3.7.0
remote: -----> Building Package
remote: -----> Copying binaries to 'bin'

You can also add it to upcoming builds of an existing application:

$ heroku buildpacks:set kyle/swift

The buildpack will detect your app as Swift if it has a Package.swift file in the root.


Using the Procfile, you can set the process to run for your web server. Any binaries built from your Swift source using swift package manager will be placed in your $PATH.

web: HelloWorld --workers 3 --bind$PORT

Specify a Swift version

You can also customise the version of Swift used with a .swift-version file in your repository:

$ cat .swift-version

The .swift-version file is completely compatible with swiftenv.

NOTE: Since there are frequent Swift language changes, it's advised that you pin to your Swift version.


You can place custom scripts to be ran before and after compiling your Swift source code inside the following files in your repository:

  • bin/pre_compile
  • bin/post_compile

This is useful if you would need to install any other dependencies.

Using the latest buildpack code

The kyle/swift buildpack from the Heroku Registry represents the latest stable version of the buildpack. If you'd like to use the latest buildpack code from this Github repository, you can set your buildpack to the GitHub URL:

$ heroku buildpacks:set
You can’t perform that action at this time.