There's a specific reason the 49ers re-signed River Cracraft.
It's not because he's a good wide receiver -- he caught only four passes last season.
And it's not because he has lots of talent or potential -- he was an undrafted free agent in in 2018 and already has been on three teams' rosters -- the Broncos, the Eagles and the 49ers.
The reason the 49ers re-signed Cracraft is Kyle Shanahan's ego.
It was Shanahan's ego that led the 49ers to trade up for Dante Pettis in 2018. Then it was Shanahan's ego that kept Pettis on the roster for more than two seasons even though it was clear he was bust.
Shanahan's ego seemed nervous that if the 49ers were to cut Pettis, another team would sign him, and he would turn his career around, which would make Shanahan's ego look bad.
But when it was clear that Pettis couldn't even return kickoffs for the 49ers, that he was utterly useless, Shanahan's ego finally waived him and kept Cracraft instead. And the New York Giants immediately claimed Pettis off waivers.
So Shanahan's ego has to hold onto Cracraft, at least until the Giants get rid of Pettis. Because Shanahan's ego must make sure that Cracraft catches one more pass than Pettis next season, just so Shanahan's ego can say he was right to ditch Pettis for an undrafted free agent.
That's why Cracraft ended up with five catches last season while Pettis ended up with four. And that's why Cracraft is still on the 49ers. His playing time will depend on how much the Giants use Pettis next season.
I wish I were joking.