Improved ListWidget to not re-render all widgets when the underlying list changes