Files
langgraphjs/libs/checkpoint-mongodb
John Kennedy 8fb6376a75 chore: update Vitest to 4.1.9 (#2587)
## Summary
- update all workspace `vitest` declarations to `4.1.9`
- update `@vitest/browser-playwright` and `@vitest/browser-webdriverio`
declarations to `4.1.9`
- refresh `pnpm-lock.yaml` so no `vitest`/`@vitest/browser` versions
below `4.1.9` remain

## Validation
- `sfw pnpm install`
- `pnpm format:check`
- `pnpm lint`
- `pnpm build`
- targeted audit check: no `vitest` or `@vitest/browser` advisories
remain
- `pnpm --filter create-langgraph test`
- `pnpm --filter @langchain/react test`
- `pnpm --filter @langchain/svelte test`
- `pnpm --filter @langchain/vue test`
- `pnpm --filter @langchain/angular test`
- `pnpm --filter @langchain/langgraph test`

## Notes
- `pnpm --filter @langchain/langgraph test:browser` did not run locally
because Playwright Chromium for the updated provider was not installed
on this machine; Vitest exited before running tests with Playwright's
`pnpm exec playwright install` message.
- The SDK Vitest suites passed but printed Vitest's post-success
close-timeout warning.

Co-authored-by: John Kennedy <jkennedyvz@users.noreply.github.com>
2026-07-03 23:18:35 -07:00
..
2024-08-23 12:43:37 -07:00
2026-06-22 11:40:07 -07:00
2024-08-23 12:43:37 -07:00
2025-07-02 02:35:57 +02:00

@langchain/langgraph-checkpoint-mongodb

Implementation of a LangGraph.js CheckpointSaver that uses a MongoDB instance.

Usage

import { MongoClient } from "mongodb";
import { MongoDBSaver } from "@langchain/langgraph-checkpoint-mongodb";

const writeConfig = {
  configurable: {
    thread_id: "1",
    checkpoint_ns: ""
  }
};
const readConfig = {
  configurable: {
    thread_id: "1"
  }
};


const client = new MongoClient(process.env.MONGODB_URL);

const checkpointer = new MongoDBSaver({ client });

// NOTE: you need to call .setup() the first time you're using your checkpointer
await checkpointer.setup();

const checkpoint = {
  v: 1,
  ts: "2024-07-31T20:14:19.804150+00:00",
  id: "1ef4f797-8335-6428-8001-8a1503f9b875",
  channel_values: {
    my_key: "meow",
    node: "node"
  },
  channel_versions: {
    __start__: 2,
    my_key: 3,
    "start:node": 3,
    node: 3
  },
  versions_seen: {
    __input__: {},
    __start__: {
      __start__: 1
    },
    node: {
      "start:node": 2
    }
  },
  pending_sends: [],
}

// store checkpoint
await checkpointer.put(writeConfig, checkpoint, {}, {});

// load checkpoint
await checkpointer.get(readConfig);

// list checkpoints
for await (const checkpoint of checkpointer.list(readConfig)) {
  console.log(checkpoint);
}

await client.close();

TTL (Time-To-Live) Support

Automatically expire old checkpoints using MongoDB's TTL indexes:

import { MongoClient } from "mongodb";
import { MongoDBSaver } from "@langchain/langgraph-checkpoint-mongodb";

const client = new MongoClient(process.env.MONGODB_URL);

// Create checkpointer with 1-hour TTL (in seconds)
const checkpointer = new MongoDBSaver({
  client,
  ttl: 3600,
});

// Create TTL indexes (call during deployment/startup)
await checkpointer.setup();

When TTL is enabled:

  • An upserted_at timestamp is added to each document on every write
  • MongoDB automatically deletes documents after the TTL expires
  • Each update resets the expiration timer

The setup() method creates the required TTL indexes. Call it during application startup or deployment. It is idempotent and handles concurrent calls safely.