Hello,
We are currently using Flexmonster connected to our data source via an API layer backed by a PostgreSQL database.
As our dataset is growing significantly, we are facing scalability concerns when loading data into the pivot. At the moment, it seems that large volumes of data need to be retrieved before applying filters (e.g., date filters), which is not sustainable for us long-term.
We would like to understand whether Flexmonster supports (or can be configured to support) server-side filtering, specifically:
Our goal is to avoid loading the entire dataset into the client and instead retrieve only the necessary data chunks dynamically based on user-selected filters.
Thank you in advance for your guidance.
Hello Pierre,
Thank you for contacting us.
Please find our answers below:
1) Date filtering
Flexmonster does not support applying date filters on the backend out of the box. In this setup, the component loads the entire dataset first and then applies filters on the client side.
However, you can achieve the desired behavior on your side by implementing filtering in your API layer. For example, you can introduce a custom control (e.g., a date range picker) and, based on the selected range (e.g., “last month”), send the corresponding parameters to your API. The API would then query the database with those conditions and return only the filtered subset of data, which Flexmonster will load.
2) Dimension filtering (categories, fields, etc.)
The same approach applies here. You can handle this manually by passing the selected dimension values to your API and returning only the relevant data. This ensures that Flexmonster works with a smaller, already filtered dataset rather than processing everything on the client.
3) Integration pattern / best practices
In your case, it is sufficient to filter on the API side before passing data to Flexmonster. The recommended approach is:
/data?from=2026-03-01&to=2026-03-31&category=ElectronicsWHERE date BETWEEN ... AND ... AND category = ...)dataSource.filename in Flexmonster and reload the reportFor example:
pivot.setReport({
dataSource: {
type: "json",
filename: `https://your-api/data?from=${from}&to=${to}&category=${category}`
},
// other report configs
});
With this approach, both date filtering (e.g., “last month”) and dimension filtering are handled on the backend before the data reaches Flexmonster.
4) Performance recommendations
For large datasets (millions of rows), the most effective optimization is to reduce the amount of data sent to the client. Implementing server-side filtering as described above is one of the most efficient ways to improve performance. You can also reduce payload size by using more compact formats, such as CSV or JSON “array of arrays” instead of JSON objects.
Please let us know if it works for you. Looking forward to hearing from you.
Kind regards,
Nadia
Hello Pierre,
Hope you are having a great week.
We were wondering if you had a chance to check the suggested approach. Could you please confirm if it works for you?
Looking forward to hearing your feedback.
Kind regards,
Nadia
Hi, I looked into it, but it's too complicated. We'll try again in a few months.
Hi,
Thank you for the update.
Whenever you decide to get back to it, feel free to contact us. Our team will be happy to assist you with any questions that come up along the way.
Kind regards,
Nadia