---
title: WKScriptMessageHandlerWithReply
framework: webkit
role: symbol
role_heading: Protocol
path: webkit/wkscriptmessagehandlerwithreply
---

# WKScriptMessageHandlerWithReply

An interface for responding to messages from JavaScript code running in a webpage.

## Declaration

```swift
@MainActor protocol WKScriptMessageHandlerWithReply : NSObjectProtocol
```

## Overview

Overview Adopt the WKScriptMessageHandlerWithReply protocol when your app needs to receive JavaScript messages from a web view and provide an appropriate response. When JavaScript code sends a message that specifically targets your message handler, WebKit calls your handler’s userContentController(_:didReceive:replyHandler:) method. Use that method to process the message and provide your response. To call your message handler from JavaScript, send a message to window.webkit.messageHandlers.<messageHandlerName>.postMessage(<messageBody>) in your code. You specify the name of your message handler when you add it to a WKUserContentController object. note: If you don’t need to provide a response back to JavaScript, implement your message handler using the WKScriptMessageHandler protocol instead.

## Topics

### Receiving Messages

- [userContentController(_:didReceive:replyHandler:)](webkit/wkscriptmessagehandlerwithreply/usercontentcontroller(_:didreceive:replyhandler:).md)
- [WKScriptMessage](webkit/wkscriptmessage.md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Adding and Removing Message Handlers

- [add(_:name:)](webkit/wkusercontentcontroller/add(_:name:).md)
- [add(_:contentWorld:name:)](webkit/wkusercontentcontroller/add(_:contentworld:name:).md)
- [addScriptMessageHandler(_:contentWorld:name:)](webkit/wkusercontentcontroller/addscriptmessagehandler(_:contentworld:name:).md)
- [removeScriptMessageHandler(forName:)](webkit/wkusercontentcontroller/removescriptmessagehandler(forname:).md)
- [removeScriptMessageHandler(forName:contentWorld:)](webkit/wkusercontentcontroller/removescriptmessagehandler(forname:contentworld:).md)
- [removeAllScriptMessageHandlers(from:)](webkit/wkusercontentcontroller/removeallscriptmessagehandlers(from:).md)
- [removeAllScriptMessageHandlers()](webkit/wkusercontentcontroller/removeallscriptmessagehandlers().md)
- [WKScriptMessageHandler](webkit/wkscriptmessagehandler.md)
