The San Francisco 49ers were back on the field Thursday for the team's 12th training camp session, a joint practice with the Denver Broncos at the SAP Performance Facility. The day also marked "87 Day," the annual celebration honoring 49ers legend Dwight Clark, whose iconic jersey number was 87. Coaches, staff, and players wore special shirts and hats to honor Clark's legacy and raise awareness for ALS, the disease Clark was diagnosed with in 2017 before his passing in 2018.
The practice brought a mix of spirited competition, familiar faces returning to The Bay in Broncos uniforms, and notable performances on both sides of the ball.
Key Takeaways from Day 12
Roster Move:
- The 49ers released CB Eli Apple and signed DL Michael Dwumfour ahead of practice.
Injury Updates:
- Players Back: DL Nick Bosa returned after missing three practices, and FB Kyle Juszczyk rejoined the offense.
- DL Mykel Williams is believed to have suffered a hyperextension of his left knee. Early indications suggest he'll miss about a week, sidelining him for the preseason opener.
- The following players did not practice: CB Renardo Green (hamstring), WR Jauan Jennings (calf), WR Jacob Cowing (hamstring), S Ji'Ayir Brown (ankle), RB Isaac Guerendo (shoulder), DL Evan Anderson (knee bruise), DL Kevin Givens (pectoral), DL Sam Okuayinonu (groin), RB Jordan James (broken finger), DL Jordan Elliott (back).
- CB Darrell Luter Jr. and S Marques Sigle were evaluated for concussions during practice but were later cleared.
Practice Notes:
- Offense: In red zone drills, QB Brock Purdy threw a perfect touchdown pass to WR Ricky Pearsall despite tight coverage from rookie DB Jahdae Barron. Later in practice, Purdy threw a touchdown strike to WR Demarcus Robinson against Broncos CB Riley Moss. Wide receivers Jordan Watkins and Robbie Chosen also recorded notable gains.
- Purdy on the day: "I think they came out ready to roll, to compete. You could feel them... But at the same time, it's not like we weren't competing at all. We are. And there are things that we need to get better at, that's why we're practicing. But I also do think it was nice to have a long practice like that so that we practice, we get fatigued. That's going to happen in games. You're not going to have a great first half, but you regroup, and then how are you going to finish? I thought we had a good second half of the practice and faced some adversity as an offense and then bouncing back and having some good periods at the end. So, I thought it was good for us. We need that kind of stuff to understand where we're at and where we need to get better and learn from it and understand that football's not going to be perfect, but how are you going to respond?"
- Defense: Bosa made an immediate impact, disrupting plays and stalling Denver's offense. D-linemen C.J. West and Bryce Huff each recorded sacks on QB Bo Nix. Linebacker Fred Warner made his presence known and Dee Winters was active in coverage, forcing an incompletion and batting down a pass. CB Dallis Flowers also notched a pass breakup.
- Warner on the day: "We competed hard... We have a lot of young guys, new guys out there, and a lot of open competition going on. It's good to have another team come in to kind of see where your team's at. You obviously don't get a good idea, it's not fully football when you're not taking guys to the ground, but I think we we competed well today."
- Special Teams: Kicker Jake Moody went a perfect 7-for-7 on field goals, including one from beyond 50 yards. WR Junior Bergen, WR Jordan Watkins, and RB Ameer Abdullah rotated in at punt returner.
What's Next
The 49ers will hold a private team walk-through on Friday before facing the Broncos in their preseason opener at Levi's® Stadium on Saturday at 5:30 p.m. PT. Next week, the team will travel to Las Vegas for another joint practice session with the Raiders ahead of Preseason Game 2 at Allegiant Stadium.
View some of the best photos of the 49ers joint practices with the Denver Broncos.

FB Kyle Juszczyk

QB Brock Purdy

LB Fred Warner

San Francisco 49ers Defense

WR Jordan Watkins

LB Fred Warner

RB Christian McCaffrey

DL Nick Bosa

LB Fred Warner, LB Curtis Robinson

CB Upton Stout

QB Brock Purdy

DE Bradlee Anae

DL Bruce Hector

WR Jordan Watkins

S Richie Grant, DB Deommodore Lenoir

OT Isaiah Prince

FB Kyle Juszczyk

San Francisco 49ers Special Teams

CB Dallis Flowers

P Thomas Morstead

WR Terique Owens

WR Demarcus Robinson

WR Jordan Watkins

TE George Kittle

RB Christian McCaffrey

T Trent Williams

Defensive line coach Kris Kocurek

S Jason Pinnock

CB Dallis Flowers

LB Fred Warner

CB Upton Stout

San Francisco 49ers Defense

QB Carter Bradley

DL Alfred Collins

S Jason Pinnock

OL Drake Nugent , OL Jake Brendel

T Trent Williams

DL Nick Bosa

QB Brock Purdy

OL Drake Nugent

LB Luke Gifford

S Jason Pinnock

LB Tatum Bethune, LB Dee Winters