mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-15 20:09:18 -05:00
Dropdown performance #8637
Closed
opened 2025-11-02 08:13:03 -06:00 by GiteaMirror
·
15 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
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/gitea#8637
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 @fnetX on GitHub (Mar 1, 2022).
Feature Description
Currently, all kinds of dropdowns in Gitea are very slow. In fact, this is the most annoying thing with Gitea for me. Yes, I use fairly old hardware with awful performance. Still, I think it is not normal that a dropdown takes up to five seconds to open.
The first time a dropdown is opened on a page, this takes quite a while. On normal pages about 5 seconds from click to action, on pages with many dropdowns even longer. Once a dropdown was opened, all the (including other) dropdowns behave smoothly on that page until it is reloaded.
IIRC this is due to the placement of the dropdown being determined in Javascript and probably touches upon the discussion to drop jQuery and rewrite frontend code. I just wanted to report this, so it is kept in mind.
Screenshots
No response
@wxiaoguang commented on GitHub (Mar 1, 2022):
If there is no evidence, it's hard to say that dropping jQuery and rewriting the code can improve performance ...
Indeed there are a lot of dropdowns implemented in jQuery, could you do some test to see if they are all slow? (some pages are already very large, so maybe the test could be done with some simple pages)
And during the frontend discussion and refactoring, there are too many voices about "I don't like it" or "I guess it has problems" or "it has bugs (but actually caused by no-document-reading / wrong-usage and misunderstanding)", these voices may mislead to make incorrect decisions ......
ps: I am not against about rewriting frontend (actually, I did most frontend refactoring recently, see my PRs ...). I just have a feeling that we should get firm evidences, make feasible plans and work together.
@fnetX commented on GitHub (Mar 1, 2022):
In fact, trying the dropdowns on all three links you just shared, they are fast. Also, I never encountered slow dropdowns anywhere except in Gitea.
Maybe the issue is that opening one dropdown apparently tries to position all the dropdowns (because after opening dropdown A, dropdown B, C, ... are all fast, too - I suppose when clicking A, their positions are also calculated making the opening slow)?
IANAFED (I'm not a front-end developer), though xD
@wxiaoguang commented on GitHub (Mar 1, 2022):
That's strange .... Most dropdowns in Gitea uses Fomantic UI Dropdown https://fomantic-ui.com/modules/dropdown.html
Could you try these dropdowns from the Fomantic UI official demo site?
@lunny commented on GitHub (Mar 1, 2022):
@fnetX Could you point out which dropdown is slow so that I can reproduce that? And also could you test it in https://try.gitea.io ?
@fnetX commented on GitHub (Mar 1, 2022):
while the whole fomantic website is rather slow, the dropdowns there work fast (= as I'd expect from a website)
As far as I can tell, this affects all Gitea dropdowns, from navbar to special filter and in-site forms ... I'll keep an eye open if some dropdowns are faster than others.
@fnetX commented on GitHub (Mar 1, 2022):
Sorry, I had the last comment in the box for several hours. I noticed this on my local dev instance of Gitea, but I'm not sure which branch I was on earlier today. It looks much faster with latest main and try.gitea.io, although the languages dropdown is still slow.
@wxiaoguang commented on GitHub (Mar 1, 2022):
Hmm, if the languages dropdown is slow (while official Fomantic UI is fast), it should be something wrong with Gitea's frontend, the language dropdown is staticly rendered.
Could you try the Chrome's performance panel to capture the performance records? It could give us enough information.
You can save the records and upload them to share.
@wxiaoguang commented on GitHub (Mar 1, 2022):
And another possible reason is the SVG/font rendering is slow on your computer .... there are a lot of SVG images in Gitea's dropdowns, and there are different characters in the language menu. Just a guess. The performance records will give us answers.
@fnetX commented on GitHub (Mar 1, 2022):
GitHub doesn't like the attachment, here it is: https://drop.infini.fr/r/7MUEnQ7peK#dOh5b/4ZxsaDEZQVFH5+2q/kdh1z3NB3KY7IL8Ck3p8=
(for 1.16 where this is better reproducible for me)
and for main on try.gitea.io (language dropdown)
https://drop.infini.fr/r/tHZYm6jhkK#5gDA5xbVVZbl/9NI5rd35scZlK8cAMbMt+4FWL4oGF0=
@fnetX commented on GitHub (Mar 1, 2022):
If there is a chance this is really improved in main, I can wait and close this issue. But it's annoying me for a long time and always got worse, with 1.16 being the slowest of the releases, so I finally reported it. But main finally seems to be faster.
@silverwind commented on GitHub (Mar 1, 2022):
IIRC, these are pure js animations (seen by the
css) calls in the flamechart. I think fomantic has a switch somewhere to disable these animations, and I guess we should disable them, at least then the user indicated preference for reduced motion.@Gusted commented on GitHub (Mar 1, 2022):
Why fonantic? This
slideToggleis handled by jQuery, you can disable the jQuery's animations by thefxoption: https://api.jquery.com/jquery.fx.off/Btw, this slow performance is noticeable both on a slow laptop + high-end PC, not much of a difference(mainly because jQuery is using a lot of JS + manual CSS to handle this animation).
@wxiaoguang commented on GitHub (Mar 1, 2022):
The dropdown animation comes from
common-global.js:@fnetX Could you try to use this patch to test if the speed is better?
@fnetX commented on GitHub (Mar 1, 2022):
Hmm, this has no noticable effect. Also, the dropdown still appears to be animated here.
I'm closing this -- while testing I noticed that the performance with upstream Gitea is okay (I notice a small lag and considered this as "reproducible", but for normal use this is completely okay, and I probably would not have bothered reporting it. The issue is worse on codeberg and codeberg-test, that's why I started investigating after all. But building the codeberg branch locally is working fine. I think I'll try and investigate on my own what's the cause of this.)
@wxiaoguang commented on GitHub (Mar 2, 2022):
I have tested my patch, it does disable the animation of the Language dropdown (well, it doesn't affect some others). You could add
duration: 0,to all$(...).dropdown({...})in JS to disable most dropdown animations.If you want to test the performance, you can use that patch and see whether the Language dropdown becomes better.
And I think there is no related changes between 1.16/1.17, so these versions should behave the same.