you can break the incoming data into chunks and render them atomically. this lets you always use append, which means you don't need to replace ui. If you mean a textarea, you'll have to manually memorize the .scrollTop, .selectionStart, and .selectionEnd properties, and re-set those to the old values after you change the .value.
BROWSER STATS [% share]
(2013/10/31) IE7:0.5, IE8:8.6, IE9:5.3, IE10:12.3, FF:17.7, CH:41.8, SF:8.1, MOBILE:20.4