Releases: apollohg/react-native-prose-editor
Releases · apollohg/react-native-prose-editor
Release list
0.5.25
Fixed
- Mention suggestion chips now render raw suggestion labels prefixed by the configured trigger, so labels no longer need to include
@in addon configuration.
Tests
- Added React, Android, and iOS regression coverage for trigger-prefixed mention suggestion chip display with raw labels.
0.5.24
Fixed
- Android now defers host-level outside-tap observer and keyboard toolbar view removals, avoiding framework
ViewGroup.dispatchGetDisplayListcrashes during focused editor teardown and rapid re-entry. - Android release builds now preserve native editor
Viewclass names in crash reports, making framework ViewGroup crashes actionable after minification.
Tests
- Updated Android native view lifecycle coverage for deferred outside-tap observer cleanup.
0.5.23
[0.5.23] - 2026-06-15
Fixed
- Android auto-grow updates after editor recreation.
0.5.22
Fixed
- iOS no longer crashes with a stack overflow when a delegate-proxying keyboard library (e.g. react-native-keyboard-controller) wraps the focused editor's delegate. The editor now uses a dedicated internal
UITextViewDelegateobject instead of acting as its own delegate, so proxies can't forward private UITextView selectors back into the text view.
Tests
- Added iOS regression coverage for keyboard-controller-style delegate proxies forwarding
keyboardInputChangedSelection:back to the editor.
0.5.21
Added
- Added
NativeRichTextEditorRef.clearContent()as a schema-aware cross-platform way to clear the editor for chat composer and draft reset flows.
Fixed
- Android now preserves the same-editor input connection while refreshing IME state after JS-driven full-content replacements and native-mutation preflight.
- Android imperative whole-document content setters now retry after an in-flight native update is acknowledged, so chat-style composers can repeatedly call
clearContent()orsetContentJson({ type: 'doc', content: [] })after sending messages. - Android now requests a fresh IME input connection when a focused editor is made editable again, preventing chat composers from getting stuck after send flows that briefly pass
editable={false}while clearing content. - Android
clearContent()now uses a reset-style native update that bypasses composition preflight and clears stale pending update queues. - Android now explicitly invalidates the rendered editor view after Rust-backed full-content updates, preventing
clearContent()resets from leaving stale pre-send text visible until the next key press. - Android
clearContent()now also sends reset updates through a dedicated prop-backed native reset lane, so composer clears are delivered even when the immediate Expo view command is delayed, resolvesfalse, or races native view readiness. - Android Expo prebuild projects can use the package config plugin to exclude obsolete JNA
armeabi,mips, andmips64native libraries, avoiding NDK strip warnings in consuming apps.
Tests
- Added Android regression coverage for committing and composing text again after an external clear, including after preflight adopts a native text mutation.
- Added React wrapper regression coverage for retrying Android
setContentJson()after an in-flight native update and forclearContent(). - Added Android regression coverage for a focused read-only toggle keeping the old input connection blocked while allowing a fresh connection to type again.
- Added React wrapper and Android native view coverage for reset updates bypassing blocked preflight, invalidating rendered content, retrying when native readiness is delayed, and superseding stale in-flight editor updates.
0.5.20
Fixed
- Android now refreshes the focused IME session after JS-driven full-content replacements.
0.5.19
Fixed
- iOS renders an emoji correctly when it is the first character in the editor.
- iOS native toolbar mention suggestions now use adaptive foreground rendering without nesting glass inside the toolbar chrome, with semibold glass labels, an animated chrome transition, and tighter item padding.
- iOS native toolbar disabled buttons now use transparent native foreground color instead of fixed gray.
- Enabling mentions after editing no longer leaves the example editor bound to a stale or reset native editor instance.
Tests
- Added iOS regression coverage for leading emoji rendering without splitting UTF-16 surrogate pairs.
- Added iOS regression coverage for adaptive native toolbar mention suggestion text.
- Added React wrapper regression coverage for preserving uncontrolled content and native view commands across live mentions toggles.
0.5.18
Changed
- Android Rust render application is deferred after
finishComposingTextand composition commits so theInputConnectionstays alive for Samsung's follow-up space or autocorrect commit. - Android editor update events are debounced and batch-drained, skipping stale-editor payloads.
- Android IME context strips synthetic empty-block placeholders from surrounding text and reports sentence-caps at rendered line starts (including after list markers), with a Samsung Keyboard fallback for stale shift state.
- Android composing text carries transient paragraph font styling so Samsung's pre-commit composition matches the surrounding text.
- iOS tracks an authorized UTF-16 selection range to detect stale UIKit carets left behind by autocomplete/autocorrect and maps them through the replacement range before committing to Rust.
- iOS inline predictions (marked text without
insertText) are no longer committed to Rust. - Example app output panel updates are debounced during fast typing.
Fixed
- Android
commitCorrectionfollowed by a matchingcommitTextno longer double-inserts the corrected word. - Android
commitCorrectionduring active composition defers the Rust insert until the IME's follow-upcommitText, preventing a missing-word or double-word race. - Android
finishComposingTextno longer triggers anInputConnectionrecreation before Samsung's pending space commit arrives. - Android single-character delete-and-replace autocorrections, such as Gboard changing
itoI, no longer lose the replacement commit. - Android skips redundant spannable re-application when the visible text already matches the incoming Rust render, avoiding a scroll-position reset.
- Android refreshes IME state after block-split operations and corrects Samsung Keyboard composing text when the keyboard ignores line-boundary sentence caps.
- iOS caret after autocomplete insertion, autocorrect replacement, and list-context mutations now lands after the replacement text instead of at the pre-mutation offset.
- iOS
setMarkedTextflushes any pending native autocorrect before entering composition.
Tests
- Expanded iOS regression coverage for stale-caret mapping, inline prediction isolation, list-context mutations, length-changing autocorrect, and marked-text flushing.
- Expanded Android regression coverage for sentence-caps, placeholder stripping, Samsung keyboard composing,
InputConnectionlifecycle, correction commit deduplication, render deferral, optimistic render reuse, and surrounding-delete autocorrect handling.
0.5.17
Added
- Added Android device IME regression coverage and an
android:test:ime:devicescript for native keyboard suggestion and autocorrect flows.
Changed
- Hardened JS/native command coordination so toolbar actions, mention insertion, content updates, and cached reads prepare or flush native editor state before mutating Rust content.
- Added editor identity and document-version scoping across native events, mention queries, editor-ready retries, pending native actions, and command retries to ignore stale native work.
- Refreshed native iOS core framework metadata from the rebuilt editor core artifacts.
Fixed
- iOS autocorrect, autocomplete, marked text, paste, blur, input trait updates, toolbar actions, and mention selection now preserve authorized native text changes through reconciliation.
- Android IME composition, autocorrect, autocomplete, hardware keys, selection/range mapping, destroyed-editor handling, and pending native actions are guarded against stale or conflicting updates.
- Native UTF-16/scalar position bridging now handles Unicode and list-marker offsets more consistently across Android and iOS.
Tests
- Expanded Android, iOS, and JS regression coverage for autocorrect/autocomplete, command preflight and retry, mention query and selection scoping, controlled content sync, editor lifecycle guards, and Unicode position mapping.
0.5.16
Fixed
- iOS and Android keyboard suggestions and autocorrections now commit into the Rust-backed editor state instead of being immediately reverted by reconciliation.