owncloud / web

:dragon_face: Next generation frontend for ownCloud Infinite Scale
https://owncloud.dev/clients/web/
GNU Affero General Public License v3.0
445 stars 156 forks source link

Migrate to Vue 3 #5269

Closed exalate-issue-sync[bot] closed 1 year ago

exalate-issue-sync[bot] commented 3 years ago

discuss:

are dependencies we are using already in good shape reg. vue3 ?

Stories

As a developer I want to utilise the latest features of Vue.js framework.

As a developer I want to leverage latest security improvements of Vue.js framework.

As a developer I want to have strict typing.

As a user I want to experience a high performance and low RAM usage web application.

Prerequisites // Tasks

Vendor dependency compatibility notes (might grow in the migration proccess)

Libs that we're using and are not yet officially ported to Vue 3 (community ports are already existing but not yet tested in production according to their descriptions):

exalate-issue-sync[bot] commented 3 years ago

Lukas Hirt commented: WIP branch https://github.com/owncloud/web/tree/migrate-to-vue3

exalate-issue-sync[bot] commented 3 years ago

Benedikt Kulmann commented: Solving https://jira.owncloud.com/browse/OCIS-1121 first / as a prerequisite would remove the need for the Vue resize lib.

exalate-issue-sync[bot] commented 3 years ago

Lukas Hirt commented: The new version of rollup Vue plugin seems to require Vue 3 as a dependency. We need to be extra careful with this when updating our extensions.

exalate-issue-sync[bot] commented 3 years ago

Florian Schade commented: [~bkulmann], [~lhirt], shouldn't be the story "As a developer I want to have strict typing" be a separate issue that covers the whole switch to typescript?

exalate-issue-sync[bot] commented 3 years ago

Florian Schade commented: [~bkulmann], i added a section that covers Prerequisites, i will have a look tomorrow what this means from a timing perspective, maybe it's required (if those tasks are too large) to track them in seperate subtasks or even dedicated issues. I keep this updated and will at least get a info till next sprint planning

exalate-issue-sync[bot] commented 3 years ago

Lukas Hirt commented: > i added a section that covers Prerequisites, i will have a look tomorrow what this means from a timing perspective, maybe it's required (if those tasks are too large) to track them in seperate subtasks or even dedicated issues. I keep this updated and will at least get a info till next sprint planning

There is already a subtask for ODS https://jira.owncloud.com/browse/WEB-176

exalate-issue-sync[bot] commented 3 years ago

Florian Schade commented: thanks [~lhirt], i havent seen this, i updated the tasks // prerequisites section.

kulmann commented 2 years ago

This issue got more important recently. For folders with a lot of files any update on a displayed file (e.g. renaming it or selected/deselecting it in the list) invalidates the virtual DOM of the entire file list.

This has been reproduced with a minimalistic vue2 example project to eliminate possible side effects of e.g. vuex-store, our design system, etc. Setup of the example project:

The same example project then has been recreated in vue3, which successfully handles invalidation of the virtual DOM for only the row that represents the updated element in the list. Reactive data update in vue3 can happen without Vue.set. Otherwise the code was unchanged.

Conclusion: in order to work with large file lists efficiently (no lags in the UI during partial updates) we need to update our stack to vue3. Decision: we can't afford to do that at the moment. We'll have to wait until after the oCIS GA release. Decision made by: @dragotin / Klaas Freitag, @tbsbdr / Tobias Baader, @kulmann / Benedikt Kulmann. Workaround: We'll enforce the pagination to never show more than 500 elements on one page.

JammingBen commented 1 year ago

Web is finally running Vue 3 🥳