Page 1 of 1

Designing for heavy computing: best practice for halting execution

Posted: Sun Apr 05, 2026 5:47 pm
by NourEdinDarwish
Hi everyone,

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?
  1. "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?
  2. "Run" Button: Is there a supported or recommended way to design a module with an explicit "Run" or "Submit" action button?
  3. 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.
I'd appreciate any guidance or feedback on the best way to design around this!

Thanks,
Nour

Re: Designing for heavy computing: best practice for halting execution

Posted: Mon Apr 06, 2026 6:20 am
by jonathon
yeah, we're looking to implement something like this. we recommend using a 'Run' button for now. take a look at MLwrapj.

jonathon