If your spring feels too fast, use visualDuration, not duration.
Same 0.5, same bounce:
duration → the move takes 96ms
visualDuration → the move takes 231ms
duration is the time until the spring stops. visualDuration sizes the move.
transition={{
type: "spring",
visualDuration: 0.5,
bounce: 0.5,
}}