SANTA CLARA — The 49ers return to training camp Thursday after four straight grueling practices and a day off to catch their breath. Here are the top five takeaways from camp so far.

1. Jimmy Garoppolo has lots of work to do

That’s no condemnation of Garoppolo. He’s coming off a torn ACL and hasn’t played football since October. He’s supposed to be rusty. And, boy, is he.

During 11-on-11 team drills in camp, Garoppolo has completed just 24 of 48 passes – 50%. Not good. His backup, Nick Mullens, has completed 20 of 28 passes — 71%.

Mullens has the advantage because he knows the offense better than Garoppolo and practiced more than him during OTAs and minicamp. Garoppolo was rehabbing his knee. He didn’t participate in team drills.

In addition, Garoppolo’s performance in camp hasn’t been all bad. He threw a beautiful deep touchdown pass that traveled 60 yards in the air. He even ran for a 10-yard gain.

But his passes often have been late and inaccurate. He has missed short, medium and long throws. And when he misses, he usually has missed high and to the right. All clear signs he’s out of practice.

He also has predetermined his throws before the snap — a clear sign he needs to improve reading defenses. On Tuesday, Garoppolo predetermined a throw to Richie James, who was covered by Greg Mabin, a backup cornerback filling in for starter Ahkello Witherspoon.

Garoppolo dropped back, stared down James and threw him the ball, expecting him to beat Mabin. But James didn’t beat Mabin. The pass landed incomplete. Meanwhile, Trent Taylor was wide open over the middle. Garoppolo never looked at him.

Good quarterbacks don’t always decide where to throw before the play starts. Good quarterbacks go through their reads quickly and decisively. Mullens is a speed reader. Garoppolo move his lips when he reads, so to speak.

Perhaps Garoppolo will improve his speed reading with practice.

2. Garoppolo’s teammates haven’t helped him

Teammates other than George Kittle, of course. Kittle still is one of the best tight ends in the NFL. But the 49ers have struggled to establish someone other than him in the passing game.

The 49ers want Dante Pettis to be their No. 1 wide receiver. So far, Garoppolo has thrown him 11 passes in camp and Pettis has caught only four of them. After one incomplete pass, Garoppolo yelled at Pettis on the field for not fighting harder to make the catch. Pettis may be losing Garoppolo’s trust and confidence.

The 49ers’ No. 2 receiver, Marquise Goodwin, has caught just two of five passes from Garoppolo. The starting running back, Tevin Coleman, who signed a two-year, $8.5 million contract this offseason, has caught just one of six passes from Garoppolo. The second-round pick, wide receiver Deebo Samuel, has caught just one of three. And the third-round pick, wide receiver Jalen Hurd, has caught zero. Garoppolo hasn’t thrown to him yet. Although this lack of production is on the wide receivers, some of it also falls on Garoppolo. See above.

Through four practices, Garoppolo’s favorite receivers have been Trent Taylor and Jordan Matthews. Someone else must step up.

3. The defense has improved since last season

The run defense seems to have improved. The defensive ends in the “Wide 9” set the edges and prevent the running backs from finding holes outside the tackles. The interior defensive linemen push the interior offensive linemen into the backfield.

The pass rush seems to have improved, too. DeForest Buckner still is great in the middle, and now he has help on the edges from Dee Ford and Nick Bosa. Bosa in particular has played well when he’s been on the field. He even beat Joe Staley for a sack.

Finally, the pass coverage seems to have improved as well. Richard Sherman’s surgically repaired Achilles is healthier and Ahkello Witherspoon is more disciplined than a year ago. Together, they have broken up three passes.

And the defense has given up only one long pass in camp — the 60-yarder from Garoppolo to James. The next day, the 49ers demoted free safety Adrian Colbert to the second string, because he gave up the catch. This defense now has high standards.

4. Free safety could be a major weakness

As well as the starting defense has played, it hasn’t intercepted a pass yet, partially because the free safeties haven’t played well.

Colbert has made the same mistakes he made last season, meaning he has ignored the techniques the coaches have taught him. “He looked to undercut (the pass) and got caught in a bad angle,” defensive coordinator Robert Saleh said after Colbert gave up the 60-yard touchdown catch on Monday. “If he stays (on top of the receiver) in that situation, he would give himself a better chance to play the ball in the air.”

On Tuesday, Tarvarius Moore replaced Colbert as the starting free safety. Moore was a third-round pick in 2018 who played cornerback as a rookie. “He’s by no means even close to being an NFL-ready safety by Week 1,” Saleh said after Tuesday’s practice. “He’s hesitating, which is expected. He’s still new at the position. He’s got to get to the point where he’s not really thinking about his job anymore.”

The 49ers want Jimmie Ward to be the starting free safety Week 1. Ward broke his collarbone during OTAs, and recently came off the physically unable to perform list, but hasn’t practiced yet in camp. The past two seasons, he missed 16 games. If he can’t stay healthy, the 49ers may need to sign another free safety. Tre Boston and Eric Berry still are free agents.

5. A young tight end not named Kittle has emerged

His name is Ross Dwelley, and the 49ers signed him as an undrafted free agent in 2018. He played 11 games last season and caught two passes.

Dwelley went to the University of San Diego — not a football powerhouse. He’s not a physical freak. On a scale of one to 10, he’s probably a seven in terms of raw talent. But he knows how to get open and he makes catches. He beat Colbert for a 15-yard catch near the sideline Tuesday.

“(Dwelley) is light years ahead of where he was his rookie year,” Kittle said. “He does a lot of things similar to me. He’s consistent and hungry for opportunities. I didn’t do the last two minicamp practices, and he (started and) thrived during those. That’s what everyone wants to see. He’s going to make a big push during the preseason.”

Dwelley currently is the No. 2 tight end on the depth chart, because last season’s No. 2 tight end, veteran Garrett Celek, is recovering from back surgery. Celek probably will miss the first six games. When he returns, he may not get his job back if Dwelley continues to impress.