# Mem0 ts-v3.1.4 — Mem0 Node SDK (3.1.4) - Product: Mem0 (https://whatsnew.fyi/product/mem0) - Vendor: Mem0 - Date: 2026-08-04 - Version: ts-v3.1.4 - Original notes: https://github.com/mem0ai/mem0/releases/tag/ts-v3.1.4 - Permalink: https://whatsnew.fyi/product/mem0/releases/ts-v3.1.4 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add `referenceDate` and `keywordSearch` to `SearchMemoryOptions` in the TypeScript client - **fixed** — Remove the `/v1/ping/` identity/telemetry call from the request critical path by resolving it in the background through a shared, credentials-keyed promise cache - **fixed** — Issue `deleteUsers()` per-entity DELETE requests through the shared fetch-based helper to reuse pooled connections instead of creating fresh TCP/TLS handshakes per entity - **fixed** — Prevent `add()` metadata from setting or overwriting a memory's identity scope by running metadata through the same `stripIdentityKeys()` helper as `update()` - **fixed** — Fix Redis `search()` and `list()` building an invalid empty RediSearch filter expression when `filters` was an empty object or contained only null/undefined values **New Features:** - **Client:** Add `referenceDate` and `keywordSearch` to `SearchMemoryOptions`, keeping the TypeScript client's typed search options in sync with the Platform API ([#6696](https://github.com/mem0ai/mem0/pull/6696)) **Bug Fixes:** - **Client:** Take the `/v1/ping/` identity/telemetry call off the request critical path. Every method previously did `if (this.telemetryId === "") await this.ping();`, blocking the first call on each client instance on a network round trip; the ping now resolves in the background through a shared, credentials-keyed promise cache (FIFO-capped at 50 entries), so concurrent clients on the same host/API key share one ping instead of issuing one each, and a failed ping is not cached so the process can retry ([#6788](https://github.com/mem0ai/mem0/pull/6788)) - **Client:** `deleteUsers()` now issues its per-entity DELETE requests through the shared `fetch()`-based helper instead of the axios instance, which defaulted to `keepAlive: false`. Deleting every user, agent, app, and run now reuses pooled connections instead of paying a fresh TCP/TLS handshake per entity ([#6788](https://github.com/mem0ai/mem0/pull/6788)) - **Memory (OSS):** Stop `add()` metadata from setting or overwriting a memory's identity scope. Metadata now runs through the same `stripIdentityKeys()` helper as `update()`, so `user_id`/`agent_id`/`run_id` (snake_case or camelCase) and `actor_id` passed in metadata can no longer place a memory into a scope the caller didn't request through `userId`/`agentId`/`runId`/`filters` ([#6377](https://github.com/mem0ai/mem0/pull/6377)) - **Vector Stores:** Fix Redis `search()` and `list()` building an invalid, empty RediSearch filter expression when `filters` was an empty object or contained only null/undefined values. The shared `buildRedisFilterExpr()` helper now falls back to `"*"` (match all) instead of joining zero conditions into `""` ([#6014](https://github.com/mem0ai/mem0/pull/6014))