mui-x icon indicating copy to clipboard operation
mui-x copied to clipboard

[data grid] Implement server-side data source with nested data lazy loading

Open MBilalShafi opened this issue 1 year ago • 5 comments

This issue covers the server-side lazy loading for nested data (tree data and row grouping) Currently, all the data for a selected tree data or row grouping node is fetched in one go, this feature will enable to load the nested data lazily by scrolling down. This is an advanced lazy loading use case and will be followed up after #10857 is done.

Please feel free to upvote the issue to see it land faster.

If you are looking for plain-data lazy loading check #10857

Action points:

  • [ ] Use strategies to handle differences in the way the data is processed. Context

MBilalShafi avatar Sep 07 '24 13:09 MBilalShafi

I would like to add a vote from a premium customer - ID: 96081 is this helps. Thank you!

forwardslahsdotj avatar Apr 07 '25 19:04 forwardslahsdotj

With Server Side lazy loading now available, we would definitely like to have the feature work with Row Grouping so we do not have to choose one feature over the other within our Data Grids.

kms421 avatar May 05 '25 19:05 kms421

Our team would also like to see this implemented in a future version of DataGrid.

Premium customer - Support ID: 102668

sparksm avatar May 20 '25 20:05 sparksm

This is a big issue for our team in implementing the data source. We are dealing with grouping large amounts of data that will have to return 1000s of rows and cause long api requests. What is the status of this feature?

zdonner100 avatar Jun 10 '25 20:06 zdonner100

We have a recipe that provides a solution based on the row pinning feature in the userland. It comes, however, with a few limitations.

I'd appreciate it if you could check it out and see if it works for your use cases: https://mui.com/x/react-data-grid/server-side-data/recipes/#tree-data-nested-pagination

Although it's targeting tree data for now, it could also be tweaked to work with the row grouping.

MBilalShafi avatar Jun 12 '25 07:06 MBilalShafi

Just checking in on the status of this feature. We are also premium customers and are really looking forward to server-side lazy loading for nested data as it's crucial for our use case. Any updates on the timeline would be appreciated. Thank you!

kennyman avatar Jul 04 '25 10:07 kennyman

Hey @kennyman, Thanks for checking in. This feature is indeed one of the next in line on our roadmap. However, a few higher-priority items are currently taking precedence, so we aren’t able to commit to an exact timeline just yet.

In the meantime, have you had a chance to try out the userland recipe shared above? If so, we’d love to hear more about why it doesn’t fully meet your needs.

MBilalShafi avatar Jul 04 '25 11:07 MBilalShafi

@MBilalShafi how does the userland recipe prevent performance issues when there are 1000s of rows in the last nested subgroup?

zdonner100 avatar Jul 21 '25 15:07 zdonner100

We also need infinite/virtual scrolling for the last nested group in order for it to be a complete solution.

zdonner100 avatar Jul 22 '25 19:07 zdonner100

@MBilalShafi how does the userland recipe prevent performance issues when there are 1000s of rows in the last nested subgroup?

@zdonner100 It uses pagination to not load rows more than a specific number at a time. Performance shouldn't be much of an issue with less number of rows rendered at a time.

Did you already try the recipe and noticed something around performance?

Regarding the infinite loading counterpart, unfortunately it's not achievable in userland due to being complex so it'd be an internal feature. It's not yet a higher priority item for the team because of other pressing issues, feel free to upvote the issue to increase the chances of it being prioritised.

MBilalShafi avatar Jul 22 '25 22:07 MBilalShafi

Is there any estimation on when this will be a feature? We are currently evaluating DataGridPremium, and this use case fits our needs. I've been trying to make this work on my own, before realizing that it is not supported. Here's a codesandbox from the mui chat with my attempt: https://chat.mui.com/chat/edit-RwQ0MRY1NzmqjJi7v_Hb?message_content=what%20does%20the%20model%20for%20the%20data%20returned%20by%20fetchRows%20look%20like%3F

This feature would be a game changer and an instant buy-in from my company. Happy to discuss further or help support this in any way.

filipe-gomes-es avatar Jul 29 '25 06:07 filipe-gomes-es

This feature would be a life-saver for us too

Premium customer - Order ID: 116976

TheOrionsB avatar Jul 31 '25 08:07 TheOrionsB

This feature would be amust for us. Order ID: 114806

nhhamza avatar Aug 04 '25 14:08 nhhamza

We’re premium customers (second year) and would really appreciate having a lazy loading option when row count is unknown.

AmitaiBitonHarmonie avatar Sep 01 '25 15:09 AmitaiBitonHarmonie

the people want this!

zbybee-knowledgeGrid avatar Sep 10 '25 22:09 zbybee-knowledgeGrid

Really looking forward to this

keegan-mccafferty avatar Oct 23 '25 01:10 keegan-mccafferty

Really looking forward to this

hammadkk avatar Oct 24 '25 13:10 hammadkk

we are premium customers and are dying to get this! super important and core part of our product experience that is painful to work around today

erikmunson avatar Nov 06 '25 23:11 erikmunson

Just a quick update: This feature is currently one of the team's top priorities, and work has already started. Feel free to share your early feedback once the PR is out to help shape the feature.

MBilalShafi avatar Nov 07 '25 06:11 MBilalShafi