move lifecycle check into replaceProps instead of updateComponent