Skip to main content
The Uplink JavaScript SDK provides a Puppeteer/Playwright-like API for controlling mobile browsers remotely. This reference covers all available classes, methods, and types.

Installation

npm install @uplink-code/uplink

Quick example

import uplink from '@uplink-code/uplink'

const client = await uplink.client.connect('wss://relay.uplink.build/session/<jwt>')
const browser = await client.launch()
const page = await browser.newPage()

await page.goto('https://example.com')
const title = await page.evaluate(() => document.title)

await browser.close()
await client.close()

API structure

The SDK is organized into four main classes:

TypeScript support

The SDK is written in TypeScript and includes full type definitions:
import type { Page, Cookie, Request } from '@uplink-code/uplink/page/types'
import type { Client } from '@uplink-code/uplink/client/types'
import type { Browser } from '@uplink-code/uplink/browser/types'

Error handling

All async methods can throw errors. Always use try-catch for robust automation:
try {
  await page.goto('https://example.com')
} catch (error) {
  console.error('Navigation failed:', error)
}

Common patterns

Connection and cleanup

const client = await uplink.client.connect(sessionUrl)

try {
  const browser = await client.launch()
  const page = await browser.newPage()

  // Your automation here

} finally {
  // Always clean up
  await page.close()
  await browser.close()
  await client.close()
}

Waiting for devices

const client = await uplink.client.connect(sessionUrl)

// Wait for first device
const device = await client.worker()

// Or handle devices as they connect
client.on('worker-connected', async (device) => {
  console.log('Device connected:', device.address)
})

Multi-page automation

const browser = await client.launch()

const page1 = await browser.newPage()
const page2 = await browser.newPage()

await Promise.all([
  page1.goto('https://example.com'),
  page2.goto('https://google.com')
])

Next steps