---
title: "Check for Update Strategy · Nuxt Skew Protection · Nuxt SEO"
canonical_url: "https://nuxtseo.com/docs/skew-protection/guides/update-strategies"
last_updated: "2026-08-14T21:06:01.006Z"
meta:
  description: "Choose the best update detection strategy for your platform."
  "og:description": "Choose the best update detection strategy for your platform."
  "og:title": "Check for Update Strategy · Nuxt Skew Protection · Nuxt SEO"
---

Nuxt SEO on GitHub

Switch to Skew ProtectionSwitch to Nuxt SEOSwitch to RobotsSwitch to SitemapSwitch to OG ImageSwitch to Schema.orgSwitch to Link CheckerSwitch to SEO UtilsSwitch to Site ConfigSwitch to AI Ready

**Core Concepts**

# **Check for Update Strategy**

When you deploy a new version of your Nuxt app we need to notify active users of the new version. By default, Nuxt applies a polling strategy, checking every hour if the build is out of date.

Alternative strategies like Server-Sent Events (SSE), WebSockets, and external providers provide real-time notifications, but have different platform compatibilities and performance trade-offs.

| **Strategy** | **Real-time** | **Platforms** | **Server Load** | **Client Connections** |
| --- | --- | --- | --- | --- |
| **[**~~Polling~~**](#polling)** | ❌ Delayed | ✅ All | ✅ Minimal | ✅ None |
| **[**~~SSE~~**](#sse)** | ✅ Instant | ⚠️ Node.js/Bun/Deno | ⚠️ Low | ⚠️ Persistent |
| **[**~~WebSocket~~**](#websocket)** | ✅ Instant | ⚠️ Cloudflare Durable | ⚠️ Moderate | ⚠️ Persistent |
| **[**~~Adapter~~**](#adapter)** | ✅ Instant | ✅ All (incl. Static) | ✅ None (external) | ✅ External provider |

## Performance Considerations

SSE and [**~~WebSocket~~**](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) strategies maintain persistent connections on your server. For **high-traffic applications** (10,000+ concurrent users), using an [**~~Adapter~~**](#adapter) with external providers like Ably or Pusher may be worthwhile.

The module automatically excludes bot traffic from connections when you install `**@nuxtjs/robots**`. See [**~~Bot Traffic Filtering~~**](https://nuxtseo.com/docs/skew-protection/guides/performance#bot-traffic-filtering).

See the [**~~Performance Guide~~**](https://nuxtseo.com/docs/skew-protection/guides/performance) for more details.

## Platform Defaults

The module automatically selects the best strategy based on your deployment platform, but you can override it in your configuration using [`**updateStrategy**`](https://nuxtseo.com/docs/skew-protection/api/config#updatestrategy-polling--sse--ws).

| **Provider** | **updateStrategy** |
| --- | --- |
| **Node.js** | `**sse**` |
| **Bun** | `**sse**` |
| **Deno** | `**sse**` |
| **Vercel** | `**sse**` |
| **Cloudflare Workers** | `**polling**` |
| **Cloudflare Durable** | `**ws**` |
| **Netlify** | `**sse**` |
| **Static/Prerendered** | `**polling**` or [**~~adapter~~**](#adapter) |

Note: For `**ws**` strategy, you must enable `**nuxt.options.nitro.experimental.websocket**`.

## Polling

The default strategy that works on **all platforms**. Uses Nuxt's built-in `**experimental.checkOutdatedBuildInterval**` to periodically fetch `**builds/latest.json**` to determine if a new deployment has occurred.

Update `**checkOutdatedBuildInterval**` to a quicker polling interval - 1 hour is too slow for most applications.

nuxt.config.ts

```ts
export default defineNuxtConfig({
  skewProtection: {
    updateStrategy: 'polling'
  },
  experimental: {
    checkOutdatedBuildInterval: 5 * 60 * 1000 // 5 minutes
  }
})
```

## SSE

Real-time updates using **Server-Sent Events**. SSE does keep persistent connections open. Be mindful of this if you have a high-traffic site. SSE has less overhead than WebSockets.

nuxt.config.ts

```ts
export default defineNuxtConfig({
  skewProtection: {
    updateStrategy: 'sse'
  }
})
```

## WebSocket

Real-time updates using **WebSockets**. SSE is generally more efficient, but for certain conditions like using Cloudflare Workers and some proxying services, WebSockets may be the best option.

Cloudflare Durable Objects

```ts
export default defineNuxtConfig({
  nitro: {
    preset: 'cloudflare-durable',
    experimental: {
      websocket: true
    }
  },
  skewProtection: {
    updateStrategy: 'ws'
  }
})
```

## Adapter

Adapters allow you to use **external WebSocket providers** for real-time update notifications. This is ideal for **static/prerendered sites** or when you want to offload connection management to a third-party service.

Available adapters:

- [**~~Pusher~~**](https://nuxtseo.com/docs/skew-protection/providers/external#pusher)
- [**~~Ably~~**](https://nuxtseo.com/docs/skew-protection/providers/external#ably)
- [**~~Custom~~**](https://nuxtseo.com/docs/skew-protection/providers/external#custom-adapters)

nuxt.config.ts

```ts
import { pusherAdapter } from 'nuxt-skew-protection/adapters/pusher'

export default defineNuxtConfig({
  skewProtection: {
    updateStrategy: pusherAdapter({
      key: process.env.PUSHER_KEY,
      cluster: process.env.PUSHER_CLUSTER,
      appId: process.env.PUSHER_APP_ID,
      secret: process.env.PUSHER_SECRET,
    })
  }
})
```

See [**~~External Providers~~**](https://nuxtseo.com/docs/skew-protection/providers/external) for detailed setup guides.

**Was this page helpful?**

### **Related **

[**Update Notifications**](https://nuxtseo.com/docs/skew-protection/guides/immediate-updates)

[**Performance**](https://nuxtseo.com/docs/skew-protection/guides/performance)

[**External Providers**](https://nuxtseo.com/docs/skew-protection/providers/external)

[**Installation** Get started with Nuxt Skew Protection by installing the dependency to your project.](https://nuxtseo.com/docs/skew-protection/getting-started/installation) [**Update Notifications** React to version updates using useSkewProtection() composable.](https://nuxtseo.com/docs/skew-protection/guides/immediate-updates)