booker-gordon-getty.png
Getty Images

NBA free agency is one of the most anticipated events on the league's calendar, yet in only a single weekend, it's all but concluded. Oh, the league still has plenty of business left to conduct this offseason (we're looking at you, Damian Lillard), but in just three days, most of the league's major free agents have already inked new deals. Whether it's the result of tampering or the desperation that tends to arise out of limited supply meeting unlimited demand, the meaningful portion of free agency usually concludes within a few days.

It certainly has this year. There are still rotation players available on the fringes, but we now have a general sense of how most of the NBA's 30 teams will look next season. So with that in mind, let's grade all 30 NBA teams on how they've done so far in free agency. For the sake of fairness, we are treating "free agency" as all moves made between Friday, June 23 and Sunday, July 2, as most post-draft moves complement a team's free agency ambitions. Also, keep in mind that we are grading based on what was realistically available to each team. The standard is higher for those with max cap space than those that were working with only minimum salary slots. Let's get rolling.

Atlanta Hawks: B+

Atlanta has been relatively quiet on the free agent front, but they've made a few clever trades in the post-draft period. Getting off the ugly John Collins contract without taking on long-term money is a major win. Not only does it save the Hawks money, but it opens up more playing time for the ascending Onyeka Okongwu. On Saturday, the Hawks took on former Rockets first-round picks Usman Garuba and TyTy Washington in a cap dump. If you liked those players before the draft, you should still like them now. The Rockets were an unusually dysfunctional environment for young players, and now the Hawks should provide a more stable environment. They didn't drastically improve their team, but the Hawks made some smart moves on the margins that could pay major dividends.

Boston Celtics: Incomplete

For now, we can't properly grade the Celtics. We need to see how the Grant Williams situation resolves itself, as Boston's only other move of note was the signing of Oshae Brisset (a stealthily interesting possible replacement for Williams). Boston's current front-court consists of Kristaps Porzingis and Robert Williams III, who are frequently injured, and Al Horford, who is 37 years old. Boston needs to either retain Williams as insurance or turn him into value in some other way in a sign-and-trade.

Brooklyn Nets: B

The Nets had two primary goals coming into free agency: duck the luxury tax and retain Cam Johnson. They've now seemingly done both. They pawned Joe Harris off on Detroit to clear the money needed to retain Johnson below the cap line, and while their shooting surplus is now gone with Seth Curry in Dallas, the Nets have kept all of the most important players from last season's blockbusters: Johnson, Mikal Bridges, Spencer Dinwiddie and Dorian Finney-Smith. They will all likely start alongside Nic Claxton, and the Nets can move forward from there. They are still a big move away from any meaningful postseason ambition, but these were important steps for Brooklyn as they pick up the pieces of the team that Kevin Durant and Kyrie Irving shattered. Lonnie Walker and Dennis Smith Jr. were nice cherries on top of a solid offseason.

Charlotte Hornets: C

The Hornets are a borderline incomplete, as the fate of P.J. Washington will have a strong impact on their final grade. However, we have to knock the Hornets for letting Smith Jr. walk, as he had grown into an excellent defender and solid backup point guard. Bringing back Miles Bridges on the one-year qualifying offer was probably the best realistic outcome for Charlotte. While many would have simply let him go entirely, the Hornets had signaled for months that they planned to have Bridges back in some form or another, so only committing to him for one year made more sense than giving him a long-term deal.

Chicago Bulls: D

The only thing saving the Bulls from an "F" was the quietly valuable signing of Jevon Carter for $20 million over three years. Carter is an underrated offensive player that can fill either guard spot and plays tough defense. Otherwise? This offseason has shown a startling lack of self-awareness on Chicago's part. They're coming off of a sub-.500 season. Lonzo Ball may never be healthy enough to play for them again. Zach LaVine has health concerns as well. Nikola Vucevic is 32 and DeMar DeRozan is about to turn 34. No front office genuinely interested in competing for championships would run it back with this team, but no sane observer would accuse the Bulls of having championship ambitions. Chicago has spent the better part of the post-Jordan era proving that its goal is to make the playoffs and duck the luxury tax. That is the only way to justify the three-year, $60 million pact given to Vucevic. General manager Arturas Karnisovas raised eyebrows when he was asked about the disastrous Vucevic trade and declared that he "thought that deal worked out pretty well for us," but if the goal was always to sustain mediocrity, he's technically not wrong.

Cleveland Cavaliers: A

Cleveland's goal this offseason was to come away with one viable wing to pair with their two star guards and their two star bigs. They ultimately landed two. Neither Georges Niang or Max Strus are especially strong defenders, but both will work wonders on an offense that took the seventh-fewest 3-pointers in the NBA last season. Besides, having Evan Mobley available to guard virtually any position makes it far easier to get away with questionable wing defense, and Isaac Okoro is still around as a defensive specialist when needed. Strus and Niang likely would have provided enough spacing for the Cavs to beat the Knicks, and now, they'll be around to help what should be an even better Cavaliers team this season. Caris LeVert was overpaid slightly at $16 million per year. It's hard to justify money beyond the mid-level exception for players who don't shoot or defend, but on only a two-year deal, he's extremely tradable and his contract will come off of the books right as Mobley's rookie extension kicks in. That's clever asset management for the Cavs in another stellar offseason.

Dallas Mavericks: B

For all of the consternation about Kyrie Irving's limited free-agent market, convincing him to re-sign for only three years was a win. Remember, this is Kyrie Irving we're talking about. He asked out of Brooklyn over failed extension negotiations. He is volatile and this could have gone south in any number of unpredictable ways. Bringing back Seth Curry on the Bi-Annual Exception was a stroke of genius, provided he can stay healthy. By securing a designated shooter for under $5 million, they've made the $17 million salary of Tim Hardaway Jr. expendable in a trade. They should be able to package it with their last remaining tradable first-round pick to get the defensive upgrade they've been looking for. The Dante Exum signing was a nice low-risk, high-reward swing on a former high draft pick that has been thriving abroad. They still have the majority of their non-taxpayer mid-level exception available as well, so there could be another notable signing coming. The Mavericks still have work to do this offseason, but the moves they've made have largely been successful.

Denver Nuggets: D

There was nothing the Nuggets could have done to keep Bruce Brown. Even if they'd dumped Kentavious Caldwell-Pope to open up the non-taxpayer mid-level exception, they still would've come $10 million short annually compared to where Indiana ultimately landed. The Nuggets can't be blamed for losing Brown. It was a CBA reality. But everything else? That's on Denver. A two-year, $10 million contract for Reggie Jackson might seem relatively harmless, but it was quietly among the more inexplicable deals handed out in free agency. The Nuggets had one tool to pay a free agent above the minimum: the taxpayer mid-level exception. They used it on Jackson, a player they barely used in the playoffs. It's the sort of contract that makes you wonder if there was a wink-wink agreement after Jackson went to Denver following his mid-season buyout. Justin Holiday was the only veteran Denver signed with any hope of cracking the playoff rotation, and his odds are relatively slim. Any hope the Nuggets had of luring ring-chasers this summer seems to have been misplaced, and with the new CBA restricting their access to buyout players, the Nuggets probably aren't getting anyone else of note for the 2024 title defense.

Detroit Pistons: C-

Troy Weaver is among the NBA's best scouts, but he's also among its strangest cap managers. The Pistons make at least one inexplicable financial decision every offseason, and this summer, it was the choice to use all of their cap space absorbing the contracts of Monte Morris and Joe Harris. They desperately needed shooting, so even if Harris is overpaid, his presence adds value. Morris is among the NBA's best backup point guards. But Detroit already has Cade Cunningham, Jaden Ivey, Ausar Thompson and Killian Hayes eating up perimeter minutes. They've simultaneously created an entirely separate timeline of veteran perimeter players in Morris (28), Harris (31), Alec Burks (31) and Bojan Bogdanovic (34). They simply can't find minutes for all of these players and their cadre of young big men. Their cap space should have gone to finding a long-term small forward. Perhaps it will next summer. For now, the Pistons are going to struggle to balance their veterans and their youngsters.

Golden State Warriors: C+

Once the Warriors traded Jordan Poole, it became clear that they had one major priority this offseason: find a way to retain Draymond Green. They not only did so, but brought him back at a 2023-24 salary roughly $5.3 million below his initial player option. With luxury taxes factored in, this will save the Warriors an estimated $43 million. Of course, the Warriors are paying for that on the back end of this deal. After weeks of rumors about Green taking a three-year deal to align his contract with Stephen Curry's, he ultimately got a fourth year on his $100 million deal. That final season could look ugly, and with no major ring-chasing additions for minimum salaries in free agency, the Warriors haven't quite reestablished themselves among the Western Conference elite.

Houston Rockets: B

As far as the actual player additions go, Houston did an excellent job. Fred VanVleet is the perfect point guard for this roster, an adult who can actually organize an offense, but a flexible veteran far more comfortable scaling down in usage when necessary than James Harden would've been. Jock Landale is a solid backup center. Dillon Brooks brings badly needed defense. Most of the contracts were good too. Landale got a four-year, $32 million pact... but only the first season is guaranteed. VanVleet got $130 million over three years, but the third season is a team-option. This kind of flexibility is critical for a young team that will need to pay its recent draft picks soon, but the Brooks contract knocks the Rockets down from an "A" to a "B." Who on Earth was come close the fully guaranteed $80 million Houston gave Brooks? His own team didn't even want him back. Yes, Brooks made All-Defense last season, but he was completely ignored by the Lakers as a shooter in the first round. That sort of player is available for much, much cheaper. The Suns brought back Josh Okogie for the minimum. Why not give him a sizable one-year deal to play the same role? Or trade for Delon Wright? Perimeter defensive specialists are not $20 million players. Brooks has to rediscover his offensive touch to justify this contract, and that's far from a guarantee.

Indiana Pacers: A

Indiana handled the Bruce Brown situation flawlessly. They used their pile of cap space to throw an enormous first-year salary at his way, preventing other teams from matching their raw price, but they only guaranteed the first year of the deal. Now, if the championship shine wears off of Brown, or if he gets hurt, or if they simply have other priorities, they can either let him go or, more likely, re-sign him at a more palatable long-term number next summer. They went on to steal Obi Toppin from the Knicks for two second-round picks. Toppin played only 14.7 minutes per game in three seasons in New York, but he clearly had more to give than Tom Thibodeau allowed him to show. In 15 starts across those three years, he averaged 20.6 points per game. Tyrese Haliburton is the perfect point guard for him. They'll be among the NBA's best transition duos and Haliburton will throw him plenty of lobs. Giving up on Chris Duarte just two years after picking him in the first round is a disappointment, but the Pacers were loaded with offensive guards. Here, they get their defender and their power forward of the future with no long-term commitment.

Los Angeles Clippers: Incomplete

The Clippers have thus far signed only a single player: Russell Westbrook. Until we know if they land James Harden or Damian Lillard, their grade can only be considered incomplete. Still, it would be nice to see if they could re-sign Mason Plumlee. They'll need a backup center no matter what. Letting Eric Gordon go made sense financially. It saved them $110 million with luxury taxes included. But in pure basketball terms, it was a bad decision. Gordon can still play, and now he'll help the Suns try to beat them next season.The Clippers gained nothing but cash for that decision. It seems even Steve Ballmer is afraid of the new CBA.

Los Angeles Lakers: B+

The Laker offseason really needs to be examined in two components. Let's start with the "run it back" side of the equation. Getting Austin Reaves back for $56 million is an enormous victory when his max, via an outside offer sheet, would've been $102 million. Paying Rui Hachimura $51 million over three years, however, is a more questionable decision. That contract is likely based on a career 34.7% 3-point shooter hitting 48.7% of his looks in the playoffs. If he comes down to Earth next season, that contract has dangerous potential. And then there's D'Angelo Russell. On the surface, $37 million over two years is a fair price for a regular-season innings eater. What matters here is the player-option on the deal. In the old CBA, such an arrangement would have allowed Russell the right to veto any offer. The new CBA allows teams and players to waive that right upon the signing of the deal. We don't know yet whether or not the Lakers and Russell have agreed to this. If they have? It's a great deal, as it gives the Lakers significantly more in-season flexibility for moves. If they didn't? Things look far murkier.

And then there are the players the Lakers actually added. Gabe Vincent, Taurean Prince, Jaxson Hayes, Cam Reddish and another big to be named later are in. Dennis Schroder, Malik Beasley, Lonnie Walker, Troy Brown Jr. and possibly Wenyen Gabriel are out. Are the players in that first sentence better than the ones in that second? Probably, yea. Vincent is younger than Schroder and ascending. The Lakers replaced small guards with badly needed wing size. But the reality of a team with the ambitions the Lakers have is that what matters is beating the Nuggets. The Lakers trusted four players in the Western Conference Finals. All four of them are back, but did they add anyone else who can survive against Denver? That's unclear. Vincent, despite an excellent Eastern Conference playoff run, struggled in the Finals. Nobody else has meaningful playoff experience. The Lakers are better, but they likely haven't closed the gap between themselves and the Nuggets. Of course, as Rob Pelinka showed last February, he's more than capable of reshaping his roster on the fly. Just because the Lakers aren't there yet doesn't mean they can't get there with time.

Memphis Grizzlies: C

The Grizzlies made their big move before the draft when they landed Marcus Smart. The expectation was that they would lose Dillon Brooks, and that ultimately came to pass. Memphis has enough young talent in the pipeline to avoid major free-agent expenditures. Still, it might've been nice for them to target guards that actually played well last season with Ja Morant set to miss 25 games. Derrick Rose and Patty Mills might both be positive locker room influences on Morant, but neither played effectively last season. That puts a big burden on Smart and Desmond Bane to keep the Grizzlies afloat with Morant out. 

Miami Heat: A

The free agency period has been relatively standard Heat fare. Vincent and Max Strus both took the typical Heat free agent path from unheralded prospect to rich deals with other teams. That rarely bothers Miami because the Heat are so good at developing replacements. They won't be graded on their up-and-coming G-Leaguers, but bringing back Josh Richardson, the player good enough to be traded for Jimmy Butler in 2019, was an incredible bit of business. Thomas Bryant struggled in Denver, but thrives offensively when paired with playmakers on the perimeter. Dumping Victor Oladipo will help out with their luxury tax situation. Most importantly, Damian Lillard has finally made it clear that he wants to join the Heat. At the end of the day, that is more important than any signing this weekend. That doesn't guarantee a trade, but it puts Miami firmly in the driver's seat.

Milwaukee Bucks: B-

The Bucks needed to re-sign Brook Lopez and Khris Middleton to remain in championship contention. They had no way of replacing either under CBA rules. They were fortunately able to keep both, and managed to do so on shorter deals than they likely expected. But the Bucks ultimately lost a fair bit of depth in free agency with Joe Ingles and Jevon Carter bolting. With only the minimum to work with, their options for filling out the rest of the roster are pretty limited. Milwaukee is still in the hunt, but it will have to get creative the rest of the way.

Minnesota Timberwolves: C-

Minnesota's flexibility was limited this offseason after acquiring Rudy Gobert last summer, but the decision to waive Taurean Prince in order to duck the luxury tax was disappointing. Their loss was the Lakers' gain, but they could have ducked the tax by simply not signing Shake Milton and Troy Brown Jr. with their mid-level exception. They already had better versions of those players on their roster in the form of Jordan McLaughlin and Nickeil Alexander-Walker anyway. 

New Orleans Pelicans: B

No major additions for New Orleans, but they handled the Herb Jones situation well. He had a team option for pennies on the dollar, but by declining that option, the Pelicans made him a restricted free agent. Had his deal simply expired next offseason, he would have been unrestricted. The restrictions that come with restricted free agency allowed the Pelicans to sign Jones to a four-year, $56 million deal, a fair price for one of the NBA's best defenders. Jones is better on defense than Dillon Brooks and will make only around 70% as much over the next four seasons.

New York Knicks: B-

The decision to trade Toppin was disappointing, but inevitable. Tom Thibodeau was never going to play him enough to justify a contract extension, and short of a Julius Randle trade, he was never going to have a chance at a starting job. The Knicks made the best of a bad situation by turning the savings of the Toppin deal into the flexibility they needed to sign Donte DiVincenzo while staying below the luxury tax. The Knicks desperately needed more shooting and playmaking against Cleveland and Miami in the playoffs, and signing DiVincenzo will give them more room to experiment with smaller lineups. That DIVincenzo won a national championship in college with Jalen Brunson and Josh Hart is a nice bonus. There are far worse cultures to emulate than the one Jay Wright built at Villanova.

Oklahoma City Thunder: B+

The Thunder took their standard approach to cap space this summer: they used it to help other teams escape mistakes... for a price. Two second-round picks for Victor Oladipo was a nice price, and they'd already used space to absorb Davis Bertans in their draft night move for Cason Wallace. The real upside swing here is the long-awaited addition of Vasilije Micić, a former EuroLeague MVP and arguably the best player outside of the United States not named Victor Wembanyama of the past several years. The Serbian guard gives Oklahoma City yet another dynamic ball-handler, and at $23.5 million over three years, the cost of bringing him in was minimal.

Orlando Magic: C

The Magic had a chance to add a foundational player this offseason, but instead devoted the bulk of their cap space to Joe Ingles and retaining Mo Wagner. Those aren't necessarily bad moves. The Magic needed more shooting, and they don't need to rush their additions as Paolo Banchero, Franz Wagner and Jalen Suggs will all still be under rookie deals next summer, giving them at least one more year with a pathway to significant cap space. Still, it's hard to grade the Magic above average when they added no notable long-term pieces in free agency.

Philadelphia 76ers: Incomplete

The Sixers let Georges Niang and Jalen McDaniels walk in order to retain as much possible flexibility with both a James Harden trade and a Damian Lillard pursuit on the horizon. Only time will tell if those decisions were the correct ones. For now, they still need to re-sign backup center Paul Reed, but Patrick Beverley should provide solid 3-and-D depth off the bench.

Phoenix Suns: A

The Suns only had minimum contracts to work with, but they certainly made the most of them. Nabbing Eric Gordon as their likely fifth starter was a home run, and an ironic one at that, as 11 years ago, Gordon signed an offer sheet with the Suns and publicly begged the Pelicans not to match it. They did not oblige, but over a decade later, Gordon gets his wish. Yuta Watanabe is probably going to regress somewhat as a 3-point shooter, but his size and hustle fit just about anywhere. Josh Okogie is back to serve as the defensive stopper when necessary. All told, the Suns did about as well as anyone could have reasonably hoped for given the resources at their disposal.

Portland Trail Blazers: C

Thus far, the Blazers appear to be handling the Damian Lillard trade request correctly. They are shopping him around the league rather than acquiescing to his desire to play for the Miami Heat. The decision to move him rather than fight back against his request will ultimately prove beneficial. The assets they get for him will eventually help launch the Scoot Henderson-led version of this team into contention a few years from now. But why on Earth did Portland re-sign Jerami Grant for $160 million if they knew losing Lillard was a possibility? Yes, the cap is rising... but $32 million for a 34-year-old Grant five years from now is still likely going to be a big overpay. Portland should look to flip that contract sooner rather than later.

Sacramento Kings: D+

When the Kings gave away the No. 24 overall pick just to dump Richaun Holmes, visions of Draymond Green or Kyle Kuzma started to look somewhat realistic. Instead? The Kings ran it back. They re-signed Harrison Barnes and Trey Lyles and used the bulk of their remaining cap space to renegotiate-and-extend Domantas Sabonis. The only significant outside additions for the Kings this summer were Chris Duarte and EuroLeague MVP Sasha Vezenkov. They'll help, but the reality facing the Kings was that a) they gave away a meaningful asset to create cap space and b) with a new Sabonis deal coming, this was their last real opportunity to actually use it. The opportunity cost of running it back and adding Duarte and Vezenkov was the chance to add a long-term difference-maker, and if the Kings were going to use their cap space to extend Sabonis, they should have at least gotten a bit of a discount. They did him a solid by paying him early, but they still certainly paid sticker price.

San Antonio Spurs: C

Free agency has thus far been pretty uneventful for the Spurs. They re-signed Tre Jones and absorbed the contracts of Cedi Osman and Lamar Stevens to help Cleveland get Max Strus. They still have some flexibility to pursue one of the remaining restricted free agents, and they've been linked to Grant Williams, but for now, the Spurs did no real long-term good or harm in free agency.

Toronto Raptors: F

You'd think the Raptors would have learned their lesson when they turned down a number of strong offers for Kyle Lowry at the 2021 trade deadline only to be forced into a Precious Achiuwa and Goran Dragic swap a few months later. Nope. The Raptors again turned down strong offers for their starting point guard at the deadline, bu this time, they lost Fred VanVleet for nothing. Though the following losses were obviously far more defensible in context, it's worth noting that the Raptors also lost Kawhi Leonard, Danny Green, Marc Gasol and Serge Ibaka for nothing. For all the Raptors do well as a franchise, they've really struggled with asset management lately. Case in point: they gave away their top-6 protected 2024 first-round pick for Jakob Poeltl at the deadline. That not only forced them to pay him $80 million this offseason, but deprived them of the opportunity to pivot into a rebuild after losing VanVleet. Dennis Schroder was great value for the minimum last season, but for the mid-level exception, it's hard to get too excited about a point guard who will be 30 on opening night and has an inconsistent jumper.

Utah Jazz: C-

Utah, like the Kings, had a chance to use cap space to make significant upgrades this offseason. They were slightly more aggressive about it as they landed John Collins, but his fit in Utah is questionable. The Jazz lacked a traditional pick-and-roll screener at the big positions, but his 3-point shot has declined considerably due to a finger injury. If he doesn't bounce back, the three years remaining on his contract could get ugly. Jordan Clarkson earning $55 million over three years in an extension isn't terrible in a vacuum, but the Jazz have a number of younger guards who could have used those minutes. Can they find playing time for Clarkson, Talen Horton-Tucker, Ochai Agbaji, Keyonte George and Collin Sexton? Will Collins take minutes away from No. 9 overall pick Taylor Hendricks for that matter? Utah was already too good to expect to tank, but they absorbed a fair bit of long-term money for players who might not be long-term fits.

Washington Wizards: C+

Keeping Kyle Kuzma was a surprise, but probably a good one. He's entering his age-28 season, so a $25.5 million per year contract would seem to be extremely tradable if necessary. Of course, the Wizards are still in the earliest stages of a rebuild, so there's no need to force the issue without knowing what's to come. Ultimately, retaining prime assets that can help you win later but won't ultimately interfere with any tanking plans is rarely a bad thing, and if necessary, there's never a shortage of teams looking to trade for forwards. Moving Monte Morris was probably a necessity given their backcourt glut. Now Kuzma, Jordan Poole and Tyus Jones should have all of the possessions they've ever wanted to show off what they can do.