Nitro Api

isClientOutdated()

Last updated by
Harlan Wilton
in doc: sync.

Introduction

Type: function isClientOutdated(event: H3Event): boolean

Check if the client's version is outdated compared to the current build in server-side Nitro routes, middleware, and API handlers.

Returns true if the client's version cookie doesn't match the current buildId, indicating the client should refresh.

API

import { isClientOutdated } from 'nuxt-skew-protection/server'

function isClientOutdated(event: H3Event): boolean

Arguments

  • event: H3Event: The H3 event object from the request handler.

Returns

  • boolean: true if the client version doesn't match the current buildId, false otherwise.

Examples

Throwing an Error in API Route

// server/api/data.ts
import { isClientOutdated } from 'nuxt-skew-protection/server'

export default defineEventHandler(async (event) => {
  // Check if client is outdated
  if (isClientOutdated(event)) {
    throw createError({
      statusCode: 409,
      message: 'Client version outdated. Please refresh.'
    })
  }

  // Proceed with API logic
  const data = await fetchData()
  return data
})

Add Header in Middleware

// server/middleware/check-version.ts
import { isClientOutdated } from 'nuxt-skew-protection/server'

export default defineEventHandler((event) => {
  const path = event.path

  // Only check on API routes
  if (!path.startsWith('/api/')) {
    return
  }

  if (isClientOutdated(event)) {
    const userVersion = getSkewProtectionCookie(event)
    console.log(`Outdated client detected: ${userVersion}`)

    // Add header to inform client
    setResponseHeader(event, 'X-Client-Outdated', 'true')
  }
})
Did this page help you?