Here is what stood out from the 49ers eighth practice during training camp in Santa Clara.
Trey Lance
Lance had one of his better days of training camp, finishing 9-13 with a drop that went right through the hands of veteran Malik Turner.
During a move the ball period near late in practice, Lance found George Kittle on third down to move the sticks. On the next play, Lance threw well over the head of running back Jeff Wilson Jr on a screen to the right side. The missed opportunity would prove costly when Lance had to check the ball underneath a couple of plays later to end the possession.
One of Lance’s more impressive plays of the day came on a short throw to Elijah Mitchell.
This play saw Kerry Hyder get around rookie right guard Spencer Burford. Lance saw this coming, slid to his left, and was still able to get the ball out to Mitchell in the right flat.
Tyrion Davis-Price
The rookie running back was solid during a pass protection drill. Matched up with Fred Warner, Davis-Price held his ground, not backing down after the All-Pro linebacker got him with a blow to the helmet.
Davis-Price also showed off his power and agility. He burst through the line on a run to the right, made a defender miss with a quick cut, and then ran over linebacker Marcelino McCrary-Ball.
Elijah Mitchell
Mitchell took an inside handoff and sprinted untouched through the defense for a long touchdown for his second big run of the day. Early in team drills, he took a pitch to the right around the corner and exploded up the field.
Brandon Aiyuk
Aiyuk continued his strong camp. He caught both passes thrown his way during the team drills, a curl followed by a quick slant from Nate Sudfeld.
During one-on-one drills, the 49ers cornerbacks couldn’t come close to stopping Aiyuk. Rep after rep, he left the defender wondering what they had to do to keep up.
Deebo Samuel
Samuel continues to work his way back after missing the offseason due to a contract dispute. After slipping on his first rep during one-on-ones, Samuel beat Charvarius Ward down the left sideline, but the pass was overthrown.
Samuel was targeted only twice during team drills. The first was an overthrown deep post from Lance, and the duo would connect on the next attempt, with Lance drilling the ball to Samuel on a curl route to beat tight coverage from Talanoa Hufanga.
Ray Ray McCloud
After having a few rough practices due to what looked like a lower leg injury, McCloud bounced back today with three receptions on four targets.
McCloud started things by beating Charvarius Ward on an over route, coming across the field from right to left and catching a well thrown ball from Trey Lance.
After catching a tunnel screen from Nate Sudfeld, the duo connected a second time, this time on a curl to defeat tight coverage from Ambry Thomas.
Aaron Banks
Banks continues to show improvement as he settles in at left guard. The second-year offensive lineman did an excellent job of handling a variety of stunts and twists from the defensive line, giving Trey Lance plenty of time to throw.
Center update
Daniel Brunskill stepped into the starting group for the first two series during team drills, with Jake Brendel taking the next two.
Brunskill’s day didn’t get off to a good start as he was late with the snaps on each of the first two plays. He settled in after that and had a solid performance. It seems as though the 49ers want him to earn the starting role.
Kevin Givens
Givens stepped into the starting lineup with Arik Armstead sidelined due to a knee injury.
During a move-the-ball period, Givens burst through the offensive line to drop Elijah Mitchell for a loss of two.
Tarvarius Moore
Moore continues to improve as he returns from a torn Achilles tendon. A few days ago, a pair of interceptions highlighted Moore’s performance; today, it was a crushing hit on Jauan Jennings after a reception over the middle.
Javon Kinlaw
Kinlaw did not participate in today’s practice. The 49ers gave no official reason, but it was likely a scheduled day off as he continues to work his way back from knee surgery.