Could it be because it's saving to local storage after every keyup?
I made it save every 2 seconds with setInterval() and it feels a little smoother.