Capítulo 386 de 456

userAgent

Core Idea

Helper que estende a Web Request API com propriedades pra ler informações do user agent (browser, device, engine, OS, CPU) direto do request, tipicamente em proxy/middleware.

Key Concepts

  • userAgent(request): função de next/server que recebe um NextRequest e retorna o objeto com isBot, browser, device, engine, os, cpu
  • isBot: boolean, indica se o request vem de bot conhecido
  • browser: { name, version }, ambos string | undefined
  • device: { model, type, vendor }; type pode ser console, mobile, tablet, smarttv, wearable, embedded ou undefined (desktop)
  • engine: { name, version }; name entre valores como Blink, Gecko, WebKit, Trident, etc.
  • os: { name, version }
  • cpu: { architecture }, valores como arm64, amd64, ia32, etc.

Code Examples

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

export function proxy(request: NextRequest) {
  const url = request.nextUrl
  const { device } = userAgent(request)
  const viewport = device.type || 'desktop'
  url.searchParams.set('viewport', viewport)
  return NextResponse.rewrite(url)
}
  • O que demonstra: rewrite condicional baseado no tipo de dispositivo detectado.

Key Takeaways

  1. Todas as propriedades de browser, device, engine, os, cpu podem vir undefined, sempre tratar como opcionais
  2. device.type ausente (undefined) indica desktop
  3. Uso típico é em proxy/middleware para rewrite/redirect condicional por device ou bloqueio de bots

Connects To

  • NextRequest/NextResponse: userAgent opera sobre o objeto de request do runtime de proxy