Skip to content

feat(langgraph): add graph lifecycle callback handlers #6438

feat(langgraph): add graph lifecycle callback handlers

feat(langgraph): add graph lifecycle callback handlers #6438

Triggered via pull request April 6, 2026 23:50
Status Success
Total duration 22m 16s
Artifacts

bench.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

1 warning and 2 notices
benchmark
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: Ana06/get-changed-files@25f79e676e7ea1868813e21465014798211fad8c. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Comparison against main: libs/langgraph/langgraph/callbacks.py#L0
+-----------------------------------------+---------+-----------------------+ | Benchmark | main | changes | +=========================================+=========+=======================+ | wide_dict_15x600_sync | 15.7 ms | 13.9 ms: 1.13x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_15x600_sync | 15.8 ms | 14.0 ms: 1.13x faster | +-----------------------------------------+---------+-----------------------+ | sequential_1000_compilation | 186 ms | 167 ms: 1.11x faster | +-----------------------------------------+---------+-----------------------+ | wide_dict_9x1200_sync | 19.1 ms | 17.3 ms: 1.10x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_9x1200_sync | 19.0 ms | 17.3 ms: 1.10x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_10x_checkpoint_sync | 23.4 ms | 21.7 ms: 1.08x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_10x_checkpoint | 27.8 ms | 26.6 ms: 1.05x faster | +-----------------------------------------+---------+-----------------------+ | sequential_1000_sync | 441 ms | 425 ms: 1.04x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_10x | 26.5 ms | 25.7 ms: 1.03x faster | +-----------------------------------------+---------+-----------------------+ | sequential_1000 | 500 ms | 486 ms: 1.03x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_15x600_compilation | 416 us | 407 us: 1.02x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_25x300_checkpoint | 34.0 ms | 33.5 ms: 1.02x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_100x_sync | 700 ms | 690 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | wide_dict_25x300_checkpoint | 33.8 ms | 33.4 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | pydantic_state_9x1200_checkpoint_sync | 59.1 ms | 58.4 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | pydantic_state_15x600_checkpoint_sync | 68.5 ms | 67.7 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | wide_dict_25x300_checkpoint_sync | 29.6 ms | 29.3 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | pydantic_state_9x1200_checkpoint | 64.8 ms | 64.2 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_100x | 733 ms | 726 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_15x600_checkpoint | 53.6 ms | 53.1 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_25x300_checkpoint_sync | 29.7 ms | 29.4 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_100x_checkpoint_sync | 701 ms | 695 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | wide_state_9x1200_checkpoint_sync | 39.0 ms | 38.7 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | react_agent_100x_checkpoint | 738 ms | 732 ms: 1.01x faster | +-----------------------------------------+---------+-----------------------+ | pydantic_state_25x300_sync | 19.2 ms | 19.0 ms: 1.01x faster | +---------------------------------------
Benchmark results: libs/langgraph/langgraph/callbacks.py#L0
........... WARNING: the benchmark result may be unstable * the standard deviation (4.50 ms) is 12% of the mean (37.6 ms) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. fanout_to_subgraph_10x: Mean +- std dev: 37.6 ms +- 4.5 ms ........... WARNING: the benchmark result may be unstable * Not enough samples to get a stable result (95% certainly of less than 1% variation) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. fanout_to_subgraph_10x_sync: Mean +- std dev: 32.6 ms +- 0.3 ms ........... WARNING: the benchmark result may be unstable * the standard deviation (4.24 ms) is 11% of the mean (39.4 ms) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. fanout_to_subgraph_10x_checkpoint: Mean +- std dev: 39.4 ms +- 4.2 ms ........... WARNING: the benchmark result may be unstable * Not enough samples to get a stable result (95% certainly of less than 1% variation) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. fanout_to_subgraph_10x_checkpoint_sync: Mean +- std dev: 34.5 ms +- 0.4 ms ........... fanout_to_subgraph_100x: Mean +- std dev: 350 ms +- 21 ms ........... WARNING: the benchmark result may be unstable * Not enough samples to get a stable result (95% certainly of less than 1% variation) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. fanout_to_subgraph_100x_sync: Mean +- std dev: 339 ms +- 20 ms ........... fanout_to_subgraph_100x_checkpoint: Mean +- std dev: 364 ms +- 21 ms ........... WARNING: the benchmark result may be unstable * Not enough samples to get a stable result (95% certainly of less than 1% variation) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. fanout_to_subgraph_100x_checkpoint_sync: Mean +- std dev: 354 ms +- 20 ms ........... WARNING: the benchmark result may be unstable * Not enough samples to get a stable result (95% certainly of less than 1% variation) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. react_agent_10x: Mean +- std dev: 25.7 ms +- 0.8 ms ........... WARNING: the benchmark result may be unstable * Not enough samples to get a stable result (95% certainly of less than 1% variation) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze results. Use --quiet option to hide these warnings. react_agent_10x_sync: Mean +- std dev: 21.9 ms +- 0.7 ms ........... WARNING: the benchmark result may be unstable * Not enough samples to get a stable result (95% certainly of less than 1% variation) Try to rerun the benchmark with more runs, values and/or loops. Run 'python3 -m pyperf system tune' command to reduce the system jitter. Use pyperf stats, pyperf dump and pyperf hist to analyze