Reproduction steps
Edit: See comment below with the zip for conclusive research on the bugs
Reproduction steps A. Home / End- Click the message field.
- Insert a custom emoji from the emoji picker as the first thing on the line.
- Type "hello" after it. The caret is now at the end of the line.
- Press Home.
- Type a letter.
- Clear the field. Type "hello", then insert a custom emoji at the end of the line.
- Click between "he" and "llo", press End, then type a letter.
- Click the message field and type "hello".
- Press Shift+Enter to start a second line.
- Insert a custom emoji. It is now the first thing on line 2, with the caret right after it.
- Press Left once.
Expected behaviour
A. Home puts the caret before the emoji at the start of the line. End puts it after the emoji at the end of the line. Typing works in both cases.
B. Left moves the caret from just after the emoji to just before it, on line 2:
hello
E| -> |E
Actual behaviour
A. After Home (step 4) or End (step 7), the caret disappears and typing does nothing.
B. The caret jumps to line 1 instead of stopping before the emoji on line 2:
hello hello|
E| -> E
[Add: after pressing Left, does a typed letter go on line 1 or before the emoji? Does Right arrow do the same thing the other way?]
Build information
Stable Desktop 2026.1018.223338, Web 2026.1018.223338, Electron 44.4.1, Chrome 152.0.7977.78, Node 24.21.0, Locale en-US
As for the Platform I only tested on Windows, Desktop app, perhaps it applies to other OS's too though.
Platform
Windows
Evidence
Reproduced with custom emoji. Tested with a standard Unicode emoji too: not reproduced
Possibly related: the composer may give the caret two positions at the emoji's edge (end of the previous line vs. start of the emoji's line), and the browser draws it in the wrong one or in no visible spot.
5 comments
Comment by Fullest
Comment by mangafan
Comment by Fullest
Comment by mangafan
Comment by mangafan
Update: source of the bugs has been found.
I investigated this further with LLM assistance. I know you guys will not review LLM code, but hopefully the investigation's results themselves will be helpful. The attached ZIP contains a proposed patch (feel free to ignore this), explanations with source files/line numbers, and before/after code snippets. I can reproduce both problems in the desktop client:- Home/End near custom emoji: the caret disappears and typing stops. After Home, copying the draft confirms the typed letters aren’t there.
- Left after a line-start emoji: type hello, Shift+Enter, insert a custom emoji, then press Left and type X. X appears on the previous line instead of before the emoji.
Right arrow works normally in my tests, with or without the trailing space. The proposed patch passes isolated Lexical tests, but hasn’t been tested in a complete Fluxer build. The included HTML is only a browser experiment, not an exact Fluxer reproduction. Could someone review the patch and test it in the full client?