<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "WebKit",
  "identifier" : "/documentation/WebKit/WKNavigationDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "WebKit"
    ],
    "preciseIdentifier" : "c:objc(pl)WKNavigationDelegate"
  },
  "title" : "WKNavigationDelegate"
}
-->

# WKNavigationDelegate

Methods for accepting or rejecting navigation changes, and for tracking the progress of navigation requests.

```
@MainActor protocol WKNavigationDelegate : NSObjectProtocol
```

## Overview

Implement the methods of the [`WKNavigationDelegate`](/documentation/WebKit/WKNavigationDelegate) protocol in the object you use to coordinate changes in your web view’s main frame. As the user attempts to navigate web content, the web view coordinates with its navigation delegate to manage any transitions. For example, you might use these methods to restrict navigation from specific links within your content. You might also use them to track the progress of requests, and to respond to errors and authentication challenges.

## Topics

### Allowing or denying navigation requests

[`webView(_:decidePolicyFor:preferences:decisionHandler:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:decidePolicyFor:preferences:decisionHandler:))

Asks the delegate for permission to navigate to new content based on the specified preferences and action information.

[`webView(_:decidePolicyFor:decisionHandler:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:decidePolicyFor:decisionHandler:)-2ni62)

Asks the delegate for permission to navigate to new content based on the specified action information.

[`WKNavigationActionPolicy`](/documentation/WebKit/WKNavigationActionPolicy)

Constants that indicate whether to allow or cancel navigation to a webpage from an action.

[`webView(_:decidePolicyFor:decisionHandler:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:decidePolicyFor:decisionHandler:)-19mn2)

Asks the delegate for permission to navigate to new content after the response to the navigation request is known.

[`WKNavigationResponsePolicy`](/documentation/WebKit/WKNavigationResponsePolicy)

Constants that indicate whether to allow or cancel navigation to a webpage from a response.

### Tracking the load progress of a request

[`webView(_:didStartProvisionalNavigation:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:didStartProvisionalNavigation:))

Tells the delegate that navigation from the main frame has started.

[`webView(_:didReceiveServerRedirectForProvisionalNavigation:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:didReceiveServerRedirectForProvisionalNavigation:))

Tells the delegate that the web view received a server redirect for a request.

[`webView(_:didCommit:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:didCommit:))

Tells the delegate that the web view has started to receive content for the main frame.

[`webView(_:didFinish:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:didFinish:))

Tells the delegate that navigation is complete.

### Responding to authentication challenges

[`webView(_:didReceive:completionHandler:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:didReceive:completionHandler:))

Asks the delegate to respond to an authentication challenge.

[`webView(_:authenticationChallenge:shouldAllowDeprecatedTLS:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:authenticationChallenge:shouldAllowDeprecatedTLS:))

Asks the delegate whether to continue with a connection that uses a deprecated version of TLS.

### Responding to navigation errors

[`webView(_:didFail:withError:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:didFail:withError:))

Tells the delegate that an error occurred during navigation.

[`webView(_:didFailProvisionalNavigation:withError:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:didFailProvisionalNavigation:withError:))

Tells the delegate that an error occurred during the early navigation process.

[`webViewWebContentProcessDidTerminate(_:)`](/documentation/WebKit/WKNavigationDelegate/webViewWebContentProcessDidTerminate(_:))

Tells the delegate that the web view’s content process was terminated.

### Handling download progress

[`webView(_:navigationResponse:didBecome:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:navigationResponse:didBecome:))

Tells the delegate that a navigation response became a download.

[`webView(_:navigationAction:didBecome:)`](/documentation/WebKit/WKNavigationDelegate/webView(_:navigationAction:didBecome:))

Tells the delegate that a navigation action became a download.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)