API Communication
Request Caching
Pages often contain multiple components that require the same backend data. Since we are using many smart components which are responsible for loading their own data, they may issue identical HTTP requests when initialized. While this can be addressed with a parent page component that loads all the data required by child components, such a design violates the single-responsibility principle and makes the code harder to maintain.
Thus, we occasionally design components to load the data they need. To avoid duplicate requests, the frontend uses cashew, which is configured in app.config.ts. The current configuration routes all HTTP requests through cashew, which merges parallel requests into a single backend request. Although cashew also supports response caching, this feature is intentionally disabled. Cache invalidation is difficult to handle correctly and previously caused inconsistent application state that could only be resolved by reloading the application. Caching specific data sets, such as solution and task files, may be reconsidered in the future if performance optimizations become necessary.
The cashew repositories were taken offline without warning in June 2026. The dependency should therefore be considered for removal.