The Good

Wide Receiver - The future looks bright as rookies Deebo Samuel and Jalen Hurd both had good outings. Samuel had the catch of the night, a gorgeous 45-yard catch down the sideline that he went up and snatched away from the defender. Hurd had two scores and showcased his size and toughness. Both players add a lot to this offense, most notably size and aggression. Samuel finished with 2 catches for 61 yards, 1 rush for 14 yards, and drew a 25-yard pass interference penalty. Hurd finished with 3 catches for 31 yards and scored 2 touchdowns.

Dre Greenlaw - Greenlaw could start. He looked great against the run, especially when he knifed in and buried the back for a loss. He is good in pass coverage but did bite on a play-action. That will come. He is also really good on special teams.

Defensive Line - The 49ers really have good depth on the defensive line. Jeremiah Valoaga had 2 sacks. Kentavius Street had a nice tackle for loss. Demontre Moore set the edge well and put pressure on the quarterback most of the day. Julian Taylor is a straight-up beast as he abuses offensive guards.

Positives in the young secondary - Antone Exum may have done enough already to make the squad. He had a sack and fumble, though it was wiped out by a phantom penalty and played well all night. Tim Harris Jr has really good size and aggression at corner. He was able to make a big pass break-up near the end of the game. D.J. Reed also had some nice reps. The secondary had great coverage at the end to win the game.

Special Teams - Robbie Gould is still money with a line drive 53-yard field goal. Mitch Wishnowsky is going to be a weapon. His hangtime is great and can flip the field at any time. He has all kinds of "English" on his punts and has different ones that are hard to field. Expect muffs by the receiving team this year.

Red Zone - Defensively, the 49ers stepped up and held Dallas to field goals, even with the second team against Dallas' starters. Offensively, they were able to score two touchdowns the two times they got to the red zone. That has to make Coach Shanahan happy.

The Bad

PENALTIES - It's just preseason, but this has to stop. There were times it felt one-sided as holding was not called consistently both ways, but the 49ers were definitely committing a lot of penalties. There were bad calls, but plenty of correct ones. Hopefully, this finally subsides this year.

Drops - Kendrick Bourne and Richie James had a couple of big drops, which is disappointing from two players trying to make the team. James ended up with a decent game. Bourne is a good intermediate receiver and should make the roster.

Interceptions - Both Nick Mullens and C.J. Beathard had an interception. Beathard's was worse, but they both showed why they are backup quarterbacks. Mullens does play faster, has a quicker release, and has more of a command of the offense. His arm strength may prevent him from being a starter. Beathard made some good throws, but there have to be questions about whether or not he makes the team.

Injuries - It's very disheartening to see players consistently go down with injuries. The injury to Shon Coleman was disappointing. He had a good shot at being the swing tackle and may be out long term. Raheem Mostert went out with a concussion and D.J Jones had a knee issue. We also found out about Trent Taylor had a broken pinkie toe that required surgery. He won't miss a lot of time but could be put on the PUP, opening another spot at receiver.

The Bottom Line - All in all, it was nice to see bright spots in all three phases and to see young players shine. It was also nice to see a win, even if it was a bit sloppy.