Through nearly two weeks of the NFL free-agent signing period, the 49ers have made their greatest gains on defense.
Five of the six players they have signed from the outside are defensive players, including former Kansas City cornerback Charvarius Ward.
The exception is wide receiver Ray-Ray McCloud, who should see action as a slot receiver while handling the team’s primary responsibilities in the return game.
Stay in the game with the latest updates on your beloved Bay Area and California sports teams! Sign up here for our All Access Daily newsletter.
Of course, the biggest lingering question is how the 49ers will ultimately handle their situation at quarterback, where they have not been able to trade injured veteran quarterback Jimmy Garoppolo.
Here is how the 49ers’ offense sets up at this stage of the offseason:
Quarterback
Projected starter: Trey Lance
San Francisco 49ers
Find the latest San Francisco 49ers news, highlights, analysis and more with NBC Sports Bay Area and California.
Key reserves: Jimmy Garoppolo, Nate Sudfeld
We still list Garoppolo because he remains on the team’s offseason roster, and he figures to be here for a while. It seems implausible Garoppolo and his $25.5 million of non-guaranteed money will still be around when the 49ers open training camp. The 49ers need to redistribute that money to key players who factor into the future of the organization.
Garoppolo would likely already be on another team if not for the shoulder injury he sustained in the playoffs that required surgery and a four-month recovery time. If no team is willing to trade for Garoppolo, the 49ers will likely have to make a decision once he passes a physical and training camp gets underway.
The 49ers have been talking up Lance, whom the club selected at No. 3 overall in the 2021 NFL Draft. General manager John Lynch said a couple weeks back at the NFL Scouting Combine that Lance showed them all the right things behind the scenes during his rookie season.
“We can only hope he can be Patrick Mahomes or anything close to that, and he’s going to get his chance to go show that,” Lynch said.
The 49ers made their intentions known with the quarterback depth chart when Sudfeld was recently signed to a fully guaranteed one-year, $2 million contract. In the 49ers' cap situation, that’s not the kind of money awarded to a player they envision being on the practice squad as the No. 3 guy.
Running back
Projected starters: Elijah Mitchell, FB Kyle Juszczyk
Key reserves: Jeff Wilson Jr., Trey Sermon, JaMycal Hasty
Mitchell made his presence known from Week 1 of the regular season when he stepped in admirably for Raheem Mostert, who was lost for the season after just two rushing attempts in the season opener against the Detroit Lions.
Mitchell missed six regular-season games due to injuries and still rushed for 963 yards. Pittsburgh’s Najee Harris was the only NFL rookie to gain more yards on the ground. Harris averaged 3.9 yards per attempt, while Mitchell averaged 4.7 a carry.
The 49ers did not get much from Sermon, whom the club selected in the third round of the draft. He appeared in nine games and gained 167 yards on 41 attempts. Wilson looked rusty after missing half the season following offseason knee surgery. He is back on a one-year deal, as is Hasty, who served as the 49ers’ third-down back.
Mostert signed with the Miami Dolphins this offseason. The 49ers have experienced success with finding undrafted rookies to fit the system. They will likely try to add another young back or two.
Wide receiver
Projected starters: Deebo Samuel, Brandon Aiyuk
Key reserves: Jauan Jennings, Ray-Ray McCloud
It is doubtful Samuel’s representation will allow him to step on the field for training camp without a new contract that pays him near the top of the market for NFL wide receivers. That’s one of the organization’s top priorities for the remainder of the offseason.
Aiyuk figured things out as the season progressed, and his elevation in play helped the 49ers form a strong one-two punch at wide receiver.
Jennings came on strong after taking over as the No. 3 wide receiver. He became one of Garoppolo’s favorite targets on third downs and in the red zone. The 49ers signed McCloud to a two-year, $4 million contract to give the team more of a true slot receiver.
Seldom-used receiver Trent Sherfield signed with the Dolphins. With nine draft picks, the 49ers can be expected to add another wide receiver in what figures to be a deep and talented pool of incoming rookies.
Tight end
Projected starter: George Kittle
Key reserves: Charlie Woerner, Tanner Hudson, Jordan Matthews
Kittle remains as the NFL’s highest-paid tight end nearly two years after he signed his big contract extension. This is a big offseason for him, as he must take the necessary steps to avoid the injuries that have set him back over the past two seasons.
Woerner supplanted Ross Dwelley as the 49ers’ backup last season. Dwelley remains unsigned as an unrestricted free agent.
The 49ers spent a lot of time with tight ends at the NFL Scouting Combine. That will clearly be a position of interest in the upcoming draft. The 49ers will look to build more depth behind Kittle and, potentially, provide competition for Woerner at No. 2.
Offensive line
Projected starters: LT Trent Williams, LG Aaron Banks, C Alex Mack, RG Daniel Brunskill, RT Mike McGlinchey
Key reserves: T Jaylon Moore, C Jake Brendel, G/T Colton McKivitz, T Justin Skule
As free agency approached, the 49ers conceded they would not be able to retain left guard Laken Tomlinson as a free agent. Tomlinson signed a big-money deal with the New York Jets.
Banks struggled during training camp of his rookie season, but the 49ers expressed optimism that he made a lot of progress behind the scenes and is ready to take over as the starter as a second-year pro.
Mack, 36, is approaching his 14th NFL season, and the 49ers have to better align themselves at the backup position. With nine draft picks, the 49ers almost assuredly can be expected to add more depth for their interior offensive line. Brunskill held his own as a starter and is valuable due to his ability to play anywhere on the line.
RELATED: Maiocco: Why 49ers' Jimmy G trade prospects have changed
McGlinchey underwent surgery to repair a torn quadriceps last season, and should be more healthy than he’s been in a while. This is a big season for him as he plays on the fifth-year option of $10.88 million.
Moore showed some good things as a rookie with his ability to play both tackle positions, but the 49ers ended up going with McKivitz in the win-or-go-home Week 18 game at the Los Angeles Rams when Williams was out with a high-ankle sprain. It was the only regular-season game McKivitz played in 2021, though he was active for each of their playoff games.
Download and follow the 49ers Talk Podcast