Changed signal firing in incorrect order

This might as well be a bug report at this point but I cant find a solution for this. When using TextBox:GetPropertyChangedSignal, CursorPosition updates before Text does. This should not be the case at all. How can the cursor move forward when there is no text to move forward to?

I’m writing a custom chat system for my game and I am attempting to do emoji autocomplete, similar to how Discord does it. When I am only updating the CursorPosition it works just fine.
]

However, when the cursor is at the very front, CursorPosition ends up updating before Text does which makes the autocomplete fall behind because by the time the autocomplete routine runs, there is no new text for it to use. Here’s what that looks like:

persevere should disappear immediately after I input the “n” because I am using a Trie, but you can clearly see the Text property has not updated by the time the cursor has moved.

What can I do about this? I want autocompletes to feel responsive all the time, including when you’re typing but I cannot find a workaround that doesn’t involve compromising user experience. Is this even a bug to begin with? Why would this ever be intentional behavior?

UPDATE:

I found a temporary workaround for this! It’s still not ideal and I would love to see this issue addressed but here’s what I did:

    if not UserInputService:IsKeyDown(Enum.KeyCode.Right) and not UserInputService:IsKeyDown(Enum.KeyCode.Left) then
        ChatBox:GetPropertyChangedSignal("Text"):Wait()
    end

If the user didn’t trigger the cursor to change via the arrow keys, it (usually) means the update was triggered by new text being entered into the text box, so I can wait for the text to update. This isn’t 100% foolproof as it doesn’t work when the cursor is updated via the mouse but I think I can address that too.