SANTA CLARA -- Here's who stood out on Day 12 of 49ers training camp. Keep in mind, Charvarius Ward missed practice with a groin strain, and Emmanuel Moseley missed practice with a hamstring strain.
1. Fullback Kyle Juszczyk
Caught three passes from Trey Lance -- a five-yard check down on 1st and 10, a 15-yard catch on 3rd and 2, an 8-yard catch on 3rd and 3 (more on Lance in a minute). Of all the 49ers running backs, Juszczyk is the best receiver and the best blocker, which means he should be their third-down back.
2. Running back JaMycal Hasty
Ran for a 50-yard gain around the left end against the second-string defense. Hasty is making it extremely difficult for the 49ers to release him. He's too explosive to be on a practice squad. The Rams or Cardinals should claim him if he hits waivers.
3. Tight end George Kittle
Faced Talanoa Hufanga and Tarvarius Moore during 1 on 1s and beat them both. Also caught two passes from Trey Lance during 11 on 11s. Kittle is in midseason form. The 49ers just have to keep him healthy. So far, so good.
4. Tight end Ross Dwelley
Faced Talanoa Hufanga and Tayler Hawkins during 1 on 1s and beat them both. Dwelley should make the final roster even though the 49ers rarely use him. He's too good to cut.
5. Tight end Tyler Kroft
Faced George Odum and Tayler Hawkins during 1 on 1s and beath them both. Also caught a 17-yard touchdown pass from Nate Sudfeld. Kroft, Dwelley and Kittle should be the 49ers' three tight ends.
6. Wide receiver Brandon Aiyuk
Caught a 50-yard touchdown pass from Brock Purdy after beating Qwuantrezz Knight with a fade route, then caught a 20-yard pass from Lance after beating Ambry Thomas with an out route. Aiyuk has been the 49ers' best offensive skill player every day in camp.
6. Wide receiver Tay Martin
Caught two 10-yard passes during 11 on 11s. Martin isn't explosive, but he's a big possession receiver who's beginning to get open. Look for him to make the practice squad.
7. Wide receiver Malik Turner
Caught a 40-yard touchdown pass from Nate Sudfeld on 3rd and 11, and drew a 40-yard defensive pass interference call on a well-thrown deep pass from Lance. Turner probably will make the team if the 49ers keep six wide receivers.
8. Nickelback Samuel Womack
Took all the reps at nickelback with the first-string defense and broke up a pass in the end zone intended for Jauan Jennings. Look for Womack to start at nickel Week 1 against the Chicago Bears.
THE NOT SO GOOD
1. Quarterback Trey Lance
Completed just 10 of 20 passes against a defense that was missing its two starting cornerbacks. He also threw a pass that was close to being picked off by Talanoa Hufanga. So Lance did not have a good day. But he had good moments and showed improvement, which is more important. Here were the good moments: a perfect 40-yard deep pass which Deebo Samuel dropped, another perfect 40-yard deep pass which drew a defensive pass interference penalty, a 20-yard completion to Aiyuk near the left sideline, an 8-yard completion to Jennings on 3rd and 6, an 8-yard completion to Juszczyk on 3rd and 3, a 15-yard completion to Juszczyk on 3rd and 2, and a 20-yard completion to Trey Sermon on 4th and 4 against an all-out blitz. This was when Lance showed growth. A few days ago, Lance was in this situation and he tried to check down to the running back but got picked off. This time, Lance threw the ball over the defender's head and hit his hot route for an easy gain of 20. Clearly Lance is a smart quarterback who learns from his mistakes. He's also innaccurate at times and tends to miss at least one open running back in the flat per day -- today he airmailed Sermon once. That's why the 49ers will call lots of runs for Lance this season. Today, they called four quarterback runs for him. He also scrambled a couple times. Don't be surprised when Kyle Shanahan calls runs on 3rd down to set up 4th and short. He did it today.
2. Wide receiver Deebo Samuel
Got three targets, dropped two passes and made no catches during team drills. One of his drops was a perfectly thrown deep pass that hit him in both hands. Another time, he ran a fade route against Deommodore Lenoir and couldn't outrun him. Samuel is a great player, but he looks 5-10 pounds overweight. Hopefully for the 49ers, he regains the fitness and drive he had last season.
3. Running back Trey Sermon
Elijah Mitchell and Jeff Wilson Jr. had the day off, so the 49ers gave Sermon 11 carries with the first-team offense and he gained just 40 yards. He also whiffed against Azeez Al-Shaair during a 1-on-1 blitz-pickup drill. Sermon seems to lack contact courage, which is a problem for an NFL running back. He also lacks explosion and speed. Good hands, though.
4. Running back Ty-Davis Price
Lost two yards running up the middle on 4th and 1. Davis-Price currently is fourth on the running-back depth chart behind Mitchell, Wilson and Sermon, but it seems the 49ers want Davis-Price to be their designated short-yardage back. He failed in that role today. Which means Deebo Samuel remains the team's best short-yardage back. He's built like one, too.
5. Guard Aaron Banks
Committed a false start on 3rd and 5. His season is going to be an adventure.
6. Center Daniel Brunskill
Gave up instant pressure which led to a 5-yard loss on a zone-read run play. The defensive player tackled the running back while he and the quarterback were making the exchange. Embarrassing.
7. Nickelback Darqueze Dennard
Gave up a touchdown catch in the end zone to Marcus Johnson, who probably won't make the team. Dennard has been the starting nickelback all offseason mostly because he's a veteran, but Womack the rookie is better than him.
8. Safety Talanoa Hufanga
Broke up a pass during 11 on 11s while playing zone coverage, which was impressive, but lost all three of his reps during 1 on 1s. He lost to Kittle, Dwelley and Troy Fumagalli, who probably won't make the team. Fumagalli caught a 20-yard pass against Hufanga. Made it look easy. Hufanga is a smart player who does lots of things well, but covering man-to-man is not one of them. He is a liability in man-to-man coverage, and every opponent will look for ways to isolate him in the pass game this season. It will be DeMeco Ryans' job to protect Hufanga as much as possible.
9. Safety Tarvarius Moore
Gave up a long catch to Kittle during 1 on 1s. Moore hasn't regained the 4.3 speed he had before his Achilles tear. He might never regain it.