Persian character "ی" changes to Arabic "ي" during caching, breaking filters
Nobody has claimed this yet.
- Dominant language
- Clojure
- Stars
- 49.3k
- Forks
- 6.8k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 653
Description
### Describe the bug
Hello Metabase Team,
We are currently using Metabase for our company dashboards, which include data in Persian. We have encountered a caching/encoding regression that disrupts our users' ability to search and filter data.
The Issue:
When text containing the Persian character "ی" (Farsi Yeh) is cached, it eventually converts to the Arabic character "ي" (Arabic Yeh), which breaks searching and filtering for any items containing that letter.
Users trying to filter a dashboard using the correct Persian "ی" will find no results because the cached data now uses "ي".
We believe this is a regression, as we did not experience this problem in earlier versions of Metabase.
Could the team investigate how the caching layer handles Unicode normalization for this character? Fixing this would be a massive help to your Persian-speaking user base.
Thank you for your hard work on this excellent tool.
### To Reproduce
If the database has any fields with the letter it's produced automatically when needed to be included in a check list selection.
### Expected behavior
_No response_
### Logs
_No response_
### Information about your Metabase installation
```JSON
{
"browser-info": {
"language": "en-US",
"platform": "Win32",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:153.0) Gecko/20100101 Firefox/153.0",
"vendor": ""
},
"metabase-info": {
"databases": [
"postgres",
"sqlite",
"sqlserver"
],
"run-mode": "prod",
"plan-alias": "",
"version": {
"date": "2026-08-06",
"tag": "v0.63.5.2",
"hash": "ab2966c"
},
"settings": {
"report-timezone": "Asia/Tehran"
},
"hosting-env": "unknown",
"application-database": "postgres",
"application-database-details": {
"database": {
"name": "PostgreSQL",
"version": "18.3 (Debian 18.3-1.pgdg13+1)"
},
"jdbc-driver": {
"name": "PostgreSQL JDBC Driver",
"version": "42.7.12"
}
}
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "25.0.3+9-LTS",
"java.vendor": "Eclipse Adoptium",
"java.vendor.url": "https://adoptium.net/",
"java.version": "25.0.3",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "25.0.3+9-LTS",
"jvm.available-processors": 10,
"jvm.max-memory": "7.8 GB",
"os.name": "Linux",
"os.version": "6.8.0-137-generic",
"system.total-memory": "31.3 GB",
"user.language": "en",
"user.timezone": "GMT"
}
}
```
### Severity
It disrupts user's ability to find items in the lists and filtering.
### Additional context
_No response_
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the cache-to-filter path described in the issue with a value containing Persian "ی", comparing the original and cached values. Trace the caching layer and checklist-selection filtering flow; done means the character remains unchanged through caching and filtering returns the expected item, with regression coverage for this case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- clojure
- Domain
- backend, internationalization, search
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 42/100