[Bug]: Inefficient / Very slow loading and handling of file tags (systemtags)
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 36.9k
- Forks
- 5.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 713
Description
⚠️ This issue respects the following points: ⚠️
- This is a bug, not a question or a configuration/webserver/proxy issue.
- This issue is not already reported on Github OR Nextcloud Community Forum (I've searched it).
- Nextcloud Server is up to date. See Maintenance and Release Schedule for supported versions.
- I agree to follow Nextcloud's Code of Conduct.
Bug description
I manage a Nextcloud instance that uses a large number of tags (~1500). The tags are assigned to files via the browser. It takes an impractically long time—more than 5 seconds—to list the tags. When a tag is selected, it also takes more than 2 seconds for the checkmark to appear.
I noticed that the mariadb backend and the web server (nginx) deliver the data to the browser at a normal speed, but processing in the browser takes a very long time. After analyzing performance in the browser, I concluded that the display and filtering of the many filters do not scale, and that this must be the cause of the delay.
... about 6s later ...
I was able to reproduce this issue in Firefox and Chromium. Here is an older screenshot with annotations from Chromium's performance analysis:
Steps to reproduce
- Create lot of tags (>
1000, maybe1500) - Select menu entry "Schlagworte verwalten"
- Wait a bit.
Expected behavior
The tags should load faster since the client already has the data.
Limiting the number of tags may not be a solution, as the display likely depends on the performance of the client hardware.
Nextcloud Server version
32
Operating system
Debian/Ubuntu
PHP engine version
PHP 8.3
Web server
Nginx
Database engine version
MariaDB
Is this bug present after an update or on a fresh install?
None
Are you using the Nextcloud Server Encryption module?
Encryption is Disabled
What user-backends are you using?
- Default user-backend (database)
- LDAP/ Active Directory
- SSO - SAML
- Other
Configuration report
# occ config:list system
{
"system": {
"logdateformat": "Y-m-d H:i:s.u",
"loglevel": "0",
"logtimezone": "Europe\/Berlin",
"memcache.local": "\\OC\\Memcache\\APCu",
"memcache.locking": "\\OC\\Memcache\\Redis",
"memcache.distributed": "\\OC\\Memcache\\Redis",
"redis": {
"host": "***REMOVED SENSITIVE VALUE***",
"password": "***REMOVED SENSITIVE VALUE***",
"port": 6379,
"timeout": "0.0"
},
"trusted_domains": [
"***REMOVED PRIVATE VALUE***"
],
"trusted_proxies": "***REMOVED SENSITIVE VALUE***",
"updatechecker": true,
"updater.release.channel": "stable",
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"mail_smtpauth": true,
"mail_smtpauthtype": "LOGIN",
"mail_smtphost": "***REMOVED SENSITIVE VALUE***",
"mail_smtpmode": "smtp",
"mail_smtpname": "***REMOVED SENSITIVE VALUE***",
"mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
"mail_smtpport": "465",
"mail_smtpsecure": "ssl",
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "mysql",
"version": "32.0.8.2",
"overwrite.cli.url": "https:\/\/***REMOVED PRIVATE VALUE***",
"overwriteprotocol": "https",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbport": "",
"dbtableprefix": "oc_",
"mysql.utf8mb4": true,
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"maintenance": false,
"default_language": "de",
"default_locale": "de_DE",
"default_phone_region": "DE",
"skeletondirectory": "",
"upgrade.disable-web": true,
"check_for_working_wellknown_setup": false,
"log_rotate_size": 104857600,
"maintenance_window_start": 1,
"preview_max_x": 1280,
"preview_max_y": 1280,
"app_install_overwrite": [
"files_markdown"
],
"allow_local_remote_servers": true,
"appstoreurl": "http:\/\/***REMOVED PRIVATE VALUE***",
"auto_logout": false,
"session_keepalive": true,
"session_lifetime": 86400,
"mail_smtptimeout": "30"
}
}
List of activated Apps
# occ app:list
Enabled:
- activity: 5.0.0
- app_api: 32.0.0
- bruteforcesettings: 5.0.0
- calendar: 6.2.2
- circles: 32.0.0
- cloud_federation_api: 1.16.0
- comments: 1.22.0
- contacts: 8.3.7
- contactsinteraction: 1.13.1
- dashboard: 7.12.0
- dav: 1.34.2
- deck: 1.16.3
- drawio: 4.1.4
- federatedfilesharing: 1.22.0
- federation: 1.22.0
- files: 2.4.0
- files_downloadlimit: 5.0.0
- files_pdfviewer: 5.0.0
- files_reminders: 1.5.0
- files_sharing: 1.24.1
- files_trashbin: 1.22.0
- files_versions: 1.25.0
- firstrunwizard: 5.0.0
- forms: 5.2.6
- groupfolders: 20.1.12
- impersonate: 3.0.1
- logreader: 5.0.0
- lookup_server_connector: 1.20.0
- nextcloud_announcements: 4.0.0
- notifications: 5.0.0
- oauth2: 1.20.0
- password_policy: 4.0.0
- privacy: 4.0.0
- profile: 1.1.0
- provisioning_api: 1.22.0
- recommendations: 5.0.0
- related_resources: 3.0.0
- richdocuments: 9.0.5
- serverinfo: 4.0.0
- settings: 1.15.1
- sharebymail: 1.22.0
- side_menu: 5.3.0
- spreed: 22.0.11
- support: 4.0.0
- survey_client: 4.0.0
- systemtags: 1.22.0
- text: 6.0.1
- theming: 2.7.0
- twofactor_backupcodes: 1.21.0
- twofactor_totp: 14.0.0
- updatenotification: 1.22.0
- user_status: 1.12.0
- viewer: 5.0.0
- weather_status: 1.12.0
- webhook_listeners: 1.3.0
- workflowengine: 2.14.0
Disabled:
- admin_audit: 1.22.0
- encryption: 2.20.0
- files_external: 1.24.1
- files_markdown: 2.4.1 (installed 2.4.1)
- photos: 5.0.0 (installed 2.4.0)
- suspicious_login: 10.0.0
- twofactor_nextcloud_notification: 6.0.0
- user_ldap: 1.23.0
Nextcloud Signing status
No errors have been found.
Nextcloud Logs
Additional info
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue from the listed steps with more than 1,000 tags, then use Firefox or Chromium's performance tools to inspect tag loading, display, and filtering. Done means the manage-tags view loads and reflects tag selection without the reported multi-second delays.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100