The 25-year-old forward could have become a restricted free agent July 13.
"It's a good feeling to be able to have some security and stability in this town," Roslovic said. "We're excited and ready for the upcoming season. It's just a great day."
Roslovic had NHL career highs in goals (22) assists (23) and points (45) in 81 games for the Blue Jackets this season and was the center on the top line with Gustav Nyquist and Jakub Voracek after captain Boone Jenner missed the final 23 games with a back injury. He had 19 points (12 goals, seven assists) during that stretch, including 13 points (10 goals, three assists) in the final 10 games and a six-game point streak (five goals, two assists) from April 17-28.
"I told him after we shook hands and signed the contract, even bigger expectations and responsibility on his shoulders, but that's the way it should be," Blue Jackets general manager Jarmo Kekalainen said. "We had a few different options on the length of the contract, but I think we both felt that it wasn't time for a long, long-term contract right now. And so this is a great opportunity for us to keep evaluating Jack and his growth, and we believe he can be a big part of this and so does he. So we agreed on the length of the contract, and I think we keep building that trust with him, then hopefully at some point in the right time with this contract, we can extend it to a longer-term contract and keep moving on and grow with Jack."
Selected by the Winnipeg Jets in the first round (No. 25) of the 2015 NHL Draft, Roslovic has 146 points (60 goals, 86 assists) in 309 regular-season games for the Blue Jackets and Jets, and five assists in 20 Stanley Cup Playoff games. He was traded to the Blue Jackets by the Jets with forward Patrik Laine on Jan. 23, 2021, for forward Pierre-Luc Dubois and a third-round pick in the 2022 NHL Draft.