The team announced the transaction Monday.
ESPN's Chris Mortensen said Sunday that "most league insiders believe if there's a better option, the 49ers will have somebody other than Garoppolo" under center next season.
Rosen, who spent the first three years of his NFL career with three different teams between the 49ers, Arizona Cardinals (2018) and Miami Dolphins (2019), was signed to the 49ers' active roster on Dec. 23. The Torrance, California, native did not appear for San Francisco this season.
Longtime backup Nick Mullens, who started eight games for the team this season amid Garoppolo's ankle injuries, is a restricted free agent, and C.J. Beathard, who made two starts, is also on the market.
In the first two years of his career, Rosen made 20 appearances and 16 starts, the bulk of which came when he was installed as the starter for the Cardinals as a rookie. The No. 10 overall draft pick threw for 2,278 yards and 11 touchdowns with 14 interceptions that season.
Garoppolo has been a solid option for the 49ers since he was traded to the team from New England in the middle of the 2017 season, with a 22-8 record and an NFC championship, but injuries have limited him from pushing the franchise to become a perennial contender. The 29-year-old was limited to six starts last season, completing 67.1 percent of his passes for 1,096 yards, seven touchdowns and five interceptions.
While Rosen isn't an ideal option to lead a team that has a roster that is ready to win now, the 49ers may have other options in the quarterback market if they elect to move on from Garoppolo. And if they stick with him, Rosen provides depth at the position in a system that needs it.