androidx.compose.material3:material3-window-size-class と androidx.compose.material3.adaptive:adaptive が依存する androidx.window:window にはどちらも WindowSizeClass があります。
共通点
どちらも WindowSizeClass という大画面対応におけるブレイクポイントに関する API になります。
どちらもブレイクポイントとなる値に差はなく同じものとなっています。
違い
WindowSizeClass の取得方法
material3-window-size-class は Activity を必要とするのに対して、adaptive 経由の window の場合は関数を呼ぶだけになります。
// material3-window-size-class
val windowSizeClass = calculateWindowSizeClass(activity)
// adaptive経由のwindow
val adaptiveInfo = currentWindowAdaptiveInfo()
val windowSizeClass = adaptiveInfo.windowSizeClass
扱う情報
material3-window-size-class の場合は WindowSizeClass しか持っていないため、Width/Height の Compact/Medium/Expanded のみ判定が可能になっています。
一方の window の場合は WindowSizeClass だけでなく Foldable のヒンジの情報も持っています。また、window の 1.5.0 以上では WindowWidthSizeClass に Large/Extra-large の判定も可能になっています。
どちらを使うべきか
扱いやすさや扱う情報の多さ的には androidx.compose.material3.adaptive:adaptive と androidx.window:window の方が優先されるように思います。
また、androidx.window:window は WindowWidthSizeClass に Large/Extra-large が対応される予定がある一方で、androidx.compose.material3:material3-window-size-class には動きがないので将来的にどちらかだけがメンテナンスされる可能性もありそうです。