Когда React-приложение начинает тормозить, первая мысль знакома каждому: расставить useMemo, useCallback и memo. Вычисление пересчитывается - обернём в useMemo. Функция пересоздаётся - добавим useCallback. Дочерний компонент ререндерится без видимой причины - завернём в memo.