---
title: Enhancing your custom text engine with Writing Tools
framework: appkit
role: sampleCode
role_heading: Sample Code
path: sample-code/appkit/enhancing-your-custom-text-engine-with-writing-tools
---

# Enhancing your custom text engine with Writing Tools

Add Writing Tools support to your custom text engine to enhance the text editing experience.

## Overview

Overview The systems provide easy-to-use and highly capable APIs for text editing, such as NSTextView, UITextView, and SwiftUI TextEditor. These APIs handle text rendering, text input, and user interactions, support multiple languages, and provide many features like spell checking and Writing Tools. Apps generally use these APIs to implement text editing. In some cases, apps may desire to build a custom text editing experience by implementing a custom text engine and integrating the editor with system-provided features, such as Writing Tools. The sample app demonstrates how to implement a basic NSTextInputClient view with Writing Tools support. note: This sample code project is associated with WWDC25 session 265: Dive deeper into Writing Tools. Configure the sample code project To configure the sample code project, do the following in Xcode: Open the sample with the latest version of Xcode. Set the developer team to let Xcode automatically manage the provisioning profile. For more information, see Preparing your app for distribution and Preparing your app for distribution.

## See Also

### Writing Tools for custom views

- [Supporting Writing Tools via the pasteboard](appkit/supporting-writing-tools-via-the-pasteboard.md)
- [Adding Writing Tools support to a custom AppKit view](appkit/adding-writing-tools-support-to-a-custom-nsview.md)
- [NSWritingToolsCoordinator](appkit/nswritingtoolscoordinator.md)
- [NSWritingToolsCoordinator.Delegate](appkit/nswritingtoolscoordinator/delegate-swift.protocol.md)
- [NSWritingToolsCoordinator.Context](appkit/nswritingtoolscoordinator/context.md)
- [NSWritingToolsCoordinator.AnimationParameters](appkit/nswritingtoolscoordinator/animationparameters.md)
