I am currently developing a module for Jamovi that relies on some heavier operations, such as running multiple univariable regressions.
I am encountering a UX flow issue with how Jamovi's reactivity handles inputs: if a user drags multiple variables into an input box one by one, the analysis triggers and runs sequentially for each variable added. As the operations are heavy, this creates a frustrating bottleneck for the user. While I understand Jamovi has internal caching mechanisms (like using clearWith), it isn't fully practical for my case.
I was wondering what the recommended design approach is for this scenario?
- "Do Not Run" Checkbox: I noticed that modules like semlj use a "Do not run" checkbox (which simply halts the .run() function via an options check) so the user can input all variables comfortably before unchecking it to compute. I am not sure if they implemented it specifically for this exact purpose, but is this considered the standard/best practice for heavy modules?
- "Run" Button: Is there a supported or recommended way to design a module with an explicit "Run" or "Submit" action button?
- Internal debouncing / cooldown: Is there any hidden configuration, JS event trick, or future plans in the Jamovi engine to introduce a "debounce" or "cooldown" mechanism that waits a moment after UI input before firing the run() event? I noticed that changing standard UI options (like rapidly clicking checkboxes) seems to already have a slight built-in cooldown sometimes, but this doesn't seem to apply when dragging/dropping multiple variables.
Thanks,
Nour