Skip to main content

How to open web links in Safari

About 2 minSwiftSwiftUIArticle(s)bloghackingwithswift.comcrashcourseswiftswiftuixcodeappstore

How to open web links in Safari 관련

SwiftUI by Example

Back to Home

How to open web links in Safari | SwiftUI by Example

How to open web links in Safari

Updated for Xcode 15

SwiftUI gives us a dedicated Link view that looks like a button but opens a URL in Safari when pressed. It's easy enough to use – just give it a title for the button, plus a destination URL to show, like this:

Link("Learn SwiftUI", destination: URL(string: "https://hackingwithswift.com/quick-start/swiftui")!)

Download this as an Xcode projectopen in new window

As it's just a text link, you can customize it with a font, color, and more:

Link("Visit Apple", destination: URL(string: "https://www.apple.com")!)
    .font(.title)
    .foregroundStyle(.red)

Download this as an Xcode projectopen in new window

The words “Visit Apple” in red.
The words “Visit Apple” in red.

And if you'd rather create your own view rather than just use text, you can do that too:

Link(destination: URL(string: "https://www.apple.com")!) {
    Image(systemName: "link.circle.fill")
        .font(.largeTitle)
}

Download this as an Xcode projectopen in new window

A link icon on a blue circle.
A link icon on a blue circle.

Alternatively, you can open a URL from code by using the openURL environment key, like this:

struct ContentView: View {
    @Environment(\.openURL) var openURL

    var body: some View {
        Button("Visit Apple") {
            openURL(URL(string: "https://www.apple.com")!)
        }
    }
}

Download this as an Xcode projectopen in new window

A “Visit Apple” link in blue.
A “Visit Apple” link in blue.
Similar solutions…
How to customize the way links are opened | SwiftUI by Example

How to customize the way links are opened
How to open a new window | SwiftUI by Example

How to open a new window
How to add advanced text styling using AttributedString | SwiftUI by Example

How to add advanced text styling using AttributedString
How to render Markdown content in text | SwiftUI by Example

How to render Markdown content in text
All SwiftUI property wrappers explained and compared | SwiftUI by Example

All SwiftUI property wrappers explained and compared

이찬희 (MarkiiimarK)
Never Stop Learning.