FLOPPY: Plugin for localStorage, sessionStorage, IndexedDB storage, List Creation/Manipulation, Iteration, and More! Now with even more video docs!

Yes. It’s far from being perfect. I don’t quite understand your plugin yet, but it will come. Yes I bought it to replace another plugin that was giving me a lot of trouble.


I’m working on it. But as you mentioned, it’s not the Nexus ultra in speed.


Hey Keith,

Any thought on making floppy accessible throughout the app like the bdk env variable?

That would be awesome!

Hey @troy.roberge, I’m not quite sure what you mean (I’ve not inspected BDK env variable plugin but I assume it just writes values on the window or something, though it’s not obvious to me what it does per page. Perhaps I should go look.)


The Floppy element itself is an element plugin which is designed to be very simple to use in its core use case (writing and reading some specific type of value to a certain key in storage).

As such, each instance requires configuration, so it’s not really clear how that would help.

If one wanted to add the same Floppy functionality to all pages (e.g., let’s say you’re using Floppy to store a wish list or the contents of a cart-like object or something and you probably want access to that on every page) you’d just put it in a commonly used reusable, like a header or footer. (And the Floppy Reader element would often be a better choice for this as it supports reading from multiple keys from a single element.)

There’s a video further up the thread about properly using Floppy in a reusable, BTW!

1 Like

Well I think you are short changing yourself. Sure, it started off reading and writing keys. But now it’s a list processor with built in events and triggers.

It’s very versatile, but could become more by being read from anywhere in an app without having to deal with outer reusable group states and such. I watched your video, but it wasn’t until I started using it a lot yesterday that it made me think about it.

For my use case, I’m processing a small list using steps, into the scaler value, then sending that off to an SQL query. But I’ll be using another floppy on another page for other things.

So just saying, you are already heading down the road of one of the “can’t live without it” plugins, just giving you another idea.

One can’t actually do the things you’re asking for @troy.roberge. I know the Bubble plugin API very well. Also, I provide plugins that are generally useful to Bubble users, not custom whackadoodle solutions that need inordinate amounts of setup.

Lol what part doesn’t work? It all works, just needs various plugins. Was just trying to give you another idea to boost up your plugin.

No worries.

You have no idea what you’re talking about.

1 Like

Lol. Nevermind. I’m doing exactly what I said already, but that’s cool. Guess I’m going crazy by using other plugins :slight_smile:

Good morning grumpy.

Hi @keith
Thanks for your work on this. Bought your plugin yesterday hoping I could sort a RG based on a calculated field. I followed your video here.

My calculated field is calculated by taking the count of values intersecting with a multi drop down search and stored locally. So for example, similar to Supercook app where you can choose your ingredients and supercook shows the recipes you can make based on your ingredients. See my example below.

In Floppy I tried to use Custom Count and use an expression that also intersects with the values in the search multidropdown but that doesn’t seem to work. Is there a way with Floppy to do this?

Below you can see I’m selecting the crypto and show the websites that have these crypto. The last number is a count I do based on the intersection of brands & the multi select on top. But I would want the website with the highest count (so best match to the search) on top.

This is how the count is done in the RG

And here you can see I tried to use Floppy’s Custom Count but didn’t work

Hope you can help, thanks a lot!

Well the red text means your expression does not evaluate to a list of numbers. Consult the issue checker to see what your expression actually is.

Also, go turn on the parentheses feature in Bubble. Makes life much easier.

Hey @keith, is there any possibility to get Floppy Rehydrator as a backend action?

I’m bulk creating things through the Data API, which only returns the unique IDs of the newly created things (in a strange non JSON format :neutral_face:).

I’m assuming some kind of Rehydrator would be way more efficient (time and CPU wise) than doing some recursive search for unique ID?


Hey @tylerboodman, that’s definitely possible. Check out Floppy v 1.9.6, which adds the Floppy Rehydrator SSA.

I’d never thought about this use case. Cold-start time aside, as long as your UIDs are already in a list (or are a comma separated string or whatnot that you can :split into a list), this should be way faster than recursing over such a list and “Do a search for…”.

Aside: This might be my record for new plugin creation. Just 45 minutes or so.

1 Like

Holy Christ that was fast… Thank you I will try it out :grinning_face_with_smiling_eyes:

1 Like

I guess the alternative would be “Do a search for… Things” where List_of_UIDs contains This Thing’s UID. Which would be under advanced so would never scale (and crap out after X-thousand items)? This is one of those weird Bubble edge cases I’d never thought of.

(As I think you know, all this plugin does is read the UIDs and then publish them to the output as the correct type. Bubble does all the rest. But it’s funny that this is a missing feature.)

Yea I was going to ask you, isn’t this “rehydration” a native feature (just not exposed in vanilla Bubble)? I feel like their app is literally doing it all the time in the background?

Yea when you Create a thing, you can take that result and add it to a list, but after I did the Data API I was like wait how am I supposed to find the Things created? (efficiently)

1 Like

@tylerboodman yes it’s just a thing that Bubble does with Things. We are told (in the plugin API “documentation”) that we are to reference Things as their unique IDs (but this doesn’t seem to be a requirement as we can in most cases also just send a native Bubble Thing object to an output and the Thing appears there).

There’s even an undocumented server-side function for this that I have railed against the use of (get_object_from_id()) that would seem to do the same thing, but if you had an array of objects of differing types you could never publish that list, so I don’t understand why that function exists, really, except to make “Server Script” a reality (also, I don’t know how anyone knows about it except that it seems to be referenced in MishaV’s Server Script plugin… I assume Bubble added this to make Server Script a useful plugin, but AFAICT the real story has never been told).

1 Like

My knowledge grows after every question to Keith, except I’m still terrified of the keith


That’s not a bug but a feature @tylerboodman.

1 Like

Rehydrating 1000 items from Bulk Data API, all good so far :+1:

1 Like

Sweet, @tylerboodman!