Documentation Index
Fetch the complete documentation index at: https://mintlify.com/whiskeysockets/Baileys/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Browsers constant provides predefined browser configurations for WhatsApp Web connections. Different browser configurations can affect the connection behavior, message history sync, and device identification.
Type Definition
type BrowsersMap = {
ubuntu(browser: string): [string, string, string]
macOS(browser: string): [string, string, string]
baileys(browser: string): [string, string, string]
windows(browser: string): [string, string, string]
appropriate(browser: string): [string, string, string]
}
Each function returns a WABrowserDescription tuple: [OS, Browser, Version]
Available Configurations
Browsers.ubuntu()
The browser name to use (e.g., ‘Chrome’, ‘Firefox’, ‘MyApp’).
Returns ['Ubuntu', browser, '22.04.4']
import { Browsers } from '@whiskeysockets/baileys'
const config = Browsers.ubuntu('Chrome')
// Returns: ['Ubuntu', 'Chrome', '22.04.4']
const sock = makeWASocket({
browser: Browsers.ubuntu('MyApp'),
auth: state
})
Browsers.macOS()
The browser name to use (e.g., ‘Safari’, ‘Chrome’, ‘Desktop’).
Returns ['Mac OS', browser, '14.4.1']
import { Browsers } from '@whiskeysockets/baileys'
const config = Browsers.macOS('Safari')
// Returns: ['Mac OS', 'Safari', '14.4.1']
// This is the default configuration
const sock = makeWASocket({
browser: Browsers.macOS('Chrome'), // Default
auth: state
})
Browsers.baileys()
The browser/app name to use (e.g., ‘MyApp’, ‘Bot’).
Returns ['Baileys', browser, '6.5.0']
import { Browsers } from '@whiskeysockets/baileys'
const config = Browsers.baileys('MyBot')
// Returns: ['Baileys', 'MyBot', '6.5.0']
const sock = makeWASocket({
browser: Browsers.baileys('WhatsAppBot'),
auth: state
})
Browsers.windows()
The browser name to use (e.g., ‘Edge’, ‘Chrome’).
Returns ['Windows', browser, '10.0.22631']
import { Browsers } from '@whiskeysockets/baileys'
const config = Browsers.windows('Edge')
// Returns: ['Windows', 'Edge', '10.0.22631']
const sock = makeWASocket({
browser: Browsers.windows('Chrome'),
auth: state
})
Browsers.appropriate()
Returns browser configuration based on your current operating system and release version.
import { Browsers } from '@whiskeysockets/baileys'
// Automatically detects OS and uses appropriate configuration
const config = Browsers.appropriate('Chrome')
// On macOS: ['Mac OS', 'Chrome', '14.4.1']
// On Ubuntu: ['Ubuntu', 'Chrome', '22.04.4']
// On Windows: ['Windows', 'Chrome', '10.0.22631']
// On others: ['Ubuntu', 'Chrome', release()]
const sock = makeWASocket({
browser: Browsers.appropriate('MyApp'),
auth: state
})
The appropriate() function uses the following platform detection:
const PLATFORM_MAP = {
aix: 'AIX',
darwin: 'Mac OS',
win32: 'Windows',
android: 'Android',
freebsd: 'FreeBSD',
openbsd: 'OpenBSD',
sunos: 'Solaris',
linux: undefined, // Falls back to 'Ubuntu'
haiku: undefined, // Falls back to 'Ubuntu'
cygwin: undefined, // Falls back to 'Ubuntu'
netbsd: undefined // Falls back to 'Ubuntu'
}
Utility function to get the platform ID for a given browser string.
The browser name (case-insensitive).
Returns the platform type ID. Defaults to ‘1’ (Chrome) if not found.
import { getPlatformId } from '@whiskeysockets/baileys'
const platformId = getPlatformId('chrome')
// Returns platform ID based on proto.DeviceProps.PlatformType
Usage Examples
QR Code Connection with Custom Browser
import makeWASocket, { Browsers } from '@whiskeysockets/baileys'
const sock = makeWASocket({
browser: Browsers.ubuntu('MyApp'),
printQRInTerminal: true,
auth: state
})
// QR code will show "MyApp" on Ubuntu
Desktop Configuration for Full History
To receive more message history, use a desktop configuration:
import makeWASocket, { Browsers } from '@whiskeysockets/baileys'
const sock = makeWASocket({
browser: Browsers.macOS('Desktop'),
syncFullHistory: true,
auth: state
})
Dynamic Browser Selection
import makeWASocket, { Browsers } from '@whiskeysockets/baileys'
const useQR = true
const appName = 'MyWhatsAppBot'
const sock = makeWASocket({
browser: useQR
? Browsers.ubuntu(appName) // Shows on QR code scan
: Browsers.appropriate(appName), // Matches system
printQRInTerminal: useQR,
auth: state
})
Pairing Code with Custom Name
import makeWASocket, { Browsers } from '@whiskeysockets/baileys'
const sock = makeWASocket({
browser: Browsers.baileys('MyCustomBot'),
printQRInTerminal: false,
auth: state
})
if (!sock.authState.creds.registered) {
const code = await sock.requestPairingCode('1234567890')
console.log(`Pairing code: ${code}`)
}
Browser Configuration Impact
Message History
Different browser configurations can affect how much message history you receive:
- Desktop configurations (e.g.,
Browsers.macOS('Desktop')) typically receive more history
- Mobile-like configurations may receive less history
- Combined with
syncFullHistory: true for maximum history sync
const sock = makeWASocket({
browser: Browsers.macOS('Desktop'),
syncFullHistory: true,
auth: state
})
Device Identification
The browser configuration is visible in WhatsApp’s “Linked Devices” section:
// Shows as "Chrome on Ubuntu" in WhatsApp
browser: Browsers.ubuntu('Chrome')
// Shows as "MyApp on Baileys" in WhatsApp
browser: Browsers.baileys('MyApp')
Default Configuration
When not specified, Baileys uses:
const DEFAULT_CONNECTION_CONFIG = {
browser: Browsers.macOS('Chrome'),
// ... other defaults
}
Complete Example
import makeWASocket, {
Browsers,
useMultiFileAuthState,
DisconnectReason
} from '@whiskeysockets/baileys'
import { Boom } from '@hapi/boom'
const { state, saveCreds } = await useMultiFileAuthState('auth_info')
const sock = makeWASocket({
browser: Browsers.ubuntu('MyWhatsAppClient'),
syncFullHistory: true,
auth: state
})
sock.ev.on('connection.update', (update) => {
const { connection, lastDisconnect, qr } = update
if (connection === 'close') {
const shouldReconnect =
(lastDisconnect?.error as Boom)?.output?.statusCode !== DisconnectReason.loggedOut
if (shouldReconnect) {
console.log('Reconnecting...')
// Reconnect logic
}
} else if (connection === 'open') {
console.log('Connected! Device shows as "MyWhatsAppClient on Ubuntu"')
}
if (qr) {
console.log('Scan this QR code with WhatsApp')
// QR will display "MyWhatsAppClient" as the client name
}
})
sock.ev.on('creds.update', saveCreds)
Best Practices
-
Use descriptive names: Choose browser names that identify your application
browser: Browsers.ubuntu('MyCompanyBot')
-
Match your deployment: Use
appropriate() for automatic OS detection
browser: Browsers.appropriate('MyApp')
-
Desktop for history: Use desktop configurations when full history is needed
browser: Browsers.macOS('Desktop')
syncFullHistory: true
-
Consistent branding: Keep the same browser name across reconnections
const APP_NAME = 'MyApp'
browser: Browsers.ubuntu(APP_NAME)
Source Code Reference
From src/Utils/browser-utils.ts:19-26:
export const Browsers: BrowsersMap = {
ubuntu: browser => ['Ubuntu', browser, '22.04.4'],
macOS: browser => ['Mac OS', browser, '14.4.1'],
baileys: browser => ['Baileys', browser, '6.5.0'],
windows: browser => ['Windows', browser, '10.0.22631'],
appropriate: browser => [PLATFORM_MAP[platform()] || 'Ubuntu', browser, release()]
}
See Also