Pre-flight checklist
Problem or use case
media is Beta. It was "graduated" to a batteries-included tier in 1.14.0 with 25+ new composables added in that same release — meaning essentially the entire usable surface is one minor old and has not survived a full cycle without additive change. The "batteries-included tier" label is a feature-completeness signal, not the semver stability bar, so media is feature-rich but not yet stable. These device/browser signal composables (VueUse-like) are a differentiator and teams will want to depend on them.
Proposed solution
Freeze the media composable surface for one minor cycle and add coverage and documentation for the new composables, including SSR-safe defaults (these read browser/device state, so server rendering needs defined fallbacks). Exit criteria: frozen surface, per-composable docs with SSR behavior, tested reactivity and cleanup (no listener leaks). No new features required — this is a bake-and-verify ticket.
Possible API or UX shape
import { useMediaQuery, useNetwork, useGeolocation } from "@bquery/bquery/media";
const isWide = useMediaQuery("(min-width: 1024px)"); // SSR fallback documented
// frozen surface; each composable documents its server-render default + cleanup
Alternatives considered
Promoting immediately on the strength of the "graduated" label — conflates feature-completeness with semver stability; the surface needs a clean cycle first. Trimming composables to reduce surface — unnecessary; the breadth is a strength, it just needs to bake.
Relevant area
media
Additional context
Distinct from the semver Stability Matrix, the 1.14.0 notes' "batteries-included tier" wording for media/plugin/devtools/testing is an optimistic, separate axis — all four remain Beta. Confirm SSR-safe defaults so these composables don't crash server rendering.
Pre-flight checklist
Problem or use case
mediais Beta. It was "graduated" to a batteries-included tier in 1.14.0 with 25+ new composables added in that same release — meaning essentially the entire usable surface is one minor old and has not survived a full cycle without additive change. The "batteries-included tier" label is a feature-completeness signal, not the semver stability bar, somediais feature-rich but not yet stable. These device/browser signal composables (VueUse-like) are a differentiator and teams will want to depend on them.Proposed solution
Freeze the
mediacomposable surface for one minor cycle and add coverage and documentation for the new composables, including SSR-safe defaults (these read browser/device state, so server rendering needs defined fallbacks). Exit criteria: frozen surface, per-composable docs with SSR behavior, tested reactivity and cleanup (no listener leaks). No new features required — this is a bake-and-verify ticket.Possible API or UX shape
Alternatives considered
Promoting immediately on the strength of the "graduated" label — conflates feature-completeness with semver stability; the surface needs a clean cycle first. Trimming composables to reduce surface — unnecessary; the breadth is a strength, it just needs to bake.
Relevant area
mediaAdditional context
Distinct from the semver Stability Matrix, the 1.14.0 notes' "batteries-included tier" wording for
media/plugin/devtools/testingis an optimistic, separate axis — all four remain Beta. Confirm SSR-safe defaults so these composables don't crash server rendering.