emoji-replace-insert only replaces when you hit space, not enter, tab, etc
I'm enjoying this series and am following along with your code. I notice that you won't get any replacement when you follow the emoji string with anything other than a space: (if (string= s " ")
It would be nice to handle hitting enter after the string, too: if you don't want to go down the regexp rabbit hole, you could just do
(or (string= s " ") (string= s "\n"))
Just a thought.