Project releases

RuVector browser storage now waits for the save to finish

The npm browser package 0.2.1 fixes no-op persistence: saving waits for an IndexedDB commit and loading returns a database or a visible error.

GitHub activity: · Published:

Save, commit, reload

A completed save now means a committed snapshot—not a promise that browser storage lasts forever.

Explanatory diagram · not live telemetry
Explanatory connectionsIn-page vectors become a named snapshot. Commit precedes success; reload restores vectors and metadata and rebuilds the index. Errors follow a separate visible branch.Explanatory connectionsIn-page vectors become a named snapshot. Commit precedes success; reload restores vectors and metadata and rebuilds the index. Errors follow a separate visible branch.

In-page vectors

Populated VectorDB

Named snapshot

Vectors + metadata, one versioned record

IndexedDB commit

Save resolves only after commit

Errors stay visible

Abort, quota or invalid payload reject

Reload + rebuild

Load the name; rebuild the index

What changed

RuVector’s browser package now saves a vector database to IndexedDB and can load it in a later session. Version 0.2.0 reported success without writing data and left loading unfinished. In 0.2.1, save resolves only after the transaction commits; load returns a database or a clear error rather than silently leaving an empty one.

The versioned snapshot stores vectors and metadata together; loading rebuilds the search index. Pick a stable database name before saving. The maintainers report a real page-reload round trip and browser regression tests, not a newsroom reproduction. The npm package is @ruvector/wasm 0.2.1; the corresponding Rust crate is ruvector-wasm 2.3.1.

Get started

Use an existing browser application with WASM initialized and a populated VectorDB. This release is browser-local.

Documentation-verified only. We did not install this release, execute these commands or reproduce the maintainers’ tests.

npm install @ruvector/wasm@0.2.1
db.setDbName('my_vector_db');
await db.saveToIndexedDB();
const restored = await VectorDB.loadFromIndexedDB('my_vector_db');

This persistence release documents no MCP endpoint or npx skills setup. A project-specific demo for this fix was not verified.

Use it today

Save a small populated browser database under a stable name. Reload the page, then compare both stored metadata and search results. A thrown exception means the save or load did not succeed.

Experimental commentary — acceptance test

Measure memory and reload time with your own dataset. Acceptance: recreate the page context, load the named snapshot and recover the same vectors and metadata. A JavaScript variable round trip alone does not test page-reload persistence.

Limits and verification

  • This sequence is not a standalone app: initialize WASM and create/populate db first using the direct VectorDB API.
  • The separately maintained npm/wasm TypeScript wrapper was updated but not published in this release. No broader wrapper helpers are promised.
  • The snapshot is one JSON string. Browser quotas and eviction still apply; commit is not perpetual backup or cloud synchronization.
  • Maintainers reviewed abort/quota error handling but did not force those failures in tests.

Read the original on RuVector WASM v2.3.1 release

ruvector-wasm-v2.3.1

RuVector repository

Back to the newsroom