The fullback, who made his Kangaroos debut last year, debuted for the Sharks as an 18-year-old in 2014 and has scored 38 tries in 57 games for the club.
"It's very exciting and good I was able to get it done before the start of the season," Holmes said.
"We're trying to keep the same team that won the premiership together, it's a great bunch of guys, there are some good young blokes coming through and I'm really happy with the way we are going.
"As for playing fullback, I can't wait to play there."