Forum Academy Marketplace Showcase Pricing Features

[New Plugin] bdk UX tools

Hello Bubblers,

We have a new addition to the Bubble Developer Kit :smiley:

Bdk UX tools: Enhance the UX by acting in real-time on the context of your app users

Screenshots below. Demo here. Editor here.

Happy Bubbling,


Love dogs, effect offline great! :grinning: Excellent for monitoring.

1 Like

Offline Detect : Display your custom screen when a user’s internet connection goes offline. Optionally include a connection & retry indicator. One more thing…treat your users to a game of snake while they’re offline

Screen Detect : Act when a user is idle on your screen or switches in & out of your apps’ tab. Imagine an experience where you were treated to a fun ‘Welcome back’ message when the user switches back to your app window, while you were actually refreshing some content in the background.

1 Like

Element Detect : Act when a certain thing on your page comes up within the users’ view or goes out of it. Great for targeted and timely marketing. Show them advertisements of dog food as they are checking out dog photos on your site. Or maybe change the search filters / sections dynamically like Airbnb based on the location they’re exploring.

Screen clipping (with dogs) here


Haha you’re too fast @JohnMark

1 Like

Great work @gaurav! Already got a few ideas for this. :slight_smile:

1 Like

Hi, @gaurav! I have a group within repeating group’s cell and I would like to capture if the cell of the RG was viewed. However by placing elementdetect inside the group and selecting that group in element’s selector(#groupId) results in capturing all groups at once and not only if the RG cell’s group was viewed. Any thoughts? Maybe there is a way to capture dynamic ID attribute? Thanks!

Hi @d.norkus not sure I understand fully… U can make any elements ID attribute dynamic no? Just add current cells index to the end of the text ID attribute field.

In bubble an ID attribute of groupId in a repeating group will create several groups of with the same ID. It should likely be groupIdCurrentCell’sIndex

if I set element’s ID (group in the RG cell) as dynamic how do I select this group in element’s detector? as it allows only static inputs such as #group1 etc. Thanks!!


Ah got it. Just pushed a update making it dynamic. Thanks!


Hi @gaurav,

I wonder if “Element Detect” works within a Reusable element.
I could not make it work, unfortunately.

Is there any workaround?


Hey @rio,
Let me take a look into this and get back

1 Like

Looking to implement this plugin into a reusable element (more specifically, the header of my page so I don’t need to implement it on every page in my app). Did you ever determine an approach to make that work?


Hi @ksaitow1,
So the plugin has multiple elements / features inbuilt. Which one specifically are you referring to? They should already be working in reusable headers I think

Hi @gaurav,

I am referring specifically to the component that detects user inactivity… if it is able to work in a page header (so I don’t need to implement it on each page individually), that would be ideal.

Wanted to check before I tried to implement.


@gaurav also keen to know if screen detect and offline detect works in an reusable element (header). Tried to use the efactice plugin and it wasn’t able to work in a header…its an absolute nightmare having to replicate the efactive element on every page!

Just purchased the plugin. It’s a shame you can’t customise timings as much as the efactive plugin and its less intuitive - you need to add a workflow on page load to set the idle time and require 3 different elements to cover all the features of this plugin. However, seems to work in reusable elements

Hey @mike2,
I’ll look into adding more customization options and making it intuitive.
The 3 different elements is intentional. I prefer adding multiple things, which could each be an individual plugin into one to offer value to buyers. The reason the elements are separate is so that only the libraries relevant to your features used in your app are loaded to deliver performance and not increase load times of the page unless needed.

Hey @gaurav, the critiques are only minor. It’s working like a charm and by far the best plugin for this available. Appreciate you making it!

1 Like

Thank you for the feedback @mike2 Glad to hear it :smiley: