Skuid v2 - Render conditions are ignored for a sec in deck of deck.

  1. Hello,

    Skuid Version: 13.0.13

    If there is like a wrapper in deck of deck with render condition then the wrappers condition will be ignored for a sec or more (depending on how heavy the page is).

    I have included a simple page to reproduce this example, please find the code in the pastebin link below. I’m using model that comes with Skuid Package called SkuidPages. The way this page is set up you will need existing v2 pages (or at least one, i think).

    To recreate the issue:

    Into the UI model, create one row (or more if you please), where the ‘APIVersion’ column has the following data ‘v2’. You can create a new row by pressing ‘Add’ button in top Right.

  2. Wait till skuid has retrieved the data for SkuidPages Model (the deck below should dispaly cards with one row of data).
  3. Press the 'UpdateData' button, you will notice that that the same data is displayed twice. Though, the same data should only be displayed twice if the page is v1, because of render condition. The more data there is, the more components the deck/wrapper has the slower loading time.

In my case I have numerous wrappers which shouldn’t be displayed unless certain conditions are met. I’m using deck of deck to create custom questionnaires based on some criteria.

Another Issue: I suspect is related to this one, but I’m not sure and haven’t been able to figure out the root cause. I get warnings when try to display content inside the decks: ‘Warning: components should not be used once they have been unregistered: skuid__table’ - this warning is not getting in the way, but what ever Skuid is trying to do and causing this error is consuming a lot of memory (especially as user navigates the page) and slows it down a lot.

Best,

Lukas

Deck of Deck - Render conditions - Pastebin.com

Bump

This is still in an issue… It’s also very costly in terms of memory. In the page example above, per update data the memory usage increases by roughly 20mb, in my full use case the memory usage increases by 100mb due to their being many more components.

Once it reaches around 800mb components start to become sluggish and react slower to any clicks/actions.

Thanks for bumping this question @lukaspovilonis . looking in to it now.

I will set up a dev env and test this out to reproduce what is happening.

Thank you @Germany

  • .

    Just to summaries, the main issues:

    Updating the model data - renders the components, but the components will be rendered without checking render condition.

  • Updating model data - it increases memory usage. I assume it's because array like model._eventSubscriptionsGeneric gets very large (I've been seeing 100,000k+ records in the array, also I'm getting over 1k registeredFields).
  • If the components have already been rendered and the model is updated it takes very long (at least couple minutes) for the model to finish loading/updating and then for components to rerender. This is still happens if i use model.getMoreData(.).

Hey @lukaspovilonis,

Thanks for sharing! looking into this with the team, will get back to you ASAP!

Thanks,