> ## Documentation Index
> Fetch the complete documentation index at: https://docs.browserbase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Core features

> The building blocks for powerful browser automation with Browserbase

<CardGroup cols={2}>
  <Card title="Contexts" icon="database" href="/platform/browser/core-features/contexts">
    Persist cookies, authentication state, and application data across sessions, so you don't need to log in on every run.
  </Card>

  <Card title="Viewports" icon="display" href="/platform/browser/core-features/viewports">
    Configure the screen size and resolution of your browser sessions to match any device or layout requirement.
  </Card>

  <Card title="Session metadata" icon="tag" href="/platform/browser/core-features/session-metadata">
    Tag sessions with custom key-value data to organize, filter, and query your automation runs.
  </Card>

  <Card title="Browser Extensions" icon="puzzle-piece" href="/platform/browser/core-features/browser-extensions">
    Load your own Chrome extensions into sessions to augment browser behavior or bypass site-specific challenges.
  </Card>
</CardGroup>

## Quick reference

| Feature | What it does | When to use it |
| - | - | - |
| [**Contexts**](/platform/browser/core-features/contexts) | Persists cookies, auth tokens, and browser storage across sessions | Any workflow that requires login: avoids re-authenticating on every run |
| [**Viewports**](/platform/browser/core-features/viewports) | Sets the browser window width and height | Visual testing, screenshots, or layouts that are viewport-dependent |
| [**Session metadata**](/platform/browser/core-features/session-metadata) | Attaches custom JSON to a session for querying later | Organizing sessions by test run, environment, team, or status |
| [**Browser extensions**](/platform/browser/core-features/browser-extensions) | Loads a Chrome extension into the session | Custom page behavior, ad blocking, or site-specific workarounds |

## All features are set at session creation

Every core feature is configured when you create a session. Pass your settings in the `browserSettings` object:

```typescript theme={null}
const session = await bb.sessions.create({
  browserSettings: {
    viewport: { width: 1920, height: 1080 },
    solveCaptchas: true,
  },
  context: { id: contextId, persist: true },
});
```

See the [Create Session API reference](/reference/api/create-a-session) for the full list of options.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.