# What changed in lancedb

> 112 changes in lancedb 0.38 to 0.40 from its official release notes, upgrade guides and advisories: 14 breaking, 1 security, 60 new APIs and options. Each one cited. Sources checked 2026-10-24. HTML: https://unstale.sh/pypi/lancedb/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## lancedb 0.40

### Breaking changes

- A Function binding is retired when its output columns are dropped. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- `.` and `..` are no longer allowed as table names. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)

### Security

- Authentication headers are redacted from debug logs. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)

### New APIs and options

- The remote client now supports add_columns with a schema. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Node BlobFile exposes seek, tell, bounded read, readRanges, and close. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Blob reads in Node can now accept an AbortSignal for cancellation. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds an index builder for BloomFilter indexes. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Python CrossEncoder calls can pass batch_size and other CrossEncoder kwargs. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Clients can list a table's per-row Function errors. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Function initialization is carried in the canonical model. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Functions can be addressed by namespace path. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Registered Functions are represented by OCI image identity. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Python Functions now support initialization and shipped helper code. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Materialized views can be grouped by the IVF partition of a vector column. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- The Python SDK can pause and resume jobs. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds a JSON field helper for Node.js. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds APIs for working with materialized views through remote clients. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Materialized views can now be grouped using GROUP BY. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Materialized views can be defined by a query, with Functions in FROM position. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Makes MetadataEraserExec public for Rust developers. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- SQL now exposes composable native vector relations. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds an index builder for NGram indexes. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- OAuth now uses the oauth2 crate and supports configurable client authentication. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds a persistent OAuth token cache and session APIs for retaining authentication state. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- OIDC support now includes resource and audience. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds remote catalogs and Python and TypeScript bindings. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds an index builder for RTree indexes. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds named Secrets, bindings, and namespace addressing. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Node Table.add now exposes allowExternalBlobOutsideBases. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds a TypeSafe reranker to the Python SDK. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds opt-in request batching for TypeSafeReranker. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds native vector deduplication and partitioned materialized-view refresh in SQL. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds create, read, update, and delete APIs for views. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Adds a Rust zonemap index builder; zonemap index type support is also widened. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)

### Behavior and default changes

- drop_function now returns a cleanup job. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- drop_view now returns a cleanup job. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Hybrid search deduplicates results by primary key on MemWAL tables. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)

### Fixes and other changes

- Keeps computed-column freshness across branches and clones. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Accepts all-null batches and plain JSON strings for JSON columns. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Node now supports LargeUtf8 and LargeBinary Arrow columns. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- open_table and create_table return InvalidTableName instead of panicking for invalid table names. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Pins remote BlobFile reads to the version that was opened. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Remote materialized-view drops now accept synchronous calls. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Ranks each result list separately during RRF multivector reranking. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Sync hybrid queries now apply the default limit of 10. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)
- Node and Python table.update write NaN and infinity as SQL literals. (0.40.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.40.0)

## lancedb 0.39

### Breaking changes

- Blob table creation no longer enables stable row IDs. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Computed column rows are recomputed when their inputs change. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- A new job API replaces `get_job`. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- The `get_job` API is replaced by `describe_job`. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- The `job_history` API is replaced by `query_job_events`. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- A new job event query API replaces `job_history`. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)

### New APIs and options

- Remote SQL queries can be run asynchronously. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Node adds blob v2 fetch and field helpers. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Client APIs are added to drop functions. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Materialized views support function columns. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Client APIs are added to list functions. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Remote table merge insert accepts multiple columns in `on`. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Blob function signatures can be nested. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)

### Behavior and default changes

- Remote Function CRUD routes are aligned. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Materialized view definitions record the source namespace. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Named function outputs can be nullable. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)

### Fixes and other changes

- Offsets are applied when combining async hybrid results. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Remote create index forwards the replace flag. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Nested-list data is supported by FTS indexing. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Function output list children are compared by type only. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Repeated job pagination tokens are rejected. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Namespace drop errors are preserved. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Node preserves the optimize cleanup timestamp. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)
- Duplicate take offsets are preserved. (0.39.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.39.0)

## lancedb 0.38

### Breaking changes

- Branch merge is renamed to cherry_pick. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Node.js parsed embedding configurations are keyed by vector column. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Index catch-up must be recorded and explicitly activated. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- The Node.js package now requires Node 22 or later. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- The Python package now requires Pydantic v2. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Table existence is now determined by the manifest. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)

### New APIs and options

- Blob computed columns can be refreshed. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Writes can accept blob URIs. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Blob v2 UDF signatures are supported. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Computed columns can be declared using SQL expressions. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Computed columns are supported on remote tables. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Functions can declare conda environments. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- The data loader supports remote tables. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- An asynchronous drop table API is available. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Python function versions can be bound to columns. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- First-class function wire contracts are available. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Functions can declare GPU resource requirements. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Function column bindings can be grouped. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Python function signatures support large_utf8. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Full-text search exposes list-element document granularity. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Node.js adds listTables and deprecates tableNames. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- The synchronous Python RemoteTable exposes LSM checkpoint and stats. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Materialized view declarations are supported on local tables. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Materialized views can be refreshed. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Python supports nested Function Arrow types. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- StreamingDataset adds on_transform_error fault tolerance. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Scalar function authoring and a catalog client are available. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- StreamingDataset supports sequence packing. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)

### Behavior and default changes

- A computed-column batch can read its own earlier declarations. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Data loader reads pin the base table version. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- A materialized view refresh is bound to the view incarnation. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- refresh_column_async now returns a job handle. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Refresh job results are returned with typed results. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Backpressure is added to the StreamingDataset post-transform queue. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Table listings are paged using the store's own cursor. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Python update filters accept expressions. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)

### Fixes and other changes

- Filters now support double-quoted identifiers. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Multiple function bindings are allowed per table. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Non-null Function inputs are accepted for nullable parameters. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Hybrid search no longer silently ignores offset(). (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- The MemWAL LSM surface is brought to parity across SDKs. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
- Remote table_names no longer invents a page token for a namespace. (0.38.0) — [release notes](https://github.com/lancedb/lancedb/releases/tag/v0.38.0)
