I'm using Flexmonster with a custom API to display data on the screen. When there are hundreds of thousands of rows visible, the screen almost freezes and becomes extremely slow when expanding/collapsing rows in both classic and flat forms - to the point where it's unusable. Are there any ways to solve this performance issue?
Hello, Taehong!
Thank you for reaching out to us.
As a first step, we would like to know more details about the case:
With this information, we'll be able to advise you better.
Looking forward to hearing from you.
Kind regards,
Solomiia
1. The custom API (select API) returns data with a size of 159MB.
2. The machine I am using is a MacBook Pro 14 with 36GB of memory.
3. I am only using the following configuration:
slice: {
columns: [],
rows: [],
measures: [],
expands: {
expandAll: true,
},
},
4. I tried to attach the video, but I received a "The following files is not allowed" message. If you could provide your email address, I can send the video to you via email.
5. Since this is an internal company project, it is not possible to provide access to the page.
Hello, Taehong!
Thank you for getting back to us and for providing the details about the case.
As a first step in investigating the case, we recommend disabling expandAll and checking whether the component works without freezing in this case. Another approach is to debug the case using a smaller portion of the dataset, then gradually increase the data size to identify the bottleneck.
The video of the case would still be a great help. Our Customer Service Manager has already sent you an email, so please check your inbox and provide the video and other attachments in response to the letter.
Looking forward to hearing from you.
Kind regards,
Solomiia
I have sent the video as an email attachment.
Also, I need to use expandAll set to True by default. When the dataset is small, the performance is a bit slow but still usable. However, with a large dataset (around 400,000 records), the component becomes too slow to use. It seems that rendering is extremely slow when collapsing or expanding. Could you please check and advise on this issue?
Thank you.
Hello, Taehong!
Thank you for providing the video.
Based on the video, we can see that the described slow behavior while expanding is not caused by the client-side rendering. The “Loading data” popup shows that the client is waiting for a server response, and the Network tab confirms that the request stays in “pending” and “loading” status for some time before Flexmonster gets the response from the server and updates the view.
The server may be taking longer to respond, as the /select
with expandAll: true
for an 8-level hierarchy is quite a complex request.
As a first step in investigating the case, our team recommends looking for bottlenecks on the server by gradually increasing the hierarchy depth from 2 to 8 levels to identify where the slowdown starts.
Hope you will find our answer helpful. Please let us know if you have any further questions.
Kind regards,
Solomiia
Hello,
As you can see in the video, when collapsing, there is no server request, but the screen does not render immediately. Instead, it freezes for a moment before updating.
When expanding, it only takes 2 seconds to receive a response from the server.
However, rendering the updated view on the screen is noticeably slow.
Given these observations, I suspect that the slow performance may be related to Flexmonster’s rendering process.
Could you please check this again?
Thank you.
Hello, Taehong!
Thank you for your swift response.
Please find our comments on the expanding&collapsing behavior shown on the provided video below:
We believe that addressing the above two cases will improve the performance. Our team also suggests shortening the nested levels where possible.
Please let us know if you have any further questions.
Kind regards,
Solomiia
When expanding, after receiving a server response (i.e., not in the “pending” state), the screen remains in a “loading data” state for several tens of seconds before rendering.
This is different from the issue I previously mentioned, where a delayed server response causes the screen to load slowly.
I will attach the relevant information via email for your review. Thank you.
Hello, Taehong!
Thank you for getting back to us and for providing additional details about the case.
We think that the provided use cases can be connected, so our Dev team will take a look at both expanding and collapsing behavior within the scope of the discussed research.
The research results will be shared with you by September 29th, as agreed.
Kind regards,
Solomiia
Hello, Taehong!
Hope you are doing well.
Our Dev team has analyzed the reported expanding and collapsing behavior for possible improvements and is back to you with the results of our research.
First, please note that expandAll itself is a quite complex operation, especially when a slice has a lot of nested levels, as 8 in our case. Our current algorithm works by expanding all the nodes and building a visual model before rendering. Each visual change on the grid—such as expand, collapse, or sort—triggers a re-render of the entire visual model. As a result, the collapse, which doesn't require any requests from the server, is equivalent to the expandAll in terms of drawing the changes on the grid.
Therefore, in the current implementation of the visual model, it is not possible to achieve any significant performance improvements. We recognize the drawbacks of the current implementation and aim to improve the architecture and algorithm in a new major update.
Our team understands the challenges the current expanding behavior may create and would like to recommend the following adjustments to improve your experience with Flexmonster:
Hope you will find our answer helpful.
Feel free to reach out to us in case of any other questions.
Kind regards,
Solomiia