use swallow copy for component custom state