rsnext/errors/middleware-user-agent.md
2022-06-24 15:45:02 -05:00

984 B

Removed req.ua from Middleware API

Why This Error Occurred

Your middleware is interacting with req.ua and this feature needs to opt-in.

// middleware.ts
import { NextRequest, NextResponse } from 'next/server'

export function middleware(request: NextRequest) {
  const url = request.nextUrl
  const viewport = request.ua.device.type === 'mobile' ? 'mobile' : 'desktop'
  url.searchParams.set('viewport', viewport)
  return NextResponse.rewrite(url)
}

Possible Ways to Fix It

To parse the user agent, import userAgent function from next/server and give it your request:

// middleware.ts
import { NextRequest, NextResponse, userAgent } from 'next/server'

export function middleware(request: NextRequest) {
  const url = request.nextUrl
  const { device } = userAgent(request)
  const viewport = device.type === 'mobile' ? 'mobile' : 'desktop'
  url.searchParams.set('viewport', viewport)
  return NextResponse.rewrite(url)
}