He's fine but he's not someone you lock up long term. At this point last year, there was talk of not tendering him a contract when he was slashing .207/.294/.344 in 340 PA. He's not close to being that bad this year. Of course, if he goes on another Mr. Hyde run, he could finish the season there but I don't see it. He's actually been remarkably consistent in some ways, despite being the most hot/cold hitter for long period of stretches I have ever seen.
2017: .245/.323/.402 in 542 PA, OPS+ 89
2018: .234/.314/.403 in 535 PA, OPS+ 91
2019: .231/.329/.403 in 377 PA, OPS+ 90
2013-2016: .237/.316/.409 in 1421 PA, OPS+ 94
2017-2019: .237/.321/.403 in 1453 PA, OPS+ 90
Career average: .237/.319/.406 in 2874 PA, OPS+ 92.
It's funny how even 2013-2016 works out to the same numbers, given the much bigger swings in performance.
2013-2014: .196/.268/.280 in 530 PA, OPS+ 53
2015-2016: .262/.345/.489 in 891 PA, OPS+ 118
I'd let him walk after next year. I don't want to pay for him at 31+. I'm not even sure he's the best use of $10 mil for next year since the Sox can somewhat replace his defense internally and there's no reason to replace his bat. They could go with Betts/Benny/Chavis in the OF and look for a 1b but 'm not sure JBJ would get much return in a trade and I can't see the Sox non-tendering him.
edit: He's basically a GG galiber CF with league average hitting at 10 mil for a year. Maybe they actually could get a return. I dunno. He just has less value to the Sox than other teams because of the Bets/Benny dynamic, at least imo.