Browserbase Browser

Configure Browserbase for managed CDP sessions and session-aware browser calls.

Browserbase fits deployments that want managed browser sessions plus CDP-level control through playwright-core. ViteHub keeps the top-level browser API capability-based, while browser.native and session.native expose the raw Browserbase and Playwright handles when you need provider-specific power.

Before you start

Install the Browserbase SDK and playwright-core alongside @vitehub/browser.

Terminal
pnpm add https://pkg.pr.new/vite-hub/vitehub/@vitehub/browser@main @browserbasehq/sdk playwright-core

Set BROWSERBASE_API_KEY in the runtime environment. Add BROWSERBASE_PROJECT_ID when Browserbase should target a specific project by default.

.env
BROWSERBASE_API_KEY=your-api-key
BROWSERBASE_PROJECT_ID=your-project-id

ViteHub does not load .env files for you. Your app or runtime must load them into process.env.

Configure Browserbase

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@vitehub/browser/nuxt'],
  browser: {
    provider: 'browserbase',
    projectId: process.env.BROWSERBASE_PROJECT_ID,
  },
})

Browserbase-specific options

Set Browserbase-specific options such as projectId, region, proxies, keepAlive, apiKey, baseURL, or connectUrl in top-level browser config.

Keep Browserbase credentials and Browserbase-only settings in top-level browser config. Keep defineBrowser() focused on portable execution defaults.

Define a browser

server/browsers/check-login.ts
export default defineBrowser(async (payload: { url: string }, { browser }) => {
  return {
    html: await browser.content({
      session: {
        reuse: true,
        keepAlive: 120,
      },
      url: payload.url,
      waitForSelector: 'form',
    }),
  }
}, {
  viewport: {
    width: 1440,
    height: 900,
  },
})

What changes on Browserbase

ConcernBehavior
Credential resolutionViteHub reads apiKey from config or BROWSERBASE_API_KEY.
Project selectionViteHub uses browser.projectId or BROWSERBASE_PROJECT_ID when present.
Session modelBrowserbase supports createSession(), getSession(), and closeSession(). Those session handles expose the raw Browserbase and Playwright objects through session.native.
TransportViteHub connects through Browserbase's CDP URL with playwright-core.
Native paritybrowser.native exposes the raw Browserbase SDK client.
On Nitro or Nuxt, runtime overrides should flow through runtime config. Keep browser.provider = 'browserbase' in config, then override fields such as projectId through NITRO_BROWSER_PROJECT_ID or NUXT_BROWSER_PROJECT_ID when needed.
Choose Browserbase when you want managed browser sessions plus the ability to keep working directly with Browserbase and Playwright primitives when the common API is not enough.