From 370754940681f89e65ad2841dc8a4a3bb782cad1 Mon Sep 17 00:00:00 2001 From: Piotr Karamon Date: Thu, 14 May 2026 15:19:26 +0200 Subject: [PATCH 01/10] docs: updated docs --- docs/INPUT_API_REFERENCE.md | 249 ++++++++++++++++++++++++------------ docs/TEXT_API_REFERENCE.md | 7 +- 2 files changed, 169 insertions(+), 87 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index d28cce6cf..b0527f35d 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -1,14 +1,16 @@ # API Reference +> **Web support is experimental.** Behavior may change without a major version bump. + ## Props ### `autoFocus` If `true`, focuses the input. -| Type | Default Value | Platform | -| ------ | ------------- | -------- | -| `bool` | `false` | Both | +| Type | Default Value | Platform | +| ------ | ------------- | ----------------- | +| `bool` | `false` | iOS, Android, Web | ### `autoCapitalize` @@ -19,9 +21,9 @@ Tells input to automatically capitalize certain characters. - `sentences`: first letter of each sentence. - `none`: don't auto capitalize anything. -| Type | Default Value | Platform | -| -------------------------------------------------- | ------------- | -------- | -| `'none' \| 'sentences' \| 'words' \| 'characters'` | `'sentences'` | Both | +| Type | Default Value | Platform | +| -------------------------------------------------- | ------------- | ----------------- | +| `'none' \| 'sentences' \| 'words' \| 'characters'` | `'sentences'` | iOS, Android, Web | ### `contextMenuItems` @@ -51,9 +53,9 @@ interface ContextMenuItem { - `onPress` is the callback invoked when the item is tapped. - `visible` controls whether the item is shown. Defaults to `true`. -| Type | Default Value | Platform | -| ------------------- | ------------- | -------- | -| `ContextMenuItem[]` | [] | iOS | +| Type | Default Value | Platform | +| ------------------- | ------------- | ------------ | +| `ContextMenuItem[]` | [] | iOS, Android | > [!NOTE] > On iOS items appear in array order, before the system items (Copy/Paste/Cut). @@ -63,25 +65,25 @@ interface ContextMenuItem { When provided it will set the color of the cursor (or "caret") in the component. -| Type | Default Value | Platform | -| ---------------------------------------------- | -------------- | -------- | -| [`color`](https://reactnative.dev/docs/colors) | system default | Android | +| Type | Default Value | Platform | +| ---------------------------------------------- | -------------- | ------------ | +| [`color`](https://reactnative.dev/docs/colors) | system default | Android, Web | ### `defaultValue` Provides an initial value for the input. If the string is a valid HTML output of the `EnrichedTextInput` component (or other HTML that the parser will accept), proper styles will be applied. -| Type | Default Value | Platform | -| -------- | ------------- | -------- | -| `string` | - | Both | +| Type | Default Value | Platform | +| -------- | ------------- | ----------------- | +| `string` | - | iOS, Android, Web | ### `editable` If `false`, text is not editable. -| Type | Default Value | Platform | -| ------ | ------------- | -------- | -| `bool` | `true` | Both | +| Type | Default Value | Platform | +| ------ | ------------- | ----------------- | +| `bool` | `true` | iOS, Android, Web | > [!NOTE] > Setting `editable` to `false` will disable all user interactions with the input. @@ -91,17 +93,17 @@ If `false`, text is not editable. A prop for customizing styles appearances. -| Type | Default Value | Platform | -| ------------------------------ | -------------------------------------------------- | -------- | -| [`HtmlStyle`](#htmlstyle-type) | default values from [`HtmlStyle`](#htmlstyle-type) | Both | +| Type | Default Value | Platform | +| ------------------------------ | -------------------------------------------------- | ----------------- | +| [`HtmlStyle`](#htmlstyle-type) | default values from [`HtmlStyle`](#htmlstyle-type) | iOS, Android, Web | ### `mentionIndicators` The recognized mention indicators. Each item needs to be a 1 character long string. -| Type | Default Value | Platform | -| ----------------- | ------------- | -------- | -| array of `string` | `['@']` | Both | +| Type | Default Value | Platform | +| ----------------- | ------------- | ----------------- | +| array of `string` | `['@']` | iOS, Android, Web | ### `linkRegex` @@ -109,9 +111,9 @@ A custom regex pattern for detecting links in the input. If not provided, a defa With this approach you can customize what patterns should be recognized as links, for example you can make it so that only links starting with `https://` are detected, or you can support custom schemes. Keep in mind that not all JS regex features are supported, for example variable-width lookbehinds won't work. -| Type | Default Value | Platform | -|----------|-------------------------------|----------| -| `RegExp` | default native platform regex | Both | +| Type | Default Value | Platform | +| -------- | ----------------------------- | ----------------- | +| `RegExp` | default native platform regex | iOS, Android, Web | > [!TIP] > With this approach you can also disable link detection completely by providing a `null` value as the prop. @@ -120,9 +122,9 @@ Keep in mind that not all JS regex features are supported, for example variable- Callback that's called whenever the input loses focused (is blurred). -| Type | Platform | -|--------------|----------| -| `() => void` | Both | +| Type | Platform | +| ------------ | ----------------- | +| `() => void` | iOS, Android, Web | ### `onChangeHtml` @@ -138,9 +140,9 @@ interface OnChangeHtmlEvent { - `value` is the new HTML. -| Type | Platform | -|------------------------------------------------------------|----------| -| `(event: NativeSyntheticEvent) => void` | Both | +| Type | Platform | +| ---------------------------------------------------------- | ----------------- | +| `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | > [!TIP] > Specifying `onChangeHtml` may have performance implications, especially with large documents, as it requires continuous HTML parsing. @@ -163,9 +165,9 @@ interface OnChangeMentionEvent { - `indicator` is the indicator of the currently edited mention. - `text` contains whole text that has been typed after the indicator. -| Type | Platform | -|-----------------------------------------|----------| -| `(event: OnChangeMentionEvent) => void` | Both | +| Type | Platform | +| --------------------------------------- | ----------------- | +| `(event: OnChangeMentionEvent) => void` | iOS, Android, Web | ### `onChangeSelection` @@ -185,9 +187,9 @@ interface OnChangeSelectionEvent { - `end` is the first index after the selection's ending. For just a cursor in place (no selection), `start` equals `end`. - `text` is the input's text in the current selection. -| Type | Platform | -|-----------------------------------------------------------------|----------| -| `(event: NativeSyntheticEvent) => void` | Both | +| Type | Platform | +| --------------------------------------------------------------- | ----------------- | +| `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | ### `onChangeState` @@ -299,9 +301,9 @@ interface OnChangeStateEvent { - `isBlocking` indicates if the style is blocked by other currently active, meaning it can't be toggled. - `isConflicting` indicates if the style is in conflict with other currently active styles, meaning toggling it will remove conflicting style. -| Type | Platform | -|-------------------------------------------------------------|----------| -| `(event: NativeSyntheticEvent) => void` | Both | +| Type | Platform | +| ----------------------------------------------------------- | ----------------- | +| `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | ### `onChangeText` @@ -317,9 +319,9 @@ interface OnChangeTextEvent { - `value` is the new text value of the input. -| Type | Platform | -|------------------------------------------------------------|----------| -| `(event: NativeSyntheticEvent) => void` | Both | +| Type | Platform | +| ---------------------------------------------------------- | ----------------- | +| `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | > [!TIP] > If you don't need the plain text value do not specify `onChangeText`, as it may have performance implications due to continuous text extraction. @@ -330,17 +332,17 @@ Callback that is called when the user no longer edits a mention actively - has m - `indicator` is the indicator of the mention that was being edited. -| Type | Platform | -|-------------------------------|----------| -| `(indicator: string) => void` | Both | +| Type | Platform | +| ----------------------------- | ----------------- | +| `(indicator: string) => void` | iOS, Android, Web | ### `onFocus` Callback that's called whenever the input is focused. -| Type | Platform | -|--------------|----------| -| `() => void` | Both | +| Type | Platform | +| ------------ | ----------------- | +| `() => void` | iOS, Android, Web | ### `onLinkDetected` @@ -362,9 +364,9 @@ interface OnLinkDetected { - `start` is the starting index of the link. - `end` is the first index after the ending index of the link. -| Type | Platform | -|-----------------------------------|----------| -| `(event: OnLinkDetected) => void` | Both | +| Type | Platform | +| --------------------------------- | ----------------- | +| `(event: OnLinkDetected) => void` | iOS, Android, Web | ### `onMentionDetected` @@ -384,9 +386,9 @@ interface OnMentionDetected { - `indicator` is the indicator of the mention. - `attributes` are the additional user-defined attributes that are being stored with the mention. -| Type | Platform | -|--------------------------------------|----------| -| `(event: OnMentionDetected) => void` | Both | +| Type | Platform | +| ------------------------------------ | ----------------- | +| `(event: OnMentionDetected) => void` | iOS, Android, Web | ### `onStartMention` @@ -394,9 +396,9 @@ Callback that gets called whenever a mention editing starts (after placing the i - `indicator` is the indicator of the mention that begins editing. -| Type | Platform | -|-------------------------------|----------| -| `(indicator: string) => void` | Both | +| Type | Platform | +| ----------------------------- | ----------------- | +| `(indicator: string) => void` | iOS, Android, Web | ### `onKeyPress` @@ -408,9 +410,27 @@ export interface OnKeyPressEvent { } ``` -| Type | Platform | -|----------------------------------------------------------|----------| -| `(event: NativeSyntheticEvent) => void` | Both | +| Type | Platform | +| -------------------------------------------------------- | ----------------- | +| `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | + +### `onSubmitEditing` + +Callback called when the user submits the input (presses the return/enter key while `submitBehavior` is `'submit'` or `'blurAndSubmit'`). + +Payload interface: + +```ts +interface OnSubmitEditing { + text: string; +} +``` + +- `text` is the current plain-text content of the input at submission time. + +| Type | Platform | +| -------------------------------------------------------- | ----------------- | +| `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | ### `OnPasteImages` @@ -429,54 +449,96 @@ export interface OnPasteImagesEvent { } ``` -| Type | Platform | -| ----------------------------------------------------------- | -------- | -| `(event: NativeSyntheticEvent) => void` | Both | +| Type | Platform | +| ----------------------------------------------------------- | ----------------- | +| `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | + +> [!NOTE] +> On Web, `uri` is a blob URL (`blob:...`). Blob URLs hold memory until explicitly released. +> Call `URL.revokeObjectURL(uri)` once you no longer need the image (e.g., after the upload completes). ### `placeholder` The placeholder text that is displayed in the input if nothing has been typed yet. Disappears when something is typed. -| Type | Default Value | Platform | -| -------- | ------------- | -------- | -| `string` | `''` | Both | +| Type | Default Value | Platform | +| -------- | ------------- | ----------------- | +| `string` | `''` | iOS, Android, Web | ### `placeholderTextColor` Input placeholder's text color. -| Type | Default Value | Platform | -| ---------------------------------------------- | ----------------------- | -------- | -| [`color`](https://reactnative.dev/docs/colors) | input's [color](#style) | Both | +| Type | Default Value | Platform | +| ---------------------------------------------- | ----------------------- | ----------------- | +| [`color`](https://reactnative.dev/docs/colors) | input's [color](#style) | iOS, Android, Web | ### `ref` A React ref that lets you call any ref methods on the input. -| Type | Default Value | Platform | -| ---------------------------------------------- | ------------- | -------- | -| `RefObject` | - | Both | +| Type | Default Value | Platform | +| ---------------------------------------------- | ------------- | ----------------- | +| `RefObject` | - | iOS, Android, Web | + +### `returnKeyLabel` + +Overrides the return key label with a custom string. Use `returnKeyType` for cross-platform return key control. + +| Type | Default Value | Platform | +| -------- | ------------- | ------------ | +| `string` | - | iOS, Android | + +### `returnKeyType` + +Specifies the label or icon shown on the keyboard's return key. + +Accepts the standard React Native `ReturnKeyTypeOptions` values: `'default' | 'go' | 'google' | 'join' | 'next' | 'route' | 'search' | 'send' | 'yahoo' | 'done' | 'emergency-call'`. + +| Type | Default Value | Platform | +| ---------------------- | ------------- | ----------------- | +| `ReturnKeyTypeOptions` | `'default'` | iOS, Android, Web | + +> [!NOTE] +> On Web, this maps to the [`enterkeyhint`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/enterkeyhint) attribute on the editor element. +> Only the values the browser recognises (`'enter'`, `'done'`, `'go'`, `'next'`, `'previous'`, `'search'`, `'send'`) have a visible effect; unsupported values are silently ignored. ### `selectionColor` Color of the selection rectangle that gets drawn over the selected text. On iOS, the cursor (caret) also gets set to this color. -| Type | Default Value | Platform | -| ---------------------------------------------- | -------------- | -------- | -| [`color`](https://reactnative.dev/docs/colors) | system default | Both | +| Type | Default Value | Platform | +| ---------------------------------------------- | -------------- | ----------------- | +| [`color`](https://reactnative.dev/docs/colors) | system default | iOS, Android, Web | ### `style` The `style` prop controls the layout, dimensions, typography, borders, shadows, opacity, and similar container-level appearance of the editable content container. The exact supported properties are listed under [EnrichedInputStyle](ENRICHED_INPUT_STYLE.md). -| Type | Default Value | Platform | -| --------------------------------------------------- | ------------- | -------- | -| [EnrichedInputStyle](ENRICHED_INPUT_STYLE.md) | - | Both | +| Type | Default Value | Platform | +| --------------------------------------------- | ------------- | ----------------- | +| [EnrichedInputStyle](ENRICHED_INPUT_STYLE.md) | - | iOS, Android, Web | + +### `submitBehavior` + +Controls what happens when the user presses the return/enter key. + +- `'newline'` — inserts a new line (default for multiline inputs). +- `'submit'` — fires `onSubmitEditing` without inserting a new line. +- `'blurAndSubmit'` — fires `onSubmitEditing` and blurs the input. + +| Type | Default Value | Platform | +| ------------------------------------------ | ------------- | ----------------- | +| `'submit' \| 'blurAndSubmit' \| 'newline'` | `'newline'` | iOS, Android, Web | ### `ViewProps` The input inherits [ViewProps](https://reactnative.dev/docs/view#props), but keep in mind that some of the props may not be supported. +| Platform | +| ------------ | +| iOS, Android | + ### `androidExperimentalSynchronousEvents` - EXPERIMENTAL If true, Android will use experimental synchronous events. This will prevent from input flickering when updating component size. However, this is an experimental feature, which has not been thoroughly tested. We may decide to enable it by default in a future release. @@ -489,9 +551,9 @@ If true, Android will use experimental synchronous events. This will prevent fro If true, external HTML pasted/inserted into the input (e.g. from Google Docs, Word, or web pages) will be normalized into the canonical tag subset that the enriched parser understands. However, this is an experimental feature, which has not been thoroughly tested. We may decide to enable it by default in a future release. -| Type | Default Value | Platform | -| ------ | ------------- |----------| -| `bool` | `false` | Both | +| Type | Default Value | Platform | +| ------ | ------------- | ------------ | +| `bool` | `false` | iOS, Android | ## Ref Methods @@ -745,6 +807,25 @@ User can later toggle each checkbox individually by tapping on it. - `checked: boolean` - defines whether the checkboxes should be checked or unchecked by default. +## Web Keyboard Shortcuts + +The following keyboard shortcuts are available on Web. `Mod` is `⌘` on macOS and `Ctrl` on Windows/Linux. + +| Action | Mac | Windows / Linux | +| ------------------- | ----------------- | ----------------------- | +| Bold | ⌘ B | Ctrl+B | +| Italic | ⌘ I | Ctrl+I | +| Underline | ⌘ U | Ctrl+U | +| Strikethrough | ⌘ Shift+X | Ctrl+Shift+X | +| Inline code | ⌘ Shift+C | Ctrl+Shift+C | +| Code block | ⌘ Alt Shift+C | Ctrl+Alt+Shift+C | +| Normal paragraph | ⌘ Alt+0 | Ctrl+Alt+0 | +| Heading 1–6 | ⌘ Alt+1 … ⌘ Alt+6 | Ctrl+Alt+1 … Ctrl+Alt+6 | +| Numbered list | ⌘ Shift+7 | Ctrl+Shift+7 | +| Bulleted list | ⌘ Shift+8 | Ctrl+Shift+8 | +| Checkbox list | ⌘ Shift+9 | Ctrl+Shift+9 | +| Paste as plain text | ⌘ Shift+V | Ctrl+Shift+V | + ## HtmlStyle type Allows customizing HTML styles. diff --git a/docs/TEXT_API_REFERENCE.md b/docs/TEXT_API_REFERENCE.md index eabb7bb61..55c199c15 100644 --- a/docs/TEXT_API_REFERENCE.md +++ b/docs/TEXT_API_REFERENCE.md @@ -1,5 +1,7 @@ # EnrichedText API Reference +> **Web is not supported.** `EnrichedText` is only available on iOS and Android. + ## Props ### `children` @@ -43,14 +45,13 @@ How the text should be truncated when `numberOfLines` is set and the text overfl - `tail` – truncates at the end, e.g. `abcd...`. - `clip` – clips the text without inserting an ellipsis. -| Type | Default Value | Platform | -| ----------------------------------------- | ------------- | -------- | +| Type | Default Value | Platform | +| ---------------------------------------- | ------------- | -------- | | `'head' \| 'middle' \| 'tail' \| 'clip'` | `'tail'` | Both | > [!NOTE] > On Android, when numberOfLines is set to a value higher than 1, only tail value will work correctly. - ### `numberOfLines` Limits the number of displayed lines. Set to `0` for unlimited lines. From ab9cc93b5bd8e174884185ea6fe7c51f9c0c5b44 Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz Date: Wed, 10 Jun 2026 19:24:57 +0200 Subject: [PATCH 02/10] docs: updated input api ref --- docs/INPUT_API_REFERENCE.md | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index b0527f35d..45441f61c 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -437,6 +437,7 @@ interface OnSubmitEditing { Callback invoked when the user pastes one or more images or GIFs into the input. - `images` - is an array of objects containing the details (URI, MIME type, and dimensions) for each pasted image/GIF. +- **Web:** each `uri` is a `blob:` URL (`URL.createObjectURL`). If you retain URIs, call `URL.revokeObjectURL` when finished so blobs can be released. ```ts export interface OnPasteImagesEvent { @@ -487,21 +488,40 @@ Overrides the return key label with a custom string. Use `returnKeyType` for cro | Type | Default Value | Platform | | -------- | ------------- | ------------ | -| `string` | - | iOS, Android | +| `string` | - | Android | ### `returnKeyType` Specifies the label or icon shown on the keyboard's return key. -Accepts the standard React Native `ReturnKeyTypeOptions` values: `'default' | 'go' | 'google' | 'join' | 'next' | 'route' | 'search' | 'send' | 'yahoo' | 'done' | 'emergency-call'`. +Is not supported on Android, as `returnKeyType` doesn't work with multiline inputs. -| Type | Default Value | Platform | -| ---------------------- | ------------- | ----------------- | -| `ReturnKeyTypeOptions` | `'default'` | iOS, Android, Web | +Accepts the standard React Native `ReturnKeyTypeOptions` values: `'go' | 'next' | 'search' | 'send' | 'done' | 'previous' | 'default' | 'google' | 'join' | 'route' | 'yahoo' | 'emergency-call' | 'none'`. + +| Type | Platform | +| ---------------------- | ----------------- | +| `'go'` | iOS, Android | +| `'next'` | iOS, Android | +| `'search'` | iOS, Android | +| `'send'` | iOS, Android | +| `'done'` | iOS, Android | +| `'previous'` | Android | +| `'default'` | iOS | +| `'google'` | iOS | +| `'join'` | iOS | +| `'route'` | iOS | +| `'yahoo'` | iOS | +| `emergency-'call'` | iOS | +| `'none'` | Android | + + +| Type | Default Value | Platform | +| ---------------------- | ------------- | ------------ | +| `ReturnKeyTypeOptions` | `'default'` | iOS, Web | > [!NOTE] > On Web, this maps to the [`enterkeyhint`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/enterkeyhint) attribute on the editor element. -> Only the values the browser recognises (`'enter'`, `'done'`, `'go'`, `'next'`, `'previous'`, `'search'`, `'send'`) have a visible effect; unsupported values are silently ignored. +> Only the values the browser recognises (`'enter'`, `'done'`, `'go'`, `'next'`, `'previous'`, `'search'`, `'send'`) have a visible effect; unsupported values are silently ignored and fall back to `'enter'`. ### `selectionColor` From e37a3b32bb7d2d652c8abcd8fa07c1db57866e93 Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz Date: Thu, 11 Jun 2026 12:06:30 +0200 Subject: [PATCH 03/10] docs: update returnKeyLabel description --- docs/INPUT_API_REFERENCE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index 98c3929ac..7d477a175 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -494,7 +494,7 @@ A React ref that lets you call any ref methods on the input. ### `returnKeyLabel` -Overrides the return key label with a custom string. Use `returnKeyType` for cross-platform return key control. +Overrides the return key label with a custom string. Not suppported by iOS. | Type | Default Value | Platform | | -------- | ------------- | ------------ | @@ -506,7 +506,7 @@ Specifies the label or icon shown on the keyboard's return key. Is not supported on Android, as `returnKeyType` doesn't work with multiline inputs. -Accepts the standard React Native `ReturnKeyTypeOptions` values: `'go' | 'next' | 'search' | 'send' | 'done' | 'previous' | 'default' | 'google' | 'join' | 'route' | 'yahoo' | 'emergency-call' | 'none'`. +Accepts the standard React Native `ReturnKeyTypeOptions` values: `'go' | 'next' | 'search' | 'send' | 'done' | 'default' | 'google' | 'join' | 'route' | 'yahoo' | 'emergency-call' | 'previous' | 'none'`. | Type | Platform | | ---------------------- | ----------------- | @@ -515,13 +515,13 @@ Accepts the standard React Native `ReturnKeyTypeOptions` values: `'go' | 'next' | `'search'` | iOS, Android | | `'send'` | iOS, Android | | `'done'` | iOS, Android | -| `'previous'` | Android | | `'default'` | iOS | | `'google'` | iOS | | `'join'` | iOS | | `'route'` | iOS | | `'yahoo'` | iOS | | `emergency-'call'` | iOS | +| `'previous'` | Android | | `'none'` | Android | From 80c2bb00ccaef29d261b1e64e169d634e42e1f96 Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz Date: Thu, 11 Jun 2026 12:18:06 +0200 Subject: [PATCH 04/10] docs: useHtmlNormalizer web reference --- docs/INPUT_API_REFERENCE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index 22d587c56..300d5d2bb 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -584,9 +584,9 @@ If true, Android will use experimental synchronous events. This will prevent fro If true, external HTML pasted/inserted into the input (e.g. from Google Docs, Word, or web pages) will be normalized into the canonical tag subset that the enriched parser understands. However, this is an experimental feature, which has not been thoroughly tested. We may decide to enable it by default in a future release. -| Type | Default Value | Platform | -| ------ | ------------- | ------------ | -| `bool` | `false` | iOS, Android | +| Type | Default Value | Platform | +| ------ | ------------- | ------------ | +| `bool` | `false` | iOS, Android, Web | ## Ref Methods From 695585ff32aac8de93a2bdf95dde8b32574ab346 Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz Date: Thu, 11 Jun 2026 15:31:53 +0200 Subject: [PATCH 05/10] docs: remove useHtmlNormalizer Web support --- docs/INPUT_API_REFERENCE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index 300d5d2bb..22d587c56 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -584,9 +584,9 @@ If true, Android will use experimental synchronous events. This will prevent fro If true, external HTML pasted/inserted into the input (e.g. from Google Docs, Word, or web pages) will be normalized into the canonical tag subset that the enriched parser understands. However, this is an experimental feature, which has not been thoroughly tested. We may decide to enable it by default in a future release. -| Type | Default Value | Platform | -| ------ | ------------- | ------------ | -| `bool` | `false` | iOS, Android, Web | +| Type | Default Value | Platform | +| ------ | ------------- | ------------ | +| `bool` | `false` | iOS, Android | ## Ref Methods From 45a47103f7967df31d95d598735b0d2fb09a4e29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= <74975508+kacperzolkiewski@users.noreply.github.com> Date: Thu, 11 Jun 2026 20:09:49 +0200 Subject: [PATCH 06/10] Update docs/TEXT_API_REFERENCE.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Igor Furgała <74370735+exploIF@users.noreply.github.com> --- docs/TEXT_API_REFERENCE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TEXT_API_REFERENCE.md b/docs/TEXT_API_REFERENCE.md index 609b479b8..1358f971f 100644 --- a/docs/TEXT_API_REFERENCE.md +++ b/docs/TEXT_API_REFERENCE.md @@ -1,6 +1,6 @@ # EnrichedText API Reference -> **Web is not supported.** `EnrichedText` is only available on iOS and Android. +> **Web is not yet supported.** `EnrichedText` is only available on iOS and Android. ## Props From 8a8c0c482e1ef794f1549b47573b1bb3e6f6dbb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Thu, 11 Jun 2026 20:35:03 +0200 Subject: [PATCH 07/10] docs: fix docs review --- docs/INPUT_API_REFERENCE.md | 19 +++++++----- docs/TEXT_API_REFERENCE.md | 60 ++++++++++++++++++------------------- 2 files changed, 41 insertions(+), 38 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index 22d587c56..39a815d48 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -8,9 +8,9 @@ If `true`, the input respects the system's accessibility font scaling settings. -| Type | Default Value | Platform | -| ------ | ------------- | -------- | -| `bool` | `true` | Both | +| Type | Default Value | Platform | +| ------ | ------------- | ------------ | +| `bool` | `true` | iOS, Android | ### `autoFocus` @@ -119,16 +119,16 @@ A custom regex pattern for detecting links in the input. If not provided, a defa With this approach you can customize what patterns should be recognized as links, for example you can make it so that only links starting with `https://` are detected, or you can support custom schemes. Keep in mind that not all JS regex features are supported, for example variable-width lookbehinds won't work. -| Type | Default Value | Platform | -| -------- | ----------------------------- | ----------------- | -| `RegExp` | default native platform regex | iOS, Android, Web | +| Type | Default Value | Platform | +| -------- | ----------------------------- | ------------ | +| `RegExp` | default native platform regex | iOS, Android | > [!TIP] > With this approach you can also disable link detection completely by providing a `null` value as the prop. ### `onBlur` -Callback that's called whenever the input loses focused (is blurred). +Callback that's called whenever the input loses focus (is blurred). | Type | Platform | | ------------ | ----------------- | @@ -497,7 +497,7 @@ A React ref that lets you call any ref methods on the input. ### `returnKeyLabel` -Overrides the return key label with a custom string. Not suppported by iOS. +Overrides the return key label with a custom string. Not suppported on iOS. | Type | Default Value | Platform | | -------- | ------------- | ------------ | @@ -712,6 +712,9 @@ Sets text alignment for the paragraph(s) at the current selection. When inside a > [!NOTE] > On Android, `'justify'` is not supported. Calling `setTextAlignment('justify')` does not apply justified text — the paragraph ends up with natural alignment, the same as `'auto'`. On iOS, justified alignment works as expected. +> [!NOTE] +> On Web text alignment is not supported. Calling `setTextAlignment()` has no effect. + ### `.startMention()` ```ts diff --git a/docs/TEXT_API_REFERENCE.md b/docs/TEXT_API_REFERENCE.md index 1358f971f..816893ba6 100644 --- a/docs/TEXT_API_REFERENCE.md +++ b/docs/TEXT_API_REFERENCE.md @@ -8,33 +8,33 @@ If `true`, the text respects the system's accessibility font scaling settings. -| Type | Default Value | Platform | -| ------ | ------------- | -------- | -| `bool` | `true` | Both | +| Type | Default Value | Platform | +| ------ | ------------- | ------------ | +| `bool` | `true` | iOS, Android | ### `children` The HTML string to render. Accepts the HTML format produced by `EnrichedTextInput`. -| Type | Default Value | Platform | -| -------- | ------------- | -------- | -| `string` | - | Both | +| Type | Default Value | Platform | +| -------- | ------------- | ------------ | +| `string` | - | iOS, Android | ### `style` Standard React Native `TextStyle` applied to the text. -| Type | Default Value | Platform | -| ----------- | ------------- | -------- | -| `TextStyle` | - | Both | +| Type | Default Value | Platform | +| ----------- | ------------- | ------------ | +| `TextStyle` | - | iOS, Android | ### `htmlStyle` A prop for customizing styles of HTML elements, including press colors for interactive elements. -| Type | Default Value | Platform | -| ------------------------------------------------------ | ------------- | -------- | -| [`EnrichedTextHtmlStyle`](#enrichedtexthtmlstyle-type) | - | Both | +| Type | Default Value | Platform | +| ------------------------------------------------------ | ------------- | ------------ | +| [`EnrichedTextHtmlStyle`](#enrichedtexthtmlstyle-type) | - | iOS, Android | ### `useHtmlNormalizer` @@ -53,9 +53,9 @@ How the text should be truncated when `numberOfLines` is set and the text overfl - `tail` – truncates at the end, e.g. `abcd...`. - `clip` – clips the text without inserting an ellipsis. -| Type | Default Value | Platform | -| ---------------------------------------- | ------------- | -------- | -| `'head' \| 'middle' \| 'tail' \| 'clip'` | `'tail'` | Both | +| Type | Default Value | Platform | +| ---------------------------------------- | ------------- | ------------ | +| `'head' \| 'middle' \| 'tail' \| 'clip'` | `'tail'` | iOS, Android | > [!NOTE] > On Android, when numberOfLines is set to a value higher than 1, only tail value will work correctly. @@ -64,25 +64,25 @@ How the text should be truncated when `numberOfLines` is set and the text overfl Limits the number of displayed lines. Set to `0` for unlimited lines. -| Type | Default Value | Platform | -| -------- | ------------- | -------- | -| `number` | `0` | Both | +| Type | Default Value | Platform | +| -------- | ------------- | ------------ | +| `number` | `0` | iOS, Android | ### `selectable` If `true`, the text can be selected by the user (e.g. for copy/paste). -| Type | Default Value | Platform | -| ------ | ------------- | -------- | -| `bool` | `false` | Both | +| Type | Default Value | Platform | +| ------ | ------------- | ------------ | +| `bool` | `false` | iOS, Android | ### `selectionColor` The color of the text selection highlight. -| Type | Default Value | Platform | -| ---------------------------------------------- | -------------- | -------- | -| [`color`](https://reactnative.dev/docs/colors) | system default | Both | +| Type | Default Value | Platform | +| ---------------------------------------------- | -------------- | ------------ | +| [`color`](https://reactnative.dev/docs/colors) | system default | iOS, Android | ### `onLinkPress` @@ -94,9 +94,9 @@ interface OnLinkPressEvent { } ``` -| Type | Default Value | Platform | -| ----------------------------------- | ------------- | -------- | -| `(event: OnLinkPressEvent) => void` | - | Both | +| Type | Default Value | Platform | +| ----------------------------------- | ------------- | ------------ | +| `(event: OnLinkPressEvent) => void` | - | iOS, Android | ### `onMentionPress` @@ -110,9 +110,9 @@ interface OnMentionPressEvent { } ``` -| Type | Default Value | Platform | -| -------------------------------------- | ------------- | -------- | -| `(event: OnMentionPressEvent) => void` | - | Both | +| Type | Default Value | Platform | +| -------------------------------------- | ------------- | ------------ | +| `(event: OnMentionPressEvent) => void` | - | iOS, Android | ## EnrichedTextHtmlStyle type From 6a423dbbb6693e8ccc01c3fe33e43b2a8d5e6a1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= <74975508+kacperzolkiewski@users.noreply.github.com> Date: Thu, 11 Jun 2026 20:43:03 +0200 Subject: [PATCH 08/10] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/INPUT_API_REFERENCE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index 39a815d48..5257374b4 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -497,7 +497,7 @@ A React ref that lets you call any ref methods on the input. ### `returnKeyLabel` -Overrides the return key label with a custom string. Not suppported on iOS. +Overrides the return key label with a custom string. Not supported on iOS. | Type | Default Value | Platform | | -------- | ------------- | ------------ | From 1e6d92783db59dfda79318d0b24b7445393f4244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Fri, 12 Jun 2026 07:42:30 +0200 Subject: [PATCH 09/10] docs: use specific platforms --- docs/INPUT_API_REFERENCE.md | 2 +- docs/TEXT_API_REFERENCE.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index df341a299..a10f10f42 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -445,7 +445,7 @@ interface OnSubmitEditing { | -------------------------------------------------------- | ----------------- | | `(event: NativeSyntheticEvent) => void` | iOS, Android, Web | -### `OnPasteImages` +### `onPasteImages` Callback invoked when the user pastes one or more images or GIFs into the input. diff --git a/docs/TEXT_API_REFERENCE.md b/docs/TEXT_API_REFERENCE.md index 816893ba6..36c49d6a5 100644 --- a/docs/TEXT_API_REFERENCE.md +++ b/docs/TEXT_API_REFERENCE.md @@ -40,9 +40,9 @@ A prop for customizing styles of HTML elements, including press colors for inter If `true`, external HTML (e.g. from Google Docs, Word, web pages) will be normalized before rendering. This converts arbitrary HTML into the canonical tag subset that the enriched parser understands. -| Type | Default Value | Platform | -| ------ | ------------- | -------- | -| `bool` | `false` | Both | +| Type | Default Value | Platform | +| ------ | ------------- | ------------ | +| `bool` | `false` | iOS, Android | ### `ellipsizeMode` From b99513806ae62dd396ae69215d9c94508b458c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20=C5=BB=C3=B3=C5=82kiewski?= Date: Fri, 12 Jun 2026 08:26:54 +0200 Subject: [PATCH 10/10] fix: update returnKeyType docs --- docs/INPUT_API_REFERENCE.md | 31 +++++++++++++++---------------- docs/WEB.md | 15 +-------------- 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/docs/INPUT_API_REFERENCE.md b/docs/INPUT_API_REFERENCE.md index 402ee85fe..62740798a 100644 --- a/docs/INPUT_API_REFERENCE.md +++ b/docs/INPUT_API_REFERENCE.md @@ -507,25 +507,24 @@ Overrides the return key label with a custom string. Not supported on iOS. Specifies the label or icon shown on the keyboard's return key. -Is not supported on Android, as `returnKeyType` doesn't work with multiline inputs. +On Android, this prop is accepted but ignored, as `returnKeyType` doesn't work with multiline inputs. Accepts the standard React Native `ReturnKeyTypeOptions` values: `'go' | 'next' | 'search' | 'send' | 'done' | 'default' | 'google' | 'join' | 'route' | 'yahoo' | 'emergency-call' | 'previous' | 'none'`. -| Type | Platform | -| ------------------ | ------------ | -| `'go'` | iOS, Android | -| `'next'` | iOS, Android | -| `'search'` | iOS, Android | -| `'send'` | iOS, Android | -| `'done'` | iOS, Android | -| `'default'` | iOS | -| `'google'` | iOS | -| `'join'` | iOS | -| `'route'` | iOS | -| `'yahoo'` | iOS | -| `emergency-'call'` | iOS | -| `'previous'` | Android | -| `'none'` | Android | +| Type | Platform | +| ------------------ | -------- | +| `'go'` | iOS, Web | +| `'next'` | iOS, Web | +| `'search'` | iOS, Web | +| `'send'` | iOS, Web | +| `'done'` | iOS, Web | +| `'default'` | iOS | +| `'google'` | iOS | +| `'join'` | iOS | +| `'route'` | iOS | +| `'yahoo'` | iOS | +| `'emergency-call'` | iOS | +| `'previous'` | Web | | Type | Default Value | Platform | | ---------------------- | ------------- | -------- | diff --git a/docs/WEB.md b/docs/WEB.md index 225211315..1eb07a7ab 100644 --- a/docs/WEB.md +++ b/docs/WEB.md @@ -19,20 +19,7 @@ Web support is still experimental. APIs and behavior can change in future releas ## Keyboard shortcuts -| Action | Mac | Windows/Linux | -| ------------------- | ----------------- | ----------------------- | -| Bold | ⌘ B | Ctrl+B | -| Italic | ⌘ I | Ctrl+I | -| Underline | ⌘ U | Ctrl+U | -| Strikethrough | ⌘ Shift+X | Ctrl+Shift+X | -| Inline code | ⌘ Shift+C | Ctrl+Shift+C | -| Code block | ⌘ Alt Shift+C | Ctrl+Alt+Shift+C | -| Normal paragraph | ⌘ Alt+0 | Ctrl+Alt+0 | -| Heading `n` (h1–h6) | ⌘ Alt+1 … ⌘ Alt+6 | Ctrl+Alt+1 … Ctrl+Alt+6 | -| Numbered list | ⌘ Shift+7 | Ctrl+Shift+7 | -| Bulleted list | ⌘ Shift+8 | Ctrl+Shift+8 | -| Checkbox list | ⌘ Shift+9 | Ctrl+Shift+9 | -| Paste plain text | ⌘ Shift+V | Ctrl+Shift+V | +See [Web Keyboard Shortcuts](./INPUT_API_REFERENCE.md#web-keyboard-shortcuts) for the up-to-date list of Web keyboard shortcuts. ## Unsupported