Collection component with change tracking