Needn't + инфинитив означает, что говорящий дает полномочия для невыполнения некоторых действий.
You didn’t need to swum so far. – Вам не было необходимости заплывать так далеко. (Мы не знаем, заплывал он так далеко или нет)
Don’t have to + инфинитив используется при отсутствии необходимости основано на внешних обстоятельствах.
You don’t need to walk today. или You haven’t got to work today. или You needn’t work today. – Тебе сегодня не нужно работать.(Нет необходимости)