Designing for heavy computing: best practice for halting execution

Everything related to the development of modules in jamovi
Post Reply
User avatar
NourEdinDarwish
Posts: 11
Joined: Fri Jan 23, 2026 9:14 pm

Designing for heavy computing: best practice for halting execution

Post 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
User avatar
jonathon
Posts: 2963
Joined: Fri Jan 27, 2017 10:04 am

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

Post 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
Post Reply