Skip to main content

Known limitations

This page lists limitations that apply to every platform. Behaviours that differ only between iOS, Android, and Web are documented separately under Compatibility.

Some of these are on our Roadmap; others are deliberate design choices that keep the library fast and its output predictable.

Single-level lists only

The editor supports a single level of ordered and unordered lists. Nested lists are not supported - you can't indent a list item to create a sublist. Multi-level list support is planned; see the Roadmap.

Fixed set of HTML tags

The library intentionally works with a fixed, curated set of standard and custom HTML tags rather than accepting arbitrary markup. Tags outside that set are stripped or normalized away when they enter the editor. This is a deliberate design decision: it keeps the produced HTML portable and guarantees that the EnrichedTextInput and the EnrichedText display render identically. See Supported tags for the full list.

We may add support for more tags and related functionality over time - see the Roadmap for what is planned. If you need a specific tag that is not supported yet, the best way to let us know is to open a GitHub issue in our repo.

No global blur support on mobile

On mobile, you can use Keyboard.dismiss() and keyboardShouldPersistTaps to blur the React Native's TextInput on taps outside of it. This doesn't work with EnrichedTextInput. This is a limitation of React Native itself, not something specific to this library: React Native doesn't expose TextInputState publicly, so we can't register our input in the React Native state.