⚠️ Breaking Change
Impact Score: 7/10
Meilisearch v1.35.0 — Release Notes & Engineering Impact
Source available — automated, not human-reviewed
Component: meilisearch · Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
Breaking-change evidence from the source
Meilisearch v1.35.0 contains improvements to the observability of the search performance, a breaking change to the recently introduced `POST /indexes/<index_uid>/fields` route, and other bugfixes and improvements.
Breaking change: return pagination fields in `POST /indexes/<index_uid>/fields` route
Breaking change**: The `POST /indexes/<index_uid>/fields` route now returns an object containing the `results`, `offset`, `limit`, and `total` fields instead of returning an array of results. This change allows to know how many fields match a given filter
⚡ Executive Summary (TL;DR)
Meilisearch v1.35.0. Source highlight: Meilisearch v1.35.0 contains improvements to the observability of the search performance, a breaking change to the recently introduced `POST /indexes/<index_uid>/fields` route, and other bugfixes and improvements.
Who Does This Impact? (Role-Based Analysis)
💻 Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
📊 Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
⚙️ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
⚠️ Breaking Changes & Deprecations (3)
- Meilisearch v1.35.0 contains improvements to the observability of the search performance, a breaking change to the recently introduced `POST /indexes/<index_uid>/fields` route, and other bugfixes and improvements.
- Breaking change: return pagination fields in `POST /indexes/<index_uid>/fields` route
- Breaking change**: The `POST /indexes/<index_uid>/fields` route now returns an object containing the `results`, `offset`, `limit`, and `total` fields instead of returning an array of results. This change allows to know how many fields match a given filter
✨ New Features & Capabilities (1)
- Add AI usage disclosure guidelines to CONTRIBUTING.md
⚡ Performance & Enhancements (6)
- `POST /indexes/<index_uid>/search`
- `GET /indexes/<index_uid>/search`
- `POST /multi-search`
- `POST /indexes/<index_uid>/similar`
- `GET /indexes/<index_uid>/similar`
- `showPerformanceDetails`: `true`/`false` (boolean)
🔧 Bug Fixes & Patches (2)
- Bump mini-dashboard version to fix display of image in local UI interface
- Fix mTLS compatibility with Go
📄 View Raw Release Notes (Original Developer Log)
Meilisearch v1.35.0 contains improvements to the observability of the search performance, a breaking change to the recently introduced `POST /indexes/<index_uid>/fields` route, and other bugfixes and improvements.
# 🌈 Improvements
## Observe the search performance
The search routes accept a new field named `showPerformanceDetails`. When set to `true`, the search response contains a performance trace, allowing the user to better
understand what takes time during a search query.
**impacted routes:**
- `POST /indexes/<index_uid>/search`
- `GET /indexes/<index_uid>/search`
- `POST /multi-search`
- `POST /indexes/<index_uid>/similar`
- `GET /indexes/<index_uid>/similar`
### Search
routes: `POST /indexes/<index_uid>/search` and `GET /indexes/<index_uid>/search`
#### Request
new request parameters:
- `showPerformanceDetails`: `true`/`false` (boolean)
<details>
<summary>example</summary>
```jsonc
{
"q": "glass",
"showPerformanceDetails": true
}
```
</details>
#### Response
new response field:
- `performanceDetails`: `{"<span>": "<human_duration>", .. }` (map)
<details>
<summary>example</summary>
```jsonc
{
"hits": [
// hits ..
],
"query": "glass",
"processingTimeMs": 5,
"limit": 20,
"offset": 0,
"estimatedTotalHits": 1,
"requestUid": "<uuid>",
"performanceDetails": {
"wait for permit": "295.29µs",
"search > tokenize": "436.67µs",
"search > resolve universe": "649.00µs",
"search > keyword search": "515.71µs",
"search > format": "288.54µs",
"search": "3.56ms"
}
}
```
</details>
### Multi-search
route: `POST /multi-search`
#### Request
new request parameters:
- `queries.showPerformanceDetails`: `true`/`false` (boolean)
<details>
<summary>example</summary>
```jsonc
"queries": [
{
"indexUid": "<index_uid>",
"q": "glass",
"showPerformanceDetails": true
}
]
```
</details>
#### Response
new response field:
- `results.performanceDetails`: `{"<span>": "<human_duration>", .. }` (map)
<details>
<summary>example</summary>
```jsonc
{
"results": [
{
"indexUid": "<index_uid>",
"hits": [
// hits ..
],
"query": "glass",
"processingTimeMs": 5,
"limit": 20,
"offset": 0,
"estimatedTotalHits": 1,
"requestUid": "<uuid>",
"performanceDetails": {
"wait for permit": "295.29µs",
"search > tokenize": "436.67µs",
"search > resolve universe": "649.00µs",
"search > keyword search": "515.71µs",
"search > format": "288.54µs",
"search": "3.56ms"
}
}
]
}
```
</details>
### Federated Search
route: `POST /multi-search`
#### Request
new request parameters:
- `federation.showPerformanceDetails`: `true`/`false` (boolean)
<details>
<summary>example</summary>
```jsonc
{
"federation": { "showPerformanceDetails": true },
"queries": [
{
"indexUid": "<index_uid>",
"q": "glass"
}
]
}
```
</details>
#### Response
new response field:
- `performanceDetails`: `{"<span>": "<human_duration>", .. }` (map)
<details>
<summary>example</summary>
```jsonc
{
"hits": [
// hits ..
],
"query": "glass",
"processingTimeMs": 5,
"limit": 20,
"offset": 0,
"estimatedTotalHits": 1,
"requestUid": "<uuid>",
"performanceDetails": {
"wait for permit": "213.83µs",
"search > tokenize": "171.67µs",
"search > resolve universe": "257.63µs",
"search > keyword search": "577.71µs",
"search > format": "114.96µs",
"search > federation > wait for remote results": "62.71µs",
"search > federation > merge results": "120.04µs",
"search > federation > merge facets": "53.42µs",
"search > federation": "237.04µs",
"search": "289.08ms"
}
}
```
</details>
### Similar
routes: `POST /indexes/<index_uid>/similar` and `GET /indexes/<index_uid>/similar`
#### Request
new request parameters:
- `showPerformanceDetails`: `true`/`false` (boolean)
<details>
<summary>example</summary>
```jsonc
{
"id": 143,
"embedder": "manual",
"showPerformanceDetails": true
}
```
</details>
#### Response
new response field:
- `performanceDetails`: `{"<span>": "<human_duration>", .. }` (map)
<details>
<summary>example</summary>
```jsonc
{
"hits": [
// hits ..
],
"id": "143",
"processingTimeMs": "[duration]",
"limit": 20,
"offset": 0,
"estimatedTotalHits": 4,
"performanceDetails": {
"search > format": "244.92µs",
"search": "1.25ms"
}
}
```
</details>
By @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6132
## Stabilize multithreaded post-processing of facets and prefixes
Multithreaded post-processing of facets and prefixes speeds-up indexing on multi-core machines.
Before v1.35.0, it could be disabled with an [experimental feature](https://github.com/orgs/meilisearch/discussions/862).
Meilisearch v1.35.0 removes that experimental feature, resulting in the multithreaded post-processing being always enabled.
Cloud users upgrading to v1.35.0 will benefit from the speed-up.
By @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6130
# 🦋 Fixes
## Breaking change: return pagination fields in `POST /indexes/<index_uid>/fields` route
> [!WARNING]
> **Breaking change**: The `POST /indexes/<index_uid>/fields` route now returns an object containing the `results`, `offset`, `limit`, and `total` fields instead of returning an array of results. This change allows to know how many fields match a given filter
<details>
<summary>Example: before/after</summary>
Before:
```jsonc
[
// fields ..
]
```
After:
```jsonc
{
"results": [
// [fields .. ]
],
"offset": 0,
"limit": 20,
"total": 0
}
```
</details>
By @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6126
## `POST /indexes/<index_uid>/fields`: Fix pattern filtering when a parent field was matching a child pattern: `title` was matching the pattern `title.to*`.
<details>
<summary>Example: before/after</summary>
For the following request:
```jsonc
{
"filter": {
"attributePatterns": [
"title.en"
]
}
}
```
Before Response, `title` field is returned:
```jsonc
{
"results": [
{
"name": "title",
//metadata...
},
],
"offset": 0,
"limit": 20,
"total": 1
}
```
After Response, nothing returned:
```jsonc
{
"results": [],
"offset": 0,
"limit": 20,
"total": 0
}
```
</details>
By @ManyTheFish, also in https://github.com/meilisearch/meilisearch/pull/6126
## 🐛 Other fixes
* Bump mini-dashboard version to fix display of image in local UI interface by @Strift in https://github.com/meilisearch/meilisearch/pull/6129
* Fix mTLS compatibility with Go by @curquiza in https://github.com/meilisearch/meilisearch/pull/6133
# 🔩 Miscellaneous
- Add AI usage disclosure guidelines to CONTRIBUTING.md by @meili-bot in https://github.com/meilisearch/meilisearch/pull/6114
- Expose SettingsDelta and related types for external crate usage by @MkDev11 in https://github.com/meilisearch/meilisearch/pull/6119
## New Contributors
* @MkDev11 made their first contribution in https://github.com/meilisearch/meilisearch/pull/6119 ❤️
**Full Changelog**: https://github.com/meilisearch/meilisearch/compare/v1.34.3...v1.35.0