Я не очень знаком с response-transition-group, но я сделал переход с другими библиотеками. Я думаю, что вы используете идентификатор в качестве ключа сейчас. Я бы добавил ключевое поле для моего объекта в массиве. Ключ должен быть уникальным. Вы можете сделать его уникальным многократным способом, например, с помощью счетчика или uuid. Мне нравится UUID. Таким образом, если вы измените временный идентификатор на последний, а ключ останется прежним, анимация не будет.
const [items, setItems] = useState([
{ key: uuid(), id:'temporal id', name: 'name' },
...
]);
При переходе используйте ключ вместо идентификатора.
<TransitionGroup className="todo-list">
{items.map(({ key, name }) => (
<CSSTransition
key={key}
timeout={500}
classNames="item"
>