# \[New Plugin\] Bdk Utilities

**URL:** <https://forum.bubble.io/t/new-plugin-bdk-utilities/44986>\
**Category:** Showcase\
**Created:** [December 19, 2018, 7:48am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986 "2018-12-19T07:48:50Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 7:48am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/1 "2018-12-19T07:48:50Z")

</div>

Hello Bubblers,

We have a new addition to the [Bubble Developer Kit](https://www.notion.so/Bubble-Developer-Kit-3eb057d9d81d4176b1be678856c80faf#b0f69ab26fd94076bd5c9072b0a47aed) 😃

[Bdk Utilities](https://bubble.io/plugin/bdk-utilities-1544798294930x973076470769909800) ([Documentation](https://www.notion.so/Bubble-Developer-Kit-3eb057d9d81d4176b1be678856c80faf#b0f69ab26fd94076bd5c9072b0a47aed)):

[1. Easy list](https://bdkdemos.bubbleapps.io/bdk_utilities_easy_list)  
[2. Transform list](https://bdkdemos.bubbleapps.io/bdk_utils_transform_list)  
[3. List processor](https://bdkdemos.bubbleapps.io/bdk_utils_list_processor)  
[4. Super workflows](https://bdkdemos.bubbleapps.io/bdk_utils_super_workflow)  
[5. Text list](https://bdkdemos.bubbleapps.io/bdk_utilities_text_list)  
[6. If-then Workflow](https://bdkdemos.bubbleapps.io/bdk_utils_if_then_wf)  
[7. If-then Value](https://bdkdemos.bubbleapps.io/bdk_utils_if_then_value)  
[8. Transform list (server-side)](https://bdkdemos.bubbleapps.io/bdk_utils_transform_list)  
[9. Text list (server-side)](https://bdkdemos.bubbleapps.io/bdk_utilities_text_list)  
[10. If-then Value (server-side)](https://bdkdemos.bubbleapps.io/bdk_utils_if_then_value)

Description and screenshots of each below.

The plugin is priced the same as all plugins in the Bubble Developer Kit at $4/month. I’m experimenting with the one-time pricing for this plugin at $16. Check out the [demos](https://bdkdemos.bubbleapps.io/bdk_utilities).

Happy Bubbling!  
Cheers,  
[Gaurav](https://bdk.bubbleapps.io/)

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 7:50am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/2 "2018-12-19T07:50:10Z")

</div>

_ **Easy list** _

Easy lists are pretty useful to easily manipulate lists without using states / repeating groups to store your lists. In a single workflow step, you can (1) add a list of items (2) add a single item (3) set to a list of items (4) set to a single item.

Easy lists also have an inbuilt ‘memory’. You can _undo_ an easy list to go back to its previous contents in a single workflow step. Undo can be used upto 5 times consecutively

Example applications include (1) Tabs in your app. Imagine a ‘back button’ for user to go back to where they were previously (2) Undo stuff anywhere in the app for a user  
Some example applications include (1) making real-time calculations for your invoice line items, (2) better shopping carts, (3) group edit/delete items in repeating groups

_Easy List Demo: (1) Add an Item / List to an Easy list (2) Set an Easy list to an Item / List (3) Undo a List_

 ![easy%20list](https://us1.discourse-cdn.com/bubble/original/3X/6/f/6fddb17a405940e0bc92b9976722b37719b46d13.gif)

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 7:53am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/3 "2018-12-19T07:53:52Z")

</div>

_ **Transform List** _

Ever wanted to transform a list into some other list in bubble? For instance constructing a HTML table for your products or a JSON for your api call. Transform list allows you to do exactly that. Using this plugin you can run any piece of code on every item of your list, to generate a new list.

Simple yet super powerful. Define the input list, the type of output list and write the code to apply on each item of the input list.

For example applications, think of the instances wherein you had to ’ _Spend tons of time creating fields, complex workflows to do simple processing on a list of things_ ’

[_Transform List Demo: Run code on a list of things to generate a new list of anything. Set up in seconds._](https://www.notion.so/Bubble-Developer-Kit-3eb057d9d81d4176b1be678856c80faf#760fad5949d74a3ca53ea0df25d5da29)  
 ![5c1a056b0eecb743428852](https://us1.discourse-cdn.com/bubble/original/3X/f/c/fc6c0a0fe043b02293511ee9630bb5a6e5e3579c.gif)

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 7:55am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/4 "2018-12-19T07:55:56Z")

</div>

_ **List Processor** _

List Processor brings a much awaited functionality. Currently if you want to run a workflow on a bunch of things, you can run api workflow on a list. But that also means you don’t know when its done, and you have to store and retrieve value from the database making it complex and slow.

List processor allows you to do this right on the page. Unlike api workflows, it can also trigger another workflow that you define once its done.

For Example applications, think of the instances wherein you had to ‘Schedule an API workflow on a list’

_List Processor: Run a workflow on each item of a list. Run something when done processing the entire list._

 ![list%20processor](https://us1.discourse-cdn.com/bubble/original/3X/6/5/659d19bc2466d1ec12afd0a7f9ff3d63ceda8df3.gif)

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 7:57am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/5 "2018-12-19T07:57:15Z")

</div>

_ **Super Workflows** _

Super Workflows are just like bubble’s custom workflows but with a major difference: You are not limited to passing one value. You can pass upto 3 values to a Super Workflow.

_Super Workflow Demo: Just like custom workflows but you can pass multiple things to it._

 ![super%20workflow](https://us1.discourse-cdn.com/bubble/original/3X/3/b/3b38d1e7be73a8dff7c052f95e7546672152ff33.gif)

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 7:58am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/6 "2018-12-19T07:58:23Z")

</div>

_ **Text List** _

Quickly generate a list of text from a text and a separator of your choice. Of course, you can dynamically change the list using conditional formatting. Superfast as it doesn’t touch the database.

Example applications include dynamically changing choices in a dropdown based on conditional formatting

 ![Text%20List](https://us1.discourse-cdn.com/bubble/original/3X/4/3/4364895b3e2530b0f3b6b79a92ed1d7d071c524f.gif)

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 8:00am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/7 "2018-12-19T08:00:20Z")

</div>

_ **If-then workflow** _

Set up a series of if-then-else statements in seconds. When a ‘If’ condition is true, the If-then workflow element runs the workflow corresponding to the ‘then’ condition

_If-then Workflow: Construct a set of if-then-else conditions and run a workflow corresponding to each 'then'_

 ![if%20then%20workflow](https://us1.discourse-cdn.com/bubble/original/3X/c/2/c2e0857ef698c73099570198bd462582a4f14964.gif)

_ **If-then value** _

Set up a series of if-then-else statements in seconds. When a ‘If’ condition is true, the If-then value element gets its ‘value’ from the corresponding ‘then’ value you define

_If-then Value: Construct a set of if-then-else conditions and set a value corresponding to each 'then'_

 ![if%20then%20value](https://us1.discourse-cdn.com/bubble/original/3X/e/7/e7203b8b32500db2ae183c46f1d7d7a08226be74.gif)

---

<div class="post-metadata">

**Author:** ![dan1](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/dan1/32/23411_2.png) [@dan1](https://forum.bubble.io/u/dan1)\
**Post date:** [December 19, 2018, 4:29pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/8 "2018-12-19T16:29:41Z")

</div>

Just wanted to recognize that you’re doing a couple things I appreciate with your posts and plugin building 1) Keeping forum postings consolidated, 2) giving good documentation for getting started, and 3) providing practical demos.

Glad to see how Bdk continues to develop!

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 4:47pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/9 "2018-12-19T16:47:21Z")

</div>

Thank you for the kind words @dan1 😃

---

<div class="post-metadata">

**Author:** ![Bubbleboy](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/bubbleboy/32/19512_2.png) [@Bubbleboy](https://forum.bubble.io/u/Bubbleboy)\
**Post date:** [December 19, 2018, 4:52pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/10 "2018-12-19T16:52:26Z")

</div>

> [@gaurav](#):
>
> List Processor

this is really significant…excellent @gaurav and also to echo @dan1 comments. Frequent, insightful, pertinent and useful updates as well as the obvious high quality documentation

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 19, 2018, 5:18pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/11 "2018-12-19T17:18:21Z")

</div>

Thank you @Bubbleboy! 😄 Glad you found it useful.

---

<div class="post-metadata">

**Author:** ![napule89](https://avatars.discourse-cdn.com/v4/letter/n/6de8d8/32.png) [@napule89](https://forum.bubble.io/u/napule89)\
**Post date:** [December 25, 2018, 11:09am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/12 "2018-12-25T11:09:08Z")

</div>

Great work, thank you.

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [December 27, 2018, 6:44pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/13 "2018-12-27T18:44:35Z")

</div>

**[Plugin Update] 28-Dec-2018**

1. Transform list is now also available server side so you can use in API workflows
2. If-then-value is now also available server side so you can use in API workflows
3. If-then-value (both client and server side) now allows you to output two values for each condition
4. Text list is now also available server side so you can use in API workflows
5. Text list now supports adding additional 6 dynamic text values in addition to split strings by separator

Feel free to check out the [demo](https://bdkdemos.bubbleapps.io/bdk_utilities).

Happy Bubbling,  
Cheers,  
Gaurav

---

<div class="post-metadata">

**Author:** ![Andy\_i](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/andy_i/32/49371_2.png) [@Andy\_i](https://forum.bubble.io/u/Andy_i)\
**Post date:** [February 27, 2019, 12:32pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/14 "2019-02-27T12:32:56Z")

</div>

Awesome plug in, and I’ve only used transform list so far!

A really smart and fast solution, enabling features that i previously had to build complex data structures for, slowing down my app.

My use case (so far) is to reference the current user’s rank in a list, in an entirely different group from the repeating group.

A bit of javascript within the transform list plugin, produces this for me in a blink of an eye, even when the list changes entirely, without touching the database.

This has opened a lot of doors for my app. 😄

Thank you Gaurav!

---

<div class="post-metadata">

**Author:** ![peter8](https://avatars.discourse-cdn.com/v4/letter/p/ee7513/32.png) [@peter8](https://forum.bubble.io/u/peter8)\
**Post date:** [April 7, 2019, 7:55pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/15 "2019-04-07T19:55:29Z")

</div>

Being unfamiliar with javascript (why I’m using Bubble) could you please help me? Can I use your **List Processor** to find and replace multiple text values on just one thing in a list, server side?

For instance I’d like to replace ##first name## ##last name## with things in the database i.e This event’s first\_name and This event’s last\_name - how would the expression be constructed?

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [April 11, 2019, 8:05pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/16 "2019-04-11T20:05:20Z")

</div>

Hi @peter8,  
Sure. So

1. If you want to do an operation on a list of things server-side, you can use bubble’s ‘Schedule API workflow on a list’ action
2. If you want to do an operation on a list of things client-side, you can use Utilities (bdk)'s List processor element. Documentation and demo for how to use this is [here](https://www.notion.so/Bubble-Developer-Kit-Plugins-3eb057d9d81d4176b1be678856c80faf#957a07fd6e644530937d9f4b1a8078e5)

> [@peter8](#):
>
> I’d like to replace ##first name## ##last name## with things in the database i.e This event’s first\_name and This event’s last\_name - how would the expression be constructed?

I didnt fully understand by this what exactly you’re looking for… maybe you could post an image / screen recording here with more details so that I / other people on the forum can help out?

---

<div class="post-metadata">

**Author:** ![chad](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/chad/32/89415_2.png) [@chad](https://forum.bubble.io/u/chad)\
**Post date:** [May 5, 2019, 10:23am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/17 "2019-05-05T10:23:43Z")

</div>

Hey Gaurav firstly thanks for your hard work these utilities are the bomb.

I’m having a strange problem and I’m not sure if its with list processor or bubble.

Basically I have a list of a couple hundred items, they’re text and in json format displaying in a repeating group.  
In each cell I have a RGData fed by database item (which is an existing product) and a bunch of inputs drawing the values out of the json via way of regex.  
To give perspecting the RGData looks like Product (obj), Buy Price number, Quantity number and Unit Buy Price number.

I then have a button which updates the product (obj)'s with the number values.  
To know that it has been updated I have a little checkbox that checks if the Product (obj) modified date is today.

I run the listprocessor, it updates each item, the checkbox becomes checked and when I inspect the group using the debugger that references the Product(obj) in my database it appears with the updated prices and the correct modified date.

but not all is well, it’s actually not modifying the data.  
If I search in the bubble backend the items haven’t been updated and the modified dates aren’t updated.

Whats even more strange, on my repeating group I have check boxes to select which Items I want updated, if I only select a few they all work correctly but when I do all of them it appears to work, in the debug\_mode it shows that its work but it hasn’t.

Have you encountered any issues like this

---

<div class="post-metadata">

**Author:** ![gaurav](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/gaurav/32/6666_2.png) [@gaurav](https://forum.bubble.io/u/gaurav)\
**Post date:** [May 5, 2019, 5:24pm UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/18 "2019-05-05T17:24:56Z")

</div>

Hi @chad,  
Glad you like the plugins!  
I’m unable to picture the setup you described quite clearly… Could you share something more visual… e.g. images / screen recordings / link to editor so that its a bit easier to understand  
Cheers,  
Gaurav

---

<div class="post-metadata">

**Author:** ![chad](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/chad/32/89415_2.png) [@chad](https://forum.bubble.io/u/chad)\
**Post date:** [May 14, 2019, 9:42am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/19 "2019-05-14T09:42:05Z")

</div>

Hey Gaurav any chance you could do a little tutorial on turning a list Json to a list of objects?

---

<div class="post-metadata">

**Author:** ![chad](https://sea1.discourse-cdn.com/bubble/user_avatar/forum.bubble.io/chad/32/89415_2.png) [@chad](https://forum.bubble.io/u/chad)\
**Post date:** [May 14, 2019, 9:42am UTC](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986/20 "2019-05-14T09:42:50Z")

</div>

Working on this… I’ll send through a video. I ended up changing it all to try and do it a different way. It didnt work so I have to change it all back

[Next page](https://forum.bubble.io/t/new-plugin-bdk-utilities/44986.md?page=2)
