All eyes are on Jimmy Garoppolo and Trey Lance at 49ers training camp, as the No. 3 overall pick attempts to beat out the 29-year-old veteran for the starting quarterback spot when the season opens in Detroit on Sept. 12.
To be clear, coach Kyle Shanahan has been adamant that Garoppolo and Lance aren't in a competition, but with each dime the North Dakota State product drops, he gets closer to forcing his way into the conversation. Shanahan now has said Lance will play this season, and even is open to going with some sort of QB rotation between Lance and Garoppolo.
But that's not the only QB battle going on in Santa Clara, as Nate Sudfeld and Josh Rosen are dueling to be the No. 3 QB on the roster. While Rosen had a solid camp early, it sounds like recent mistakes could have him falling behind Sudfeld in the competition.
"I think he started off real well," Shanahan said Sunday of Rosen. "I think he's taken a couple steps back the last few practices."
Shanahan particularly addressed a play from Rosen in which he was picked off by safety Tony Jefferson after making an overthrow on a broken play.
"It was unfortunate on that," Shanahan said. "We were supposed to go to someone and we had a busted route. That kind of fell apart, and he tried to overcompensate and made a bad situation worse."
RELATED: Lance, Aiyuk give 49ers electric glimpse of future
Rosen signed with the 49ers off the Tampa Bay Buccaneers' practice squad last December, and re-signed with the team to a one-year deal in February.
The No. 10 overall pick in the 2018 NFL Draft, Rosen has had a rough start to his career, playing for four teams in three seasons. However, given his pedigree, Rosen would appear to be a solid No. 3 option for the 49ers, especially given Garoppolo's injury history.
But as the first preseason game approaches, it sounds like Sudfeld has the upper hand on Rosen, who will need to clean up his play in order to secure a roster spot.