Environment
- NocoBase version: v2.0.8
- Previous version: v1.x → No issue
- Browsers:
- Chrome → affected
- Edge → affected
- OS: Windows
- Vietnamese input method: UniKey (Telex, Unicode)
Summary
This appears to be an IME bug / IME composition issue introduced in v2 .
Vietnamese typing using UniKey (Telex) worked correctly in NocoBase v1 , but after upgrading to v2.0.8 , form inputs started breaking during fast typing.
The issue looks very similar to a React controlled input IME bug , where the input may be re-rendered while the IME composition is still in progress.
Issue Description
When typing Vietnamese using UniKey inside NocoBase form fields, Vietnamese accents are incorrectly applied if typing quickly. In some cases, the text cursor (caret ) unexpectedly jumps.
For example, when trying to type:
Bùi Tuấn Anh
It may incorrectly become:
Bui Tuân Anh
Easy Reproduction Example
Typing:
aas
Expected result:
ấ
Actual result:
- only
âappears - the text cursor unexpectedly jumps to the end of the input
- the accent key (
s) is not applied to the currently composing character
Another example:
Typing:
Tuaans
Expected result:
Tuấn
Actual result may become:
Tuân
Conditions Under Which the Issue Occurs
- Typing quickly → issue occurs
- Typing slowly → works correctly
- Pasting Vietnamese text → works correctly
- Markdown editor → works correctly (opens a separate editor)
- Single line text field → affected
- Long text field → also affected
This strongly resembles a classic IME composition bug :
- IME breaks during fast composition
- multi-step Telex combinations fail (
aa + s,aw + s, etc.) - caret position resets unexpectedly
Important Difference Between Versions
NocoBase v1:
Vietnamese typing works normally.
NocoBase v2.0.8:
Vietnamese typing breaks during fast input.
This strongly suggests a regression introduced in v2 , possibly related to:
- form rendering
- controlled inputs
- Formily behavior
- IME composition handling
- React rendering lifecycle
Investigation Performed
Not browser-specific
Tested on:
- Chrome
- Edge
→ Same issue occurs in both browsers.
Not tied to a specific schema/form
Tested:
- Completely new collection with only one text field → issue still occurs
- Completely new page → issue still occurs
- New form with only one input field → issue still occurs
- No collection workflow bound
- No linkage rules enabled
No network requests during typing
Checked DevTools → Network:
- No repeated API requests while typing.
Technical Observation
In DevTools Console, this event is triggered on every keypress:
[FlowModel] dispatchEvent: uid=xxxx, event=formValuesChange
Example:
[FlowModel] dispatchEvent: uid=4cbc7ebb14c, event=formValuesChange, isFork=false, cleanRun=true, targetIsFork=false
This suggests that formValuesChange is dispatched on every keystroke.
It is possible that form state updates or re-renders are interrupting IME composition events (compositionstart , compositionend ), causing:
- IME state loss
- incorrect Vietnamese accents
- caret jump / cursor moving to the end
- broken Telex composition
Suspected Root Cause
Potential IME bug / IME composition regression in v2 involving:
- React controlled inputs
- Formily
- Ant Design Input/TextArea
- IME composition handling
formValuesChangere-renders- caret position reset during composition
Since the exact same typing workflow worked correctly in v1 and fails in v2.0.8 , this appears to be a v2 regression affecting IME input behavior .