Releases: browserbase/stagehand
@browserbasehq/[email protected]
Patch Changes
-
#865
6b4e6e3
Thanks @seanmcguire12! - improve type safety for trimTrailingTextNode -
#897
e77d018
Thanks @miguelg719! - Fix selfHeal to remember intially received arguments -
#920
c20adb9
Thanks @seanmcguire12! - fix: tab handling on API -
#882
b86df93
Thanks @seanmcguire12! - remove elements that don't have xpaths from observe response -
#905
023c2c2
Thanks @tkattkat! - Delete old images from anthropic cua client -
#925
8c28647
Thanks @miguelg719! - Remove _refreshPageFromApi() -
#887
87e09c6
Thanks @seanmcguire12! - fix: allow xpaths with prepended 'xpath=' for targeted extract -
#864
a611115
Thanks @miguelg719! - Temporarily patch custom clients serialization error on api -
#881
69913fe
Thanks @miguelg719! - Pass sdk version number to API for debugging -
#913
b1b83a1
Thanks @seanmcguire12! - move iframe out of 'experimental' -
#891
be8497c
Thanks @seanmcguire12! - fix: nested iframe xpath bug -
#883
98704c9
Thanks @seanmcguire12! - add timeout for JS click -
#907
04978bd
Thanks @seanmcguire12! - store mapping of CDP frame ID -> page
@browserbasehq/[email protected]
Patch Changes
-
#856
8a43c5a
Thanks @seanmcguire12! - set download behaviour by default -
#857
890ffcc
Thanks @miguelg719! - return "not-supported" for elements inside the shadow-dom -
#844
64c1072
Thanks @seanmcguire12! - don't automatically close tabs -
#860
b077d3f
Thanks @miguelg719! - Set default schema on extract options with no schema -
#842
8bcb5d7
Thanks @seanmcguire12! - improved handling for OS level dropdowns -
#846
7bf10c5
Thanks @miguelg719! - Filter attaching to target worker / shared_worker
@browserbasehq/[email protected]
Minor Changes
- #819
6a18c1e
Thanks @seanmcguire12! - try playwright click and fall back to JS click event
Patch Changes
-
#826
124e0d3
Thanks @seanmcguire12! - fix issue where we are unable to take actions on text nodes -
#818
1660751
Thanks @miguelg719! - Added CUA support for Claude 4 models -
#821
cadac9d
Thanks @seanmcguire12! - use playwright instead of playwright test -
#832
759da55
Thanks @miguelg719! - Fix _refreshPageFromAPI to use parametrized apiKey -
#810
a175a51
Thanks @miguelg719! - Update logos -
#822
8527a80
Thanks @miguelg719! - Add model with date tag for OpenAI CUA -
#833
55fca2f
Thanks @seanmcguire12! - adjust stagehandLogger.warn() level to be 1 instead of 0
@browserbasehq/[email protected]
Patch Changes
-
#796
12a99b3
Thanks @miguelg719! - Added a experimental flag to enable the newest and most experimental features -
#807
2451797
Thanks @seanmcguire12! - include version number in StagehandDefaultError message -
#803
1d631a5
Thanks @miguelg719! - Enable session affinity for cache optimization -
#804
9c398bb
Thanks @seanmcguire12! - update operatorResponseSchema based on new openai spec -
#786
c19ad7f
Thanks @miguelg719! - Handle reroute to account for rollout
@browserbasehq/[email protected]
Minor Changes
- #737
6ef6073
Thanks @seanmcguire12! - deprecate useTextExtract and remove functionality
Patch Changes
-
#741
5680d25
Thanks @seanmcguire12! - use safeparse for zod validation -
#783
4de92a8
Thanks @miguelg719! - Fix the readme logo link
@browserbasehq/[email protected]
Patch Changes
-
#721
be8652e
Thanks @miguelg719! - Fix stagehand.close() functionality to include calling browser.close() -
#724
6b413b7
Thanks @seanmcguire12! - rm refine step in extract -
#712
7eafbd9
Thanks @seanmcguire12! - deprecatedonlyVisible
param and remove its functionality -
#725
1b50aa6
Thanks @seanmcguire12! - dont overwrite .describe() when user defines a zod schema with z.string().url().describe() -
#717
f2b7f1f
Thanks @seanmcguire12! - don't publish uncompiled ts to npm -
#719
c8d672f
Thanks @seanmcguire12! - fixInvalid schema for response_format
error when extracting links -
#722
bebf204
Thanks @seanmcguire12! - replace NBSP with regular space & remove special characters from dom+a11y tree -
#714
37d6810
Thanks @miguelg719! - Fix the native AI SDK client implementation to optionally take in an API key
v2.2.0
Minor Changes
-
#655
8814af9
Thanks @seanmcguire12! - extract links -
#675
35c55eb
Thanks @tkattkat! - Added Gemini 2.5 Flash to Google supported models -
#668
5c6d2cf
Thanks @miguelg719! - Added a new class - Stagehand Evaluator - that wraps around a Stagehand object to determine whether a task is successful or not. Currently used for agent evals
Patch Changes
-
#706
18ac6fb
Thanks @seanmcguire12! - remove unused fillInVariables fn -
#692
6b95248
Thanks @miguelg719! - Updated the list of OpenAI models (4.1, o3...) -
#688
7d81b3c
Thanks @seanmcguire12! - wrap page.evaluate to make sure we have injected browser side scripts before calling them -
#664
b5ca00a
Thanks @miguelg719! - remove unnecessary log -
#683
8f0f97b
Thanks @seanmcguire12! - use javsacript click instead of playwright -
#705
346ef5d
Thanks @miguelg719! - Fixed removing a hanging observation map that is no longer used -
#698
c145bc1
Thanks @sameelarif! - Fixing LLM client support to natively integrate with AI SDK -
#687
edd6d3f
Thanks @miguelg719! - Fixed the schema input for Gemini's response model -
#678
5ec43d8
Thanks @seanmcguire12! - allow form filling when form is not top-most element -
#694
b8cc164
Thanks @seanmcguire12! - add telemetry for cua agents to stagehand.metrics -
#699
d9f4243
Thanks @seanmcguire12! - rm deprecated primitives from stagehand object -
#710
9f4ab76
Thanks @seanmcguire12! - support targeted extract for domExtract -
#677
bc5a731
Thanks @miguelg719! - Fixes a redundant unnecessary log
v2.1.0
Minor Changes
- #659
f9a435e
Thanks @miguelg719! - Added native support for Google Generative models (Gemini)
Patch Changes
-
#647
ca5467d
Thanks @seanmcguire12! - collapse redundant text nodes into parent elements -
#636
9037430
Thanks @seanmcguire12! - fix token act metrics and inference logging being misplaced as observe metrics and inference logging -
#648
169e7ea
Thanks @seanmcguire12! - add mapping of node id -> url -
#654
57a9853
Thanks @seanmcguire12! - fix repeated up & down scrolling bug for clicks insideact
-
#624
cf167a4
Thanks @seanmcguire12! - export stagehand error classes so they can be referenced from @dist -
#640
178f5f0
Thanks @yash1744! - Added support for stagehand agents to automatically redirect to https://google.com when the page URL is empty or set to about:blank, preventing empty screenshots and saving tokens. -
#633
86724f6
Thanks @miguelg719! - Fix the getBrowser logic for redundant api calls and throw informed errors -
#656
c630373
Thanks @seanmcguire12! - parse out % signs from variables in act -
#637
944bbbf
Thanks @kamath! - Fix: forward along the stack trace in StagehandDefaultError
v2.0.0
Major Changes
-
#591
e234a0f
Thanks @miguelg719! - Announcing Stagehand 2.0! ๐We're thrilled to announce the release of Stagehand 2.0, bringing significant improvements to make browser automation more powerful, faster, and easier to use than ever before.
๐ New Features
- Introducing
stagehand.agent
: A powerful new way to integrate SOTA Computer use models or Browserbase's Open Operator into Stagehand with one line of code! Perfect for multi-step workflows and complex interactions. Learn more - Lightning-fast
act
andextract
: Major performance improvements to make your automations run significantly faster. - Enhanced Logging: Better visibility into what's happening during automation with improved logging and debugging capabilities.
- Comprehensive Documentation: A completely revamped documentation site with better examples, guides, and best practices.
- Improved Error Handling: More descriptive errors and better error recovery to help you debug issues faster.
๐ ๏ธ Developer Experience
- Better TypeScript Support: Enhanced type definitions and better IDE integration
- Better Error Messages: Clearer, more actionable error messages to help you debug faster
- Improved Caching: More reliable action caching for better performance
We're excited to see what you build with Stagehand 2.0! For questions or support, join our Slack community.
For more details, check out our documentation.
- Introducing
Minor Changes
-
#588
ba9efc5
Thanks @sameelarif! - Added support for offloading agent tasks to the API. -
#600
11e015d
Thanks @sameelarif! - Added astagehand.history
array which stores an array ofact
,extract
,observe
, andgoto
calls made. Since this history array is stored on theStagehandPage
level, it will capture methods even if indirectly called by an agent. -
#601
1d22604
Thanks @seanmcguire12! - add custom error classes -
#599
75d8fb3
Thanks @miguelg719! - cleaner logging with pino -
#609
c92295d
Thanks @kamath! - Removed deprecated fields and methods from Stagehand constructor and added cdpUrl to localBrowserLaunchOptions for custom CDP URLs support. -
#571
73d6736
Thanks @miguelg719! - You can now use Computer Using Agents (CUA) natively in Stagehand for both Anthropic and OpenAI models! This unlocks a brand new frontier of applications for Stagehand users ๐ค -
#619
7b0b996
Thanks @sameelarif! - add disablePino flag to stagehand constructor params -
#620
566e587
Thanks @kamath! - You can now pass in an OpenAI instance as anllmClient
to the Stagehand constructor! This allows you to use Stagehand with any OpenAI-compatible model, like Ollama, Gemini, etc., as well as OpenAI wrappers like Braintrust. -
#586
c57dc19
Thanks @sameelarif! - Added native Stagehand agentic loop functionality. This allows you to build agentic workflows with a single prompt without using a computer-use model. To try it out, create astagehand.agent
without passing in a provider.
Patch Changes
-
#580
179e17c
Thanks @seanmcguire12! - refactor _performPlaywrightMethod -
#608
71ee10d
Thanks @seanmcguire12! - added support for "scrolling to next/previous chunk" -
#594
e483484
Thanks @seanmcguire12! - pass observeHandler into actHandler -
#569
17e8b40
Thanks @seanmcguire12! - you can now call stagehand.metrics to get token usage metrics. you can also set logInferenceToFile in stagehand config to log the entire call/response history from stagehand & the LLM. -
#617
affa564
Thanks @seanmcguire12! - use a11y tree for default extract -
#589
0c4b1e7
Thanks @miguelg719! - Added CDP support for screenshots, find more about the benefits here: https://docs.browserbase.com/features/screenshots#why-use-cdp-for-screenshots%3F -
#584
c7c1a80
Thanks @miguelg719! - Fix to remove unnecessary healtcheck ping on sdk -
#616
2a27e1c
Thanks @miguelg719! - Fixed new opened tab handling for CUA models -
#582
dfd24e6
Thanks @seanmcguire12! - support api usage for extract with no args -
#563
98166d7
Thanks @seanmcguire12! - support scrolling inact
-
#598
53889d4
Thanks @miguelg719! - Fix the open operator handler to work with anthropic -
#605
b8beaec
Thanks @sameelarif! - Added support for resuming a Stagehand session created on the API. -
#612
cd36068
Thanks @seanmcguire12! - remove all logic related to dom based act -
#577
4fdbf63
Thanks @seanmcguire12! - remove debugDom -
#603
2a14a60
Thanks @seanmcguire12! - rm unused handlePossiblePageNavigation -
#614
a59eaef
Thanks @kamath! - override whatwg-url to avoid punycode warning -
#573
c24f3c9
Thanks @seanmcguire12! - return act result in actFromObserve
v1.14.0
Minor Changes
-
#518
516725f
Thanks @sameelarif! -act()
can now useobserve()
under the hood, resulting in significant performance improvements. To opt-in to this change, setslowDomBasedAct: false
inActOptions
. -
#483
8c9445f
Thanks @seanmcguire12! - When usingtextExtract
, you can now do targetted extraction by passing an xpath string into extract via theselector
parameter. This limits the dom processing step to a target element, reducing tokens and increasing speed. For example:const weatherData = await stagehand.page.extract({ instruction: "extract the weather data for Sun, Feb 23 at 11PM", schema: z.object({ temperature: z.string(), weather_description: z.string(), wind: z.string(), humidity: z.string(), barometer: z.string(), visibility: z.string(), }), modelName, useTextExtract, selector: xpath, // xpath of the element to extract from });
-
#556
499a72d
Thanks @kamath! - You can now set a timeout for dom-based stagehand act! Do this inact
withtimeoutMs
as a parameter, or set a global param toactTimeoutMs
in Stagehand config. -
#544
55c9673
Thanks @seanmcguire12! - you can now deterministically get the full text representation of a webpage by callingextract()
(with no arguments) -
#538
d898d5b
Thanks @sameelarif! - Addedgpt-4.5-preview
andclaude-3-7-sonnet-latest
as supported models. -
#523
44cf7cc
Thanks @kwt00! You can now natively run Cerebras LLMs!cerebras-llama-3.3-70b
andcerebras-llama-3.1-8b
are now supported models as long asCEREBRAS_API_KEY
is set in your environment. -
#542
cf7fe66
Thanks @sankalpgunturi! You can now natively run Groq LLMs!groq-llama-3.3-70b-versatile
andgroq-llama-3.3-70b-specdec
are now supported models as long asGROQ_API_KEY
is set in your environment.
Patch Changes
-
#506
e521645
Thanks @miguelg719! - fixing 5s timeout on actHandler -
#535
3782054
Thanks @miguelg719! - Adding backwards compatibility to new act->observe pipeline by accepting actOptions -
#508
270f666
Thanks @miguelg719! - Fixed stagehand to support multiple pages with an enhanced context -
#559
18533ad
Thanks @seanmcguire12! - fix: continuously adjusting chunk size insideact
-
#554
5f1868b
Thanks @seanmcguire12! - fix targetted extract issue with scrollintoview and not chunking correctly -
#555
fc5e8b6
Thanks @seanmcguire12! - fix issue where processAllOfDom doesnt scroll to end of page when there is dynamic content -
#552
a25a4cb
Thanks @seanmcguire12! - accept xpaths with 'xpath=' prepended to the front in addition to xpaths without -
#534
f0c162a
Thanks @seanmcguire12! - call this.end() if the process exists -
#528
c820bfc
Thanks @seanmcguire12! - handle attempt to close session that has already been closed when using the api -
#520
f49eebd
Thanks @miguelg719! - Performing act from a 'not-supported' ObserveResult will now throw an informed error