Last weekend, Garoppolo hit two milestones that in most cases wouldn't qualify as milestones. Garoppolo made his 16th NFL start, the equivalent of a full season, and his sixth consecutive start, the first time he's reached that mark.
Those numbers are meaningless to most starting quarterbacks. While Garoppolo doesn't seem too interested in them, either, they are notable because it's taken him five seasons plus seven weeks to get here.
"It's just been nice to go through the season with him so far," coach Kyle Shanahan said. "To come in at the end of the year when we were 1-9 -- to play those last five games, which was kind of a little bit different, a little crazy. Then, to come back the next year and he tore his ACL in the third game. Now, for him to come back ... it's been fun."
It's also been important for both Garoppolo and the Niners. The 2018 season was supposed to be Garoppolo's official unveiling, his first season as the full-time starter. Instead, he played just short of three full games before the knee injury ended his season.
The excitement and buzz that surrounded Garoppolo were replaced by question marks. After some difficult moments in the preseason -- including a 0.0 passer rating against the Denver Broncos in the second preseason game and a five-interception day in practice the week before that -- some began to wonder how safe Garoppolo's spot might be for 2020 and beyond.
Garoppolo, 27, has put most those concerns to rest.
Now, after signing him to a five-year, $137.5 million contract extension, the Niners are finally beginning to see what they have in Garoppolo -- and vice versa -- and where that relationship could go in the future.
"I wanted to really go through a whole season with him last year, where you could go through those ups and downs as a starting quarterback goes through, because he never got to go through a season as a starting quarterback," Shanahan said. "He's done a lot of good things and he's getting better each week. Hopefully we can continue to protect him and he'll continue to get better."
Sifting through statistics tells a tale of a quarterback who has had the stops and starts Garoppolo has since entering the league with the New England Patriots in 2014. That has made it impossible to make sweeping declarations about his progress based strictly on numbers.
Garoppolo has had big games, games where he's struggled and plenty in between. But whether you think he's a franchise quarterback, a game manager, a gunslinger who needs to cut down on bad decisions or a combination of all of those, there's one stat that can't be considered dumb luck given the sample size: his record.
After slogging through Sunday's 9-0 victory against Washington, Garoppolo is now 14-2 as a starter, 12-2 with the 49ers. Say what you want about measuring a quarterback by the team's record, but it's hard to pin that type of production on random chance over an extended period.
"I want to win," Garoppolo said. "At the end of the day, that's what it comes down to. Just whatever it takes. There are different ways to win in this league. Every game's going to be different depending on what the defense does, what their offense does even and how it affects us. At the end of the day, it's did you win or did you lose? That's all I care about."
Garoppolo has done plenty of winning, especially this season, as the Niners are 6-0 for the first time since 1990. While he is quick to deflect praise, Garoppolo's comeback from the torn ACL came with its share of challenges.
Through six games, Garoppolo is completing 68.3% of his passes for 1,314 yards with seven touchdowns and six interceptions. His passer rating of 90.8 ranks 22nd in the NFL and his 58.5 QBR sits 11th in the league.
He's also averaging 7.9 yards per attempt, ninth in the NFL, is getting rid of the ball second-fastest among quarterbacks with at least 100 attempts (2.54 seconds), and his 78.9 QBR on third down ranks seventh among quarterbacks who have made at least four starts.
The good news for Garoppolo? The 2019 49ers don't need him to be perfect or even carry the load as much as he did at the end of 2017. With a dominant defense and one of the most productive running games in the league, Shanahan has asked something different of Garoppolo every week.
Against the Steelers in Week 3, it meant coming through with a key touchdown pass to Dante Pettis in the closing minutes. Against the Rams in Week 6, it meant converting third downs to salt the game away. Last weekend, it was taking care of the ball on a rain-and-mud-soaked field.
Garoppolo's numbers won't wow you, but he's been what Shanahan needs him to be every week. That's something that has constantly evolved, especially as injuries have hit San Francisco's offense hard. Through it all, teammates have noted Garoppolo's steady hand in leading the way.
"Jimmy is great in the huddle," tight end George Kittle said. "The leadership that he carries and the voice that he has, both on the sideline and in the huddle, it's incredible. He's what makes our team click. Being able to have someone like that who kind of carries the team, whether he's throwing for how many yards or rushing for how many yards, his voice takes us a long way."
Perhaps the most encouraging thing is that there's plenty of room for Garoppolo to improve. As the season goes on, the Niners figure to get healthier, with the likes of tackles Joe Staley and Mike McGlinchey, fullback Kyle Juszczyk and receivers Deebo Samuel and Trent Taylor returning from injury.
When they do, the time will probably come when the Niners need more from Garoppolo. If he can find the balance between making an off-schedule play and a bad decision, that step should come.
"I want a guy who's not scared to make the big play and who's going to put it more on his shoulders and not always try to play it safe," Shanahan said. "There's a time and place. You are responsible for that ball and you've got the whole team counting on you. Sometimes we're counting on you to give us a chance to win and sometimes we've got to count on you to not give the other team a chance."