Before submitting, make sure you've checked the following:
Target branch: Please verify that the pull request targets the dev branch.
Description: Provide a concise description of the changes made in this pull request.
Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
Documentation: Have you updated relevant documentation Open WebUI Docs, or other documentation sources?
Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
Testing: Have you written and run sufficient tests to validate the changes?
Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
Prefix: To clearly categorize this pull request, prefix the pull request title using one of the following:
BREAKING CHANGE: Significant changes that may affect compatibility
build: Changes that affect the build system or external dependencies
ci: Changes to our continuous integration processes or workflows
chore: Refactor, cleanup, or other non-functional code changes
docs: Documentation update or addition
feat: Introduces a new feature or enhancement to the codebase
fix: Bug fix or error correction
i18n: Internationalization or localization changes
perf: Performance improvement
refactor: Code restructuring for better maintainability, readability, or scalability
style: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.)
test: Adding missing tests or correcting existing tests
WIP: Work in progress, a temporary label for incomplete or ongoing work
Changelog Entry
Description
Addresses an Uncaught (in promise) TypeError: locales is undefined that could occur in src/lib/components/common/Collapsible.svelte's loadLocale function. This error happened when the $i18n.languages value, passed as locales, was undefined or not an array during initial component rendering or reactive updates. The fix adds a defensive check to ensure locales is a valid array before attempting to iterate over it, preventing the runtime error and improving component stability.
Fixed
Uncaught (in promise) TypeError: locales is undefined at Collapsible.svelte:16 when $i18n.languages is undefined or not an array.
Additional Information
This error was observed particularly when opening Workspace tabs in a new tab in LibreWolf browser, followed by quickly checking the browser console in a dev environment. This suggests a potential race condition or an initial state where the i18n store's languages property might not be immediately available or fully populated.
The added guard if (!locales || !Array.isArray(locales)) { return; } ensures that the for...of loop is only executed when locales is a valid array, thus preventing the TypeError.
The loadLocale function now gracefully handles cases where locales is null, undefined, or not an array, returning early to prevent runtime errors.
Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/open-webui/open-webui/pull/14640
**Author:** [@silentoplayz](https://github.com/silentoplayz)
**Created:** 6/3/2025
**Status:** ✅ Merged
**Merged:** 6/4/2025
**Merged by:** [@tjbck](https://github.com/tjbck)
**Base:** `dev` ← **Head:** `locales-is-undefined-typeerror-fix`
---
### 📝 Commits (1)
- [`86111ad`](https://github.com/open-webui/open-webui/commit/86111ad44ab2e97a911b91beb5ce2d4bfd4db43b) fix: Uncaught (in promise) TypeError: locales is undefined in `Collapsible.svelte`
### 📊 Changes
**1 file changed** (+3 additions, -0 deletions)
<details>
<summary>View changed files</summary>
📝 `src/lib/components/common/Collapsible.svelte` (+3 -0)
</details>
### 📄 Description
# Pull Request Checklist
**Before submitting, make sure you've checked the following:**
- [x] **Target branch:** Please verify that the pull request targets the `dev` branch.
- [x] **Description:** Provide a concise description of the changes made in this pull request.
- [x] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description.
- [x] **Documentation:** Have you updated relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs), or other documentation sources?
- [x] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation?
- [x] **Testing:** Have you written and run sufficient tests to validate the changes?
- [x] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
- [x] **Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following:
- **BREAKING CHANGE**: Significant changes that may affect compatibility
- **build**: Changes that affect the build system or external dependencies
- **ci**: Changes to our continuous integration processes or workflows
- **chore**: Refactor, cleanup, or other non-functional code changes
- **docs**: Documentation update or addition
- **feat**: Introduces a new feature or enhancement to the codebase
- **fix**: Bug fix or error correction
- **i18n**: Internationalization or localization changes
- **perf**: Performance improvement
- **refactor**: Code restructuring for better maintainability, readability, or scalability
- **style**: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.)
- **test**: Adding missing tests or correcting existing tests
- **WIP**: Work in progress, a temporary label for incomplete or ongoing work
# Changelog Entry
### Description
- Addresses an `Uncaught (in promise) TypeError: locales is undefined` that could occur in `src/lib/components/common/Collapsible.svelte`'s `loadLocale` function. This error happened when the `$i18n.languages` value, passed as `locales`, was `undefined` or not an array during initial component rendering or reactive updates. The fix adds a defensive check to ensure `locales` is a valid array before attempting to iterate over it, preventing the runtime error and improving component stability.
### Fixed
- `Uncaught (in promise) TypeError: locales is undefined` at `Collapsible.svelte:16` when `$i18n.languages` is `undefined` or not an array.
### Additional Information
- This error was observed particularly when opening Workspace tabs in a new tab in LibreWolf browser, followed by quickly checking the browser console in a dev environment. This suggests a potential race condition or an initial state where the `i18n` store's `languages` property might not be immediately available or fully populated.
- The added guard `if (!locales || !Array.isArray(locales)) { return; }` ensures that the `for...of` loop is only executed when `locales` is a valid array, thus preventing the `TypeError`.
- The `loadLocale` function now gracefully handles cases where `locales` is `null`, `undefined`, or not an array, returning early to prevent runtime errors.
### Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/14640
Author: @silentoplayz
Created: 6/3/2025
Status: ✅ Merged
Merged: 6/4/2025
Merged by: @tjbck
Base:
dev← Head:locales-is-undefined-typeerror-fix📝 Commits (1)
86111adfix: Uncaught (in promise) TypeError: locales is undefined inCollapsible.svelte📊 Changes
1 file changed (+3 additions, -0 deletions)
View changed files
📝
src/lib/components/common/Collapsible.svelte(+3 -0)📄 Description
Pull Request Checklist
Before submitting, make sure you've checked the following:
devbranch.Changelog Entry
Description
Uncaught (in promise) TypeError: locales is undefinedthat could occur insrc/lib/components/common/Collapsible.svelte'sloadLocalefunction. This error happened when the$i18n.languagesvalue, passed aslocales, wasundefinedor not an array during initial component rendering or reactive updates. The fix adds a defensive check to ensurelocalesis a valid array before attempting to iterate over it, preventing the runtime error and improving component stability.Fixed
Uncaught (in promise) TypeError: locales is undefinedatCollapsible.svelte:16when$i18n.languagesisundefinedor not an array.Additional Information
i18nstore'slanguagesproperty might not be immediately available or fully populated.if (!locales || !Array.isArray(locales)) { return; }ensures that thefor...ofloop is only executed whenlocalesis a valid array, thus preventing theTypeError.loadLocalefunction now gracefully handles cases wherelocalesisnull,undefined, or not an array, returning early to prevent runtime errors.Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.