Skip to content

chore: evaluate new features from major web dependency upgrades (PR #389) #391

@Aureliolo

Description

@Aureliolo

Context

PR #389 bumps 9 major npm dependencies in /web. Beyond just compatibility, these upgrades bring significant new features and improvements worth evaluating and adopting.

Packages to investigate

1. ECharts 5 → 6

  • New theme: Updated default visual style (colors, legend position at bottom, axis anti-overflow). Review chart appearance and decide whether to keep the new theme or restore v5 theme via import 'echarts/theme/v5'
  • New chart types: chord series, matrix coordinate system — potential for analytics dashboards
  • Dynamic themes: Support for registering and switching themes at runtime
  • Scatter jittering: Useful for data visualization
  • Axis breaks: Visual axis breaks for discontinuous data
  • Performance: Memory leak fix in tooltip, various rendering fixes

2. Vue-ECharts 7 → 8

  • Smart update strategy: More efficient chart updates — evaluate if this simplifies our SpendingChart.vue and SpendingSummary.vue
  • Tooltip/data view slots: Render Vue components inside ECharts tooltips
  • CSS border-radius: Works out-of-the-box now

3. Vite 6 → 8 (via 7)

  • Rolldown replaces Rollup + esbuild: Significant build performance improvements
  • Browser console forwarding: Dev server shows browser console logs/errors
  • Integrated devtools: Built-in Vite devtools
  • Build performance: Rolldown is faster than Rollup
  • Note: We skip Vite 7 entirely (short-lived transitional version)

4. Vitest 3 → 4

  • aroundEach/aroundAll hooks: Wrap test lifecycle for setup/teardown patterns
  • Tags: Tag tests for selective execution
  • mockThrow/mockThrowOnce: Cleaner error mocking
  • --detect-async-leaks: Find async resource leaks in tests
  • coverage.changed: Report coverage only for changed files — useful for dev workflow
  • Chai-style assertions: Alternative assertion syntax
  • Static test collection: vitest list can collect tests without running files

5. ESLint 9 → 10

  • 3 new recommended rules: no-unassigned-vars, no-useless-assignment, preserve-caught-error — evaluate adding these to our config
  • JSX reference tracking: Better scope analysis (relevant if we add JSX)
  • Security fixes: Updated ajv and minimatch for vulnerabilities

6. eslint-plugin-vue 9 → 10

  • vue/block-order added to essential config (replaces deprecated vue/component-tags-order)
  • New essential rules: vue/no-deprecated-delete-set, vue/no-deprecated-model-definition, vue/valid-define-options
  • vue/no-required-prop-with-default in recommended — evaluate adopting
  • Performance: vue-eslint-parser v10 has TypeScript parsing improvements

7. vue-tsc 2 → 3

  • Hybrid Mode always on: Better IDE/CLI type-check alignment
  • Stricter checking options: strictSlotChildren, strictVModel, strictCssModules — evaluate enabling
  • resolveStyleImports: Type-safe CSS module imports

8. jsdom 26 → 28

  • Review changelog for any test environment improvements or new Web API support

Acceptance criteria

  • Visual review of ECharts 6 theme on budget charts (SpendingChart, SpendingSummary)
  • Evaluate smart update strategy in vue-echarts 8
  • Evaluate new ESLint/vue rules for adoption
  • Evaluate vue-tsc 3 strict options
  • Evaluate Vitest 4 coverage.changed and --detect-async-leaks for CI/dev workflow
  • Document any adopted improvements

Metadata

Metadata

Assignees

No one assigned

    Labels

    prio:lowNice to have, can deferscope:smallLess than 1 day of worktype:choreMaintenance, cleanup, dependency updatesv0.4Minor version v0.4v0.4.9Patch release v0.4.9

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions