Share content using the system share sheet - SwiftUI

iOS 16+

SwiftUI’s ShareLink view makes it easy to share any kind of data from your app, as long as it conforms to the Transferable protocol.

By default you get a simple “Share” label with the appropriate icon, but you can also provide your own title text, or an entirely custom label:

let link = URL(string: "https://www.hackingwithswift.com")!

VStack(spacing: 20) {
    ShareLink(item: link)
    ShareLink("Learn Swift here", item: link)
    ShareLink(item: link) {
        Label("Learn Swift here", systemImage: "swift")
    }
}

If you want to attach some extra text to the content you’re sharing, there’s a message parameter to do just that:

let link = URL(string: "https://www.hackingwithswift.com")!
ShareLink(item: link, message: Text("Learn Swift here!"))

For simple URLs the system is able to generate a preview on our behalf, but you can also provide a custom preview with some text and an image of your choosing, like this:

let link = URL(string: "https://www.admin.ch")!

VStack {
    ShareLink(
        item: link,
        preview: SharePreview(
            "Switzerland's flag: it's a big plus.",
            image: Image(systemName: "plus")
        )
    )
}