---
category: Browser
---
# useBreakpoints
Reactive viewport breakpoints.
## Usage
```ts
import { breakpointsTailwind, useBreakpoints } from '@vueuse/core'
const breakpoints = useBreakpoints(breakpointsTailwind)
const smAndLarger = breakpoints.greaterOrEqual('sm') // sm and larger
const largerThanSm = breakpoints.greater('sm') // only larger than sm
const lgAndSmaller = breakpoints.smallerOrEqual('lg') // lg and smaller
const smallerThanLg = breakpoints.smaller('lg') // only smaller than lg
```
```vue
...
```
### Shortcut Methods
You can access breakpoints directly as properties on the returned object. These return reactive refs.
```ts
const breakpoints = useBreakpoints({
tablet: 640,
laptop: 1024,
})
// Equivalent to breakpoints.greaterOrEqual('tablet') with min-width strategy
const isTablet = breakpoints.tablet
```
### Strategy
The `strategy` option controls how the shortcut properties behave:
- `min-width` (default, mobile-first): `breakpoints.lg` is `true` when viewport is `>= lg`
- `max-width` (desktop-first): `breakpoints.lg` is `true` when viewport is `< xl`
```ts
const breakpoints = useBreakpoints(breakpointsTailwind, {
strategy: 'max-width', // desktop-first
})
```
### Available Methods
| Method | Description |
| --------------------- | -------------------------------------------------------- |
| `greaterOrEqual(k)` | Reactive: viewport width >= breakpoint |
| `greater(k)` | Reactive: viewport width > breakpoint |
| `smallerOrEqual(k)` | Reactive: viewport width <= breakpoint |
| `smaller(k)` | Reactive: viewport width < breakpoint |
| `between(a, b)` | Reactive: viewport width between a and b |
| `isGreaterOrEqual(k)` | Non-reactive: returns boolean immediately |
| `isGreater(k)` | Non-reactive: returns boolean immediately |
| `isSmallerOrEqual(k)` | Non-reactive: returns boolean immediately |
| `isSmaller(k)` | Non-reactive: returns boolean immediately |
| `isInBetween(a, b)` | Non-reactive: returns boolean immediately |
| `current()` | Returns computed array of all matching breakpoints |
| `active()` | Returns computed string of the current active breakpoint |
#### Server Side Rendering and Nuxt
If you are using `useBreakpoints` with SSR enabled, then you need to specify which screen size you would like to render on the server and before hydration to avoid an hydration mismatch
```ts
import { breakpointsTailwind, useBreakpoints } from '@vueuse/core'
const breakpoints = useBreakpoints(breakpointsTailwind, {
ssrWidth: 768 // Will enable SSR mode and render like if the screen was 768px wide
})
```
Alternatively you can set this up globally for your app using [`provideSSRWidth`](../useSSRWidth/index.md)
## Presets
- Tailwind: `breakpointsTailwind`
- Bootstrap v5: `breakpointsBootstrapV5`
- Vuetify v2: `breakpointsVuetifyV2` (deprecated: `breakpointsVuetify`)
- Vuetify v3: `breakpointsVuetifyV3`
- Ant Design: `breakpointsAntDesign`
- Quasar v2: `breakpointsQuasar`
- Sematic: `breakpointsSematic`
- Master CSS: `breakpointsMasterCss`
- Prime Flex: `breakpointsPrimeFlex`
- ElementUI / ElementPlus: `breakpointsElement`
_Breakpoint presets are deliberately not auto-imported, as they do not start with `use` to have the scope of VueUse. They have to be explicitly imported:_
```js
import { breakpointsTailwind } from '@vueuse/core'
// and so on
```
## Type Declarations
```ts
export * from "./breakpoints"
export type Breakpoints = Record<
K,
MaybeRefOrGetter
>
export interface UseBreakpointsOptions extends ConfigurableWindow {
/**
* The query strategy to use for the generated shortcut methods like `.lg`
*
* 'min-width' - .lg will be true when the viewport is greater than or equal to the lg breakpoint (mobile-first)
* 'max-width' - .lg will be true when the viewport is smaller than the xl breakpoint (desktop-first)
*
* @default "min-width"
*/
strategy?: "min-width" | "max-width"
ssrWidth?: number
}
export type UseBreakpointReturn = Record<
K,
ComputedRef
> & {
greaterOrEqual: (k: MaybeRefOrGetter) => ComputedRef
smallerOrEqual: (k: MaybeRefOrGetter) => ComputedRef
greater: (k: MaybeRefOrGetter) => ComputedRef
smaller: (k: MaybeRefOrGetter) => ComputedRef
between: (
a: MaybeRefOrGetter,
b: MaybeRefOrGetter,
) => ComputedRef
isGreater: (k: MaybeRefOrGetter) => boolean
isGreaterOrEqual: (k: MaybeRefOrGetter) => boolean
isSmaller: (k: MaybeRefOrGetter) => boolean
isSmallerOrEqual: (k: MaybeRefOrGetter) => boolean
isInBetween: (a: MaybeRefOrGetter, b: MaybeRefOrGetter) => boolean
current: () => ComputedRef
active: () => ComputedRef
}
/**
* Reactively viewport breakpoints
*
* @see https://vueuse.org/useBreakpoints
*
* @__NO_SIDE_EFFECTS__
*/
export declare function useBreakpoints(
breakpoints: Breakpoints,
options?: UseBreakpointsOptions,
): UseBreakpointReturn
```