SANTA CLARA -- Here's who stood out on the final day of 49ers training camp 2023.

THE GOOD 

1. WR Ronnie Bell.

Played exclusively with the starters for the first time this offseason, and caught two passes, carried the ball once on a jet sweep and even completed a pass downfield to Chris Conley after catching a backward swing pass from Brock Purdy. It seems like Bell is rapidly climbing the 49ers' depth chart and even could take snaps away from Jauan Jennings (more on him in a minute), because there's more the 49ers can do with Bell. He's a gadget player who can catch, run and throw, as opposed to Jennings, who's essentially a skinny tight end.

2. RB Ty Davis-Price.

Took most of the reps with the first-string offense because Christian McCaffrey and Elijah Mitchell had the day off. Which means Davis-Price seems to be firmly ahead of Jordan Mason on the depth chart. Davis-Price is a good fit for an undercenter run game that looks to attack the edges of the field, while Mason is a better fit for a shotgun run game that looks to attack between the tackles.

3. TE Brayden Willis.

Caught a 25-yard pass near the sideline from Brandon Allen on 3rd and 5. Willis has been the 49ers' most productive tight end in training camp. He absolutely deserves a spot on the 53-man roster.

4. CB Tre Swilling.

Broke up a pass from Sam Darnold the day after intercepting him. Swilling probably won't make the 53-man roster initially, but he could go to the practice squad and get called up midseason. He played well in camp.

THE NOT SO GOOD

1. WR Jauan Jennings.

Caught two of four targets and dropped one. This could be Jennings' final season on the team, and it seems like he could lose playing time to rookie Ronnie Bell, because Bell can play all three wide receiver positions and all three downs, while Jennings is a third-down slot specialist.

2. SS Ji'Ayir Brown.

Recorded a tackle in the backfield, but also gave up a 30-yard catch to George Kittle. Brown hasn't stood out in coverage during camp except for when he has gotten beat.

More must-reads:

TODAY'S BEST
Mavericks advance to Western Conference Finals aided by controversial call late
Connor McDavid, Oilers hammer Canucks to force Game 7
Tyson Fury-Oleksandr Usyk epic increases excitement for potential rematch
Seize the Grey wins in muddy Preakness
Even Mike Budenholzer admits the Suns need a point guard
Watch: Juan Soto's first multi-homer game as a Yankee
Xander Schauffele, Collin Morikawa lead at PGA Championship
Knicks could get major boost for Game 7 showdown with Pacers
Giants All-Star pitcher suffers setback in recovery from injury
Panthers star named winner of 2024 Selke Trophy
WNBA to investigate $100,000 sponsorship deals for Aces players
Tiger Woods blames one big factor for missing the cut at PGA Championship
'Ain't good enough': Draymond Green claims Celtics must 'win it all' or it's a 'failure'
Blue Jays GM wants struggling club to feel 'massive sense of urgency'
Raptors expected to flip former NBA champion during the offseason
MLB insider reveals Mets' massive extension offer that Pete Alonso turned down
Celtics legend provides update after gruesome finger injury
Bulls hire former NBA head coach as top assistant
Chiefs move on from young running back
20-year MLB veteran working out, unsure about playing future