#2537·CasaOS

[Bug] App Store grid fails to render (TypeError reading 'name') when only a v2-schema 3rd-party store is registered

Author: decrackillCreated Jul 13, 2026Updated Sep 4, 2026
Labelsbug

Describe the bug

The App Store grid fails to render completely (stays blank) when only a third-party app store using the store-config.json schema "version": 2 is registered (such as bigbeartechworld/big-bear-casaos).

The browser DevTools console shows the following frontend crash:

TypeError: Cannot read properties of undefined (reading 'name')
    at fn (AppPanel.vue?:/node_modules/casaos-ui/.../AppPanel.vue:306:38)
    at normalized (vue.esm.js:2315:41)
    at Proxy.renderSlot (vue.esm.js:1993:13)

Root cause:

  1. Backend: The endpoint /v2/app_management/appstore returns an array of registered stores but fails to expose a top-level name field for custom v2 repositories. As shown in the logs below, the backend throws an extension x-casaos not found error inside service.(*App).StoreInfo when attempting to parse the store structure.
  2. Frontend: The Vue engine in AppPanel.vue strictly assumes store.name (or currentCate.name / currentAuthor.name) is always defined. When it receives the payload with undefined fields, it throws an unhandled exception which crashes the entire app grid mount lifecycle.

To Reproduce

  1. Have the default casaos.app store fail or be unregistered.
  2. Register only a third-party store that uses the store-config.json v2 schema (e.g., bigbeartechworld).
  3. Open the App Store panel in the CasaOS web UI.
  4. Observe that the main application grid stays entirely blank/empty.
  5. Open the browser's Developer Tools (F12) and see the TypeError console crash.

Expected behavior

The App Store should parse third-party index schemas gracefully. If the top-level name field is missing from the API response or formatted as a localized object under the version 2 specification, the UI should fallback safely to a default string or the repository URL instead of hard-crashing the render process.

Screenshot

Image

Desktop (please complete the following information):

  • OS: Ubuntu 26.04 LTS (x86_64 Server, headless)
  • Browser: Brave (Chromium-based)
  • Version: CasaOS-UI v0.4.25 / CasaOS-AppManagement v0.4.10-alpha2

System Time

               Local time: Sun 2026-07-12 23:41:57 -05
           Universal time: Mon 2026-07-13 04:41:57 UTC
                 RTC time: Mon 2026-07-13 04:41:57
                Time zone: America/Bogota (-05, -0500)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Logs

Output from sudo journalctl -u casaos-app-management --since "10 min ago" --no-pager:

jul 13 04:40:56 nexus casaos-app-management[51081]: 2026-07-13T04:40:56.453Z    error    extension x-casaos not found        {"func": "service.(*App).StoreInfo", "file": "/home/runner/work/CasaOS-AppManagement/CasaOS-AppManagement/service/app.go", "line": 18}
jul 13 04:40:56 nexus casaos-app-management[51081]: {"time":"2026-07-13T04:40:56.554528468Z","id":"","remote_ip":"192.168.1.15","host":"192.168.1.11","method":"GET","uri":"/v2/app_management/web/appgrid","user_agent":"Mozilla/5.0...","status":200,"latency_human":"185.24ms","bytes_out":751}
jul 13 04:41:56 nexus casaos-app-management[51081]: 2026-07-13T04:41:56.456Z    error    extension x-casaos not found        {"func": "service.(*App).StoreInfo", "file": "/home/runner/work/CasaOS-AppManagement/CasaOS-AppManagement/service/app.go", "line": 18}
jul 13 04:45:30 nexus casaos-app-management[51081]: 2026-07-13T04:45:30.920Z    info     appstore size not changed           {"url": "[https://github.com/bigbeartechworld/big-bear-casaos/archive/refs/heads/master.zip](https://github.com/bigbeartechworld/big-bear-casaos/archive/refs/heads/master.zip)", "func": "service.(*appStore).UpdateCatalog", "line": 91}

(Note: Other modules such as casaos-gateway, casaos-user-service and casaos.service were checked and showed normal operations / HTTP 200 OK Pings without backend exceptions).

Additional context

This behavior was uncovered after clean-installing via get.casaos.io. The automated setup downloaded mismatched versions independently (UI v0.4.25 combined with an alpha app-management binary).

Simultaneously, the default casaos.app repository endpoint suffered a temporary TLS certificate validation issue on the server side (mismatched common name pointing to wildcard github domain properties), forcing its removal. Once the primary store was deleted and only the v2-schema custom store remained, the frontend logic hit this uncaught reference error.

Workaround applied: Manually patched the compiled UI JavaScript bundle to validate the presence of the properties before calling .name, which successfully restored the grid functionality. Not using a ZimaBoard device.

P.S. Finding this bug past midnight was wild JAJAJ. Honestly, studying anthropology makes you appreciate this: watching the frontend have a literal identity crisis and hard-crash just because it couldn't find a 'name' field was a fascinating phenomenon to witness. Vue.js took the missing text way too personally and chose absolute silence. Highly dramatic. Both the server and I definitely need a sudo poweroff at this point. I hope this helps! :D