
SANTA CLARA -- The season began with high hopes. It ended with the coaching staff receiving an invitation to the Senior Bowl.
The NFL's two worst teams with returning coaching staffs get the invites every year to coach in the top college all-star game.
“I've coached it twice,” 49ers coach Kyle Shanahan said Monday. “This will be my third time. Not proud of that.”
Stay in the game with the latest updates on your beloved Bay Area and California sports teams! Sign up here for our All Access Daily newsletter.
There wasn't much for the 49ers to be proud about in 2018. They finished with a 4-12 record. And Shanahan felt like his team underachieved to the point -- even with all the injuries-- that they could have finished with three more wins.
“I think we should have won seven, so I'm down about that,” Shanahan said. “That's what I'm upset with myself for.”
Shanahan said he believes the 49ers should have won road games against the Green Bay Packers and the Arizona Cardinals, as well as a Week 10 home meeting with the New York Giants.
The 49ers closed the season Sunday with a 48-32 loss to the NFC West rival Los Angeles Rams.
San Francisco 49ers
Find the latest San Francisco 49ers news, highlights, analysis and more with NBC Sports Bay Area and California.
When a team expects to compete for a playoff spot and ends up with the No. 2 overall draft pick, it should come as no surprise when their season-long report card looks like this:
Rushing offense
The 49ers averaged 4.5 yards per carry with Matt Breida, Alfred Morris, Jeff Wilson and Raheem Mostert each rushing for at least 260 yards. The team’s projected No. 1 back, Jerick McKinnon, sustained a season-ending knee injury one week before the start of the regular season.
The 49ers also did a commendable job on third-and-short situations, converting 19 of their 24 rushing attempts on third downs of 4-or-fewer yards. However, they weren't as successful in the red zone, and had just seven rushing touchdowns all season.
Grade: C-plus
Passing offense
The passing game had its moments. Most of them came from tight end George Kittle, who had 88 receptions for 1,377 yards to post the highest single-season receiving total of any tight end in NFL history.
But the 49ers didn't have a lot of consistency in the passing game. Nick Mullens, C.J. Beathard and Jimmy Garoppolo combined for 26 touchdown passes and 20 interceptions. The 49ers’ average of 8.0 yards per pass attempt was very good, but the QBs also were sacked 48 times.
Grade: D-plus
[RELATED: Jimmy G shares where he's at with rehab entering offseason]
Rushing defense
The 49ers had a lot of missed tackles early in the season, but they improved in that area as the season progressed. They ranked 14th in the NFL in run defense, allowing 1,814 yards and a 4.1-yard average on the ground.
Inside linebacker Fred Warner proved to be a reliable player in the middle , and Arik Armstead had a solid season as a run defender. The 49ers didn't do a good job of creating turnovers, and recovered just five of 21 fumbles they forced.
Grade: C-minus
Passing defense
All you need to know about the 49ers’ pass defense: They surrendered 35 touchdown passes and came up with just two interceptions. That’s the worst interception total for a team in NFL history, including strike-shortened seasons.
DeForest Buckner led the 49ers with 12 sacks, but the team didn't get consistent pressure from anyone else. Opposing offenses stayed away from cornerback Richard Sherman because they feasted on every other area of the 49ers’ pass defense.
Grade: F
[RELATED: Sherman believes young 49ers will learn lessons from 2018]
Special teams
Robbie Gould had a great season, hitting 33 of 34 field-goal attempts, as the 49ers’ offense often bogged down inside the red zone. Scheduled free agent Bradley Pinion also had a solid season with a net average of 39.1 yards despite having one punt blocked and another returned 56 yards.
The 49ers had difficulty on punt returns, averaging just 5.6 yards per return. Richie James supplied the highlight with a 97-yard kickoff return for a touchdown in an upset victory over the Seattle Seahawks.
Grade: C-minus
Overall
The 49ers were left severely outmanned because of a lot of injuries that impacted just about every position group on the team. They mostly were competitive, though it was clear they weren;t even close to being able to go head-to-head against the NFC West champion Rams.
Kittle and Buckner were among the bright spots, but few other players lived up to expectations. Reuben Foster was a complete disaster, and he ultimately was cut after he was arrested at the team hotel on a domestic violence charge.
Things had to go right for the 49ers to be in the playoff picture this season, and they went about as bad as possible on nearly every conceivable level.
Grade: F