The 22-year-old Horvat had a career-high 20 goals and 32 assists last season. He was the third-youngest player in franchise history to lead the team in scoring.
"Bo has quickly become a foundational player on our team and we're thrilled for him to be a part of what we're building here long term," general manager Jim Benning said in a statement. "His commitment and work ethic have helped his game improve each season. He's already a leader on our team and a young player fans can be excited to watch for years to come."
Horvat has 117 points in his three seasons with the Canucks, scoring 49 goals in 231 career games.
"It's a great feeling to be able to continue my career for six more seasons in Vancouver," Horvat said in a statement. "Since being drafted by the Canucks, I have been welcomed by fans with open arms and I'm incredibly proud and fortunate to call this city and province home. I couldn't be more excited to help this team win."