Here's what stood out during Day 5 of the 49ers training camp. Keep in mind, the players still haven't put on pads yet. The first day in pads will be Tuesday.
1. The red zone offense.
The 49ers practiced in the red zone for the first time this offseason, which means they installed some of their red zone offense. And it's clear a significant portion of it will feature rookie quarterback Trey Lance whether he's the starting quarterback or not. Head coach Kyle Shanahan called two runs for Lance in the red zone, and on the second one Lance scored a touchdown. Using Lance as a red-zone quarterback will be a good way to get him on the field if he's not the starting quarterback Week 1.
2. Tight end Ross Dwelley.
Caught two long passes up the seam. On one of them, Dwelley beat All Pro linebacker Fred Warner. Dwelley has six catches in training camp, while starting tight end George Kittle, who gets paid like a top-level wide receiver, has only two catches. More on Kittle below. He better watch out before he becomes the next Wally Pip. Shanahan said Dwelley has the best hands on the team.
3. Defensive tackle Javon Kinlaw.
Participated in 11-on-11 team drills for the first time in camp, which means he's finally healthy.
4. Defensive end Dee Ford.
Also participated in 11 on 11s for the first time in camp, which is good. Also immediately committed two offside penalties, which is bad but not surprising for Ford, who infamously jumped offside to negate a gamewinning interception in the AFC championship against the Patriots when he was on the Chiefs.
5. Wide receiver Jalen Hurd.
Returned to practice after missing the previous two. Stretched with the team but did not participate in 11 on 11s. Hurd may never actually compete again, but he sure can stretch.
6. Linebacker Fred Warner.
Made a leaping, spinning interception in the red zone while covering Ross Dwelley, the best player in the league.
7. Linebacker Justin Hilliard.
Nearly intercepted Josh Rosen during 11 on 11s, then intercepted Lance a few plays later. Hilliard seems to be the 49ers' best undrafted free agent this year.
8. Cornerback Jason Verrett.
Nearly intercepted a poorly-thrown pass in the end zone by Jimmy Garoppolo. Verrett gets his hands on so many of Garoppolo's passes, you could almost consider Verrett the 49ers No. 3 receiver.
9. Cornerback Ambry Thomas.
Took reps with the starters because Tim Harris Jr. is injured, and gave up zero catches. Also saw zero targets. Good day for the rookie.
10. Wide receiver Richie James Jr.
Beat Jimmie Ward for a touchdown during 1 on 1s, and then beat Verrett for a touchdown during 11 on 11s. Ward and Verrett are the two best players in the 49ers secondary. Great day for James.
11. Wide receiver Kevin White.
Caught two short passes, and one of them was a touchdown pass from Garoppolo in the red zone. White has been making positive strides all offseason.
THE NOT SO GOOD
1. Tight end George Kittle.
Caught zero passes yet again. Has hauled in just two catches through five days of camp, which is strange, considering the 49ers are paying him to produce like a No. 1 wide receiver. Instead, they're using him as a blocker and a decoy while they call passes for Brandon Aiyuk, Deebo Samuel and Ross Dwelley. Kittle is the most expensive decoy in the league right now. He should probably catch some passes soon.
2. Defensive end Nick Bosa.
Still hasn't competed or participated in any physical contact. He warms up, then keeps warming up while the rest of the team practices. He probably should practice too one of these days. He's rather important.
3. Defensive end Samson Ebukam.
Missed practice with sore legs the day after an offday. Hmmm.
4. Running back JaMycal Hasty.
Fumbled for the first time in training camp.
5. Running back Trey Sermon.
Fumbled for the second time in training camp.
6. Wide receiver Travis Benjamin.
Keeps trying to catch passes with his chest plate. Someone needs to tell this guy to use his hands. It's football, not soccer. Come on, bud.