mirror of
https://github.com/go-vikunja/vikunja.git
synced 2026-05-06 19:47:47 -05:00
[GH-ISSUE #125] Task editing UI continuously re-renders, causing high CPU usage and some UI issues #5976
Closed
opened 2026-04-20 16:27:06 -05:00 by GiteaMirror
·
11 comments
No Branch/Tag Specified
main
feat-v2-foundation
spike-huma-openapi3
claude/investigate-swagger3-support-nyyUa
feat-list-view-buckets
ci-mysql-8-test
codex/analyze-codebase-for-email-task-feature
feat-project-templates
csv-import-feature
claude/email-reply-comments-wpdcQ
fix-oidc-pkce-support
fix/overview-subtasks-expand
feat/bucket-select-task-detail
feat-soft-delete-projects
claude/review-bot-design-plan-cf5C3
claude/project-scoped-api-tokens-KTqR3
claude/explore-openclaw-integration-KQEzg
claude/project-scoped-api-tokens-yv5KS
fix-duplicate-close-button
feat-list-view-sorting
feat/official-vite-sentry-plugin
feat/highlight-overdue-tasks
feat/add-enter-key-form-submission-handling
feat/TipTap-nits
feat/update-caldavtimetotimestamp-parsing
feat-phosphor-icons
wip-plans
claude/investigate-issue-2173-llKme
fix-description-text-drag
feat-custom-keyboard-shortcuts
pr-1845-ci
codex/fix-drag-and-drop-behavior-inconsistency
copilot/add-clickable-labels-for-filtering
copilot/fix-issue-1786
playwright-migration
fix-kanban-repeating-wip
copilot/fix-1498
feature/replace-axios
codex/upgrade-to-tailwind-4.1.8-using-pnpm
codex/add-cypress-test-for-avatar-types
feature/biome
feature/oxc
codex/update-flexsearch-to-0.8.205
4r6ni9-codex/fix-deprecated-sass-@import-usage
codex/fix-deprecated-sass-@import-usage
codex/add-cypress-test-for-task-list-refresh-fix
codex/fix-quick-add-magic-not-adding-tasks
codex/fix-all-type-errors
codex/fix-mimetype-for-docs.json
feature/caldav-from-scratch
feature/gh-actions-hetzner
fix-ci
feat/new-logger
jyte-better-dev-config
feat/add-team-member-with-enter
fix/button-and-icon-types
fix/notifications-component-name-collision
feature/null-time
renovate/tailwindcss-4.x
feature/unplugin-vue-router
fix/deprecated-import
feature/zod-schema
renovate/golangci-golangci-lint-1.x
fix/tiptap-editor-reactive-destructuring
release/0.24
feat/improve-add-task
fix/saved-filter-search
feat/webp-and-avif-attachment-previews
feature/migrate-back-to-bulma
fix/sass-add-missing-list-import
feature/sticky-demo-bar
fix/gantt-view-switch
feature/typesense-position-join
feature/focus-visible
dependencies/golangci-lint
feature/better-filter-syntax
fix/tiptap-task-list
renovate/github.com-golang-jwt-jwt-v4-5.x
feature/hide-forbidden-related-tasks
renovate/golang-1.x
release/0.20
release/0.17
release/0.16
release/0.15
release/0.14
v2.3.0
v2.2.2
v2.2.1
v2.2.0
v2.1.0
v2.0.0
v1.1.0
v1.0.0
v1.0.0-rc4
v1.0.0-rc3
v1.0.0-rc2
v1.0.0-rc1
v1.0.0-rc0
v0.24.6
v0.24.5
v0.24.4
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.0
v0.22.1
v0.22.0
0.21.0
v0.21.0
v0.20.4
v0.20.5
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.2
v0.19.1
v0.19.0
vue3
v0.18.1
v0.18.0
v0.17.1
v0.17.0
v0.16.1
v0.16.0
v0.15.1
v0.15.0
v0.14.1
v0.14.0
v0.13.1
v0.13
v0.12
v0.11
v0.10
v0.9
v0.8
v0.7
v0.6
v0.5
v0.4
v0.3
v0.2
v0.1
Labels
Clear labels
area/api
area/attachments
area/auth
area/avatars
area/backup-restore
area/caldav
area/calendar-view
area/comments
area/config
area/database
area/desktop
area/docker
area/email
area/favorites
area/filters
area/frontend
area/gantt
area/i18n
area/import-export
area/internal-code
area/kanban
area/labels
area/list-view
area/mobile
area/notifications
area/permissions
area/projects
area/pwa
area/recurring-tasks
area/reminders
area/search
area/shortcuts
area/subtasks
area/sync
area/table-view
area/task-editor
area/task-metadata
area/task-relations
area/teams
area/theming
area/time-tracking
area/typesense
area/views
area/webhooks
bug
changes requested
concern/accessibility
concern/performance
concern/regression
concern/ux
confirmed
db/mysql
dependencies
enhancement
good first issue
help wanted
integration/inbound
integration/outbound
kind/bug
kind/feature
needs reproduction
pull-request
question
security
support
upstream issue
waiting for reply
wontfix
Mirrored from GitHub Pull Request
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/vikunja#5976
Reference in New Issue
Block a user
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.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @GottemHams on GitHub (Jan 10, 2024).
Original GitHub issue: https://github.com/go-vikunja/vikunja/issues/125
Description
I'm not 100% sure if this is an issue with the Vikunja frontend itself or one of the frameworks it uses (I think it's Vue/Vite?), but it seems most appropriate to start here. I tried searching in all mentioned repositories for some parts of the JavaScript I've shown further below but nothing came up. The issue only seems to exist on Firefox and occurs even in safe mode (all addons disabled), although I've only tested with Chrome besides.
It looks like almost the entire UI is continuously being re-rendered when the edit task page is open, even without any interaction with any part of the UI. This happens regardless of the task UI being rendered in a modal (e.g. opening a task from the kanban view) or in its own separate page (e.g. from list view). Firefox's developer console highlights modified nodes with a yellow background, which as you can see are quite a lot of nodes.
The re-render happens fast enough that all those nodes are never not highlighted, which causes a major spike in CPU usage. When the task UI is in a modal and I close it, CPU usage immediately drops back down to sub 1% or even "idle", so it's not an issue with the page it was shown on.
It also causes some side effects with usability of the UI, particularly an opened
selectinput which keeps resetting the selection to its current value (e.g. the task relation type input). This again happens very fast, it's nearly impossible to select the value you actually want. Unless you know exactly what you need and can use your keyboard to change the value while it has focus (but not opened). Here's a lil' screen recording. Text inputs seem unaffected at least.Since even the document's root (
<html>) is being modified, I decided to add a breakpoint on that tag for attribute modifications. It seems a certain attribute is continuously being added and removed, and due to the reactiveness of Vue/Vite it also re-renders a whole bunch of child components every time? First it showed me<html class="dark" q-has-scope5301926="" lang="en">and 2 breakpoints later it becomes<html class="dark" q-has-scope5218981="" lang="en">. The JS code the debugger is breaking on:As I've mentioned in the starting paragraph: I tried searching for some key parts of this JS in Vue/Vite/Vikunja repos (hoping to find the unobfuscated source) and I couldn't find anything, hence why I'm not sure in what part of the chain this problem exists.
I created a new task on the demo site and I have the same issue there.
Vikunja Frontend Version
0.22.0
Vikunja API Version
0.22.0
Browser and version
Firefox ESR 115.6.0
Can you reproduce the bug on the Vikunja demo site?
Yes
Screenshots
No response
@kolaente commented on GitHub (Jan 10, 2024):
I could not reproduce this in Firefox 121.0, not with the unstable build running on try or locally with a dev build. The tab uses < 0.5% cpu when inactive. Does the task you tested this with have any special attributes?
This sounds like an issue in Vue though. Not sure how to debug this.
@GottemHams commented on GitHub (Jan 10, 2024):
The task doesn't have anything special, literally just creating a new empty task and viewing it is enough.
@kolaente commented on GitHub (Jan 10, 2024):
Are you able to reproduce this with a newer firefox?
@GottemHams commented on GitHub (Jan 10, 2024):
I'm on the newest version of Firefox's ESR branch. Haven't tried the regular branch though, can maybe do that tomorrow.
@GottemHams commented on GitHub (Jan 11, 2024):
Alright, so it does seem to work fine on regular Firefox. ESR is officially supported by Mozilla though, and I have my reasons for not using "standard" Firefox in the first place. ;_;
I decided to try removing some elements to see if I could get it to stop re-rendering, then keep going further down the tree to find the actual offending elements. Turns out it's related to Tiptap and/or ProseMirror:
The editor is being used twice on the task page, once for the task description and another is for adding a new comment. It was literally impossible to remove (or even simply expand) the
<p>tag it contains as it seems to be continuously re-added, so it looks like the editor is continuously resetting itsinnerHTMLfor whatever reason. I tried entering only 1 character of text in both editors and the re-rendering stops. Both need to have something in them though, so unfortunately it's not as simple as "just enter a task description". The editor being focused (or not) also doesn't matter.I went looking for some other pages with a rich text editor on them, and I found the project and team edit pages where there's an editor for their descriptions. These have the same issue and the same workaround also works there.
Does this help any? :>
@kolaente commented on GitHub (Jan 15, 2024):
This sounds like a bug with the placeholder plugin. I'll take a look.
@kolaente commented on GitHub (Jan 21, 2024):
Looks like it is not the placeholder. Using git bisect I was able to pin it down to tiptap (the new editor), but it looks like this is not something specific to Vikunja's configuration of it. Given this bug only exists in ESR and there's no obvious fix for this, let's put this on hold until there is a tiptap or Firefox ESR update.
@GottemHams commented on GitHub (Jan 22, 2024):
Alright, just lemme know when you've updated Tiptap in Vikunja and I'll try again.
@kolaente commented on GitHub (Sep 13, 2024):
There have been a few updates to tiptap in the meantime, can you still reproduce this?
@GottemHams commented on GitHub (Sep 16, 2024):
Nope, seems to be good now, it's barely even making a mark on CPU usage. :> For completeness, I'm on Vikunja 0.24.2 but Firefox was still v115.6.0 ESR. After the successful test I decided to also update Firefox (to 115.15.0) and check again. Somehow it still had something cached from the old Vikunja version because the problem re-occurred, but Vikunja also showed the bar at the bottom about an "update" being available. Letting it reload one last time once again fixes the issue, so it was definitely something in Tiptap I'd say.
@kolaente commented on GitHub (Sep 16, 2024):
Glad it seems to be working now! I'll close this issue then, please ping when you notice the problem again.