If your site is server-rendered or generated, middleware for the initial page will be executed both when the page is rendered and then again on the client.Nuxt Docs: When Middleware Runs
Route middleware run within the Vue part of your Nuxt app. Despite the similar name, they are completely different from server middleware, which are run in the Nitro server part of your app.Nuxt Docs: Middleware
export default defineNuxtRouteMiddleware(to => {
// skip middleware on server
if (import.meta.server) return
// OR skip middleware on client side entirely
if (import.meta.client) return
// OR only skip middleware on initial client load
const nuxtApp = useNuxtApp()
if (import.meta.client && nuxtApp.isHydrating && nuxtApp.payload.serverRendered) return
})