and \u003CUSelectMenu /> components render options within a fixed-height dropdown. It is complicated to deal with large datasets. When displaying large lists of options, this can lead to performance issues. Is it possible we can get something like VueUse infinite scroll?\n[https://vueuse.org/core/useinfinitescroll/#useinfinitescroll](url) ??\n\n### Additional context\n\n_No response_",[3202,3205,3206],{"name":3203,"color":3204},"duplicate","cfd3d7",{"name":3146,"color":3186},{"name":3188,"color":3189},4172,"Uselect and UselectMenu content infinite scroll","2025-05-23T13:55:50Z","https://github.com/nuxt/ui/issues/4172",0.7566592,{"description":3213,"labels":3214,"number":3218,"owner":3149,"repository":3149,"state":3151,"title":3219,"updated_at":3220,"url":3221,"score":3222},"### Version\r\n1.0.0-rc3\r\n\r\n### Reproduction link\r\n[https://github.com/krestaino/scroll-position-nuxt](https://github.com/krestaino/scroll-position-nuxt)\r\n\r\n### Steps to reproduce\r\n\r\n1. Go to http://localhost:3000/\r\n2. Scroll down and click on a post\r\n3. After the new page loads, use the browser's back button\r\n4. Scroll position goes to the top rather than where it was\r\n\r\n### What is expected?\r\nNavigating back should retain the scroll position.\r\n\r\n### What is actually happening?\r\nNavigating back does not retain the scroll position.\r\n\r\n### Additional Info\r\nOne thing I noticed, if I set the height of the HTML element to something like `html { min-height: 10000px }`, the issue goes away. It doesn't seem to be 100% consistent though. Is this happening because the post list is being rendered dynamically using `v-for`?\r\n\r\n\r\n\u003C!-- generated by vue-issues. DO NOT REMOVE -->",[3215],{"name":3216,"color":3217},"2.x","d4c5f9",1182,"Navigating back should retain the scroll position.","2023-01-18T15:40:53Z","https://github.com/nuxt/nuxt/issues/1182",0.76072407,{"description":3224,"labels":3225,"number":3229,"owner":3149,"repository":3149,"state":3151,"title":3230,"updated_at":3231,"url":3232,"score":3233},"\u003C!-- 💚 Thanks for your time to make Nuxt better with your feedbacks 💚 -->\r\n\r\n### Is your feature request related to a problem? Please describe.\r\n\r\nIn our usecase, we have a page, say `/products/:filter`, which contains a filterable list of products. We want this filter as a url fragment so each of these pages is rendered separately. While you're in this page and click on a link that switches the filter to show different products in the listing, we want the scroll position to be kept as is, so we are using `ScrollToTop: false` in the page options. The problem is that setting this bool also doesn't scroll the page to the top when the user routes to this products page from a different page, keeping the scroll position the user had on the previous page.\r\n\r\n### Describe the solution you'd like\r\n\r\nI believe this mechanism requirement is common enough that it should be supported in Nuxt by default.\r\n\r\n### Describe alternatives you've considered\r\n\r\nWe have extended the `app/router.scrollBehavior.js` script with custom behavior to add a page option called `ScrollToTopInitial`, which resets the scroll position to top only if the page is first visited, but keeps the scroll position when routing in the same parent page. Here is the piece of logic we are using atm:\r\n\r\n```\r\n// Scroll to the top of the page if...\r\n if (\r\n // One of the children set `scrollToTop`\r\n Pages.some(Page => Page.options.scrollToTop) ||\r\n // scrollToTop set in only page without children\r\n (Pages.length \u003C 2 && Pages.every(Page => Page.options.scrollToTop !== false)) ||\r\n // CUSTOM: scrollToTop if scrollToTopInitial is set to true and we're not routing in the same template\r\n (Pages.some(Page => Page.options.scrollToTopInitial) && to.name !== from.name)\r\n ) {\r\n position = { x: 0, y: 0 }\r\n }\r\n```\r\n",[3226,3228],{"name":3146,"color":3227},"8DEF37",{"name":3216,"color":3217},8850,"Feature request | ScrollToTopInitial option in page scroll behavior","2024-01-03T11:12:07Z","https://github.com/nuxt/nuxt/issues/8850",0.7615376,{"labels":3235,"number":3240,"owner":3149,"repository":3149,"state":3151,"title":3241,"updated_at":3242,"url":3243,"score":3244},[3236,3239],{"name":3237,"color":3238},"pending triage","E99695",{"name":3216,"color":3217},10379,"Scrolling behaviour in Firefox","2023-03-17T22:01:06Z","https://github.com/nuxt/nuxt/issues/10379",0.7622941,{"description":3246,"labels":3247,"number":3250,"owner":3149,"repository":3149,"state":3151,"title":3251,"updated_at":3252,"url":3253,"score":3254},"\u003C!-- 💚 Thanks for your time to make Nuxt better with your feedbacks 💚 -->\r\n\r\n### Is your feature request related to a problem? Please describe.\r\n\r\n\u003C!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->\r\n\r\nProvide a mechanism to extend [`scrollBehavior`](https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-router/#scrollbehavior) function rather than overwriting. \r\n\r\nIn my case, I want the page to not scroll when updating the hash, but only in certain cases that I have specified programmatically. The only workaround I've found so far is creating a dummy param in the `params` object of the Router `replace`/`push` function object parameter, and check the param value in the `scrollBehavior` function. However, I also want to keep the default scroll behaviour in other cases. Overwriting the `scrollBehavior` function removes the default scroll behaviour. \r\n\r\nCopying the [Nuxt default `router.scrollBehavior.js`](https://github.com/nuxt/nuxt.js/blob/dev/packages/vue-app/template/router.scrollBehavior.js) is difficult because it's a code template and contains external imports. Also, such a way sounds dirty and is not future-prone.\r\n\r\n### Describe the solution you'd like\r\n\r\n\u003C!-- A clear and concise description of what you want to happen. Adding some code examples would be neat! -->\r\n\r\nRather than overwriting `scrollBehavior`, consider using the filter pattern. For example, in the `~/app/scrollBehavior` folder, the developer can create multiple `js` files (with a number as the filename to indicate the execution order) to create a chain of logic. Each file contains:\r\n\r\n```js\r\nexport default function (to, from, savedPosition, next) {\r\n // do some logic here\r\n return next(to, from, savedPosition)\r\n}\r\n```\r\n\r\nIn my case, I would create a filter like this:\r\n\r\n```js\r\nexport default function (to, from, savedPosition, next) {\r\n if(to.params.routerNoScroll) return // do not continue to the next filter if routerNoScroll param is truthy, this prevents scrolling\r\n return next(to, from, savedPosition)\r\n}\r\n```\r\n\r\nDeveloper can also customise other parameter values passing to the next filter:\r\n\r\n```js\r\nexport default function (to, from, savedPosition, next) {\r\n return next(to, from, { x: 0, y: 0 }) // do not use savedPosition, always scroll to the top\r\n}\r\n```\r\n\r\nOr even more complex:\r\n```js\r\nexport default function (to, from, savedPosition, next) {\r\n return next(to, from, to.path === '/foo' ? { x: 0, y: 0 } : savedPosition) // do not use savedPosition on path `/foo` only\r\n}\r\n```\r\n\r\n### Describe alternatives you've considered\r\n\r\n\u003C!-- A clear and concise description of any alternative solutions or features you've considered. -->\r\n\r\nN/A\r\n\r\n### Additional context\r\n\r\n\u003C!-- Add any other context or screenshots about the feature request here. -->\r\n\r\nN/A\r\n",[3248,3249],{"name":3146,"color":3227},{"name":3216,"color":3217},9142,"Extending scrollBehavior instead of overwriting","2024-06-14T16:02:32Z","https://github.com/nuxt/nuxt/issues/9142",0.7638629,["Reactive",3256],{},["Set"],["ShallowReactive",3259],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fxe_0aGfxbL0qSyPcd7RFuvDddUIIZyIHNgvPoLrK9k0":-1},"/nuxt/nuxt.com/621"]