Skip to content

[Feature]: Promote media to Stable — prove the 25+ new composables across a cycle #144

Description

@JosunLP

Pre-flight checklist

  • I searched existing issues and did not find a duplicate request.
  • I explained the problem or use case, not just the desired API.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    mediaChanges to the media module

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions