Monthly Community Update -- December 2022

And… actually… I think this was an unfair test as I think that Bubble sees my client-side advanced filter as being stupid and does it “the right way”. But anyway, it would never be faster. @tylerboodman

(though in some cases its going to be “comparable” :man_shrugging: it’s kind of a thing one wouldn’t desire to do for a lot of reasons)

3 Likes

Could not agree more. We would love one in the EU as well

3 Likes

TOTALLY AGREE +1 Vote :fire:

9 Likes

Amazing - First step. Probably wont use as-it though.

Keep focus on the functions of the components pane - Especially ease of saving our own work - rather than the components themselves. Don’t spend time adding more of your own. The community and others services like Atomic Fusion, does a much better job at designing. Tough but true.

Doing quality UX/UI is easier to do one self and then reuse designs knowing how where and what to change, rather than manipulating someone else’s designs or building on top. Same principle applies if you are good at bubble and know exactly what you want, then building it from scratch

Bubble adding basics components has value (which is really good) to beginners and MVP apps with low UX/UI quality requirements.

Consider these features (top of mind) to add more much needed functions than Atomic Fusion and others can:

  1. Ability to transfer components to other users
  2. Auto create states used by the component on the current page its copied to
  3. Ability to store reusable elements or complete pages
  4. Ability to store workflows (same copy paste / drag and drop principle)
  5. Ability to insert components with plugins and plugin actions - Asking to auto-install the required plugins

You obviously want to have someone dedicated to this, so it can run its full course.

…and take over direct, personal leadership of the engineering team

Good choice. Thank you!

2 Likes

I wouldn’t say taken aback by community components, this has always been on the roadmap for the Component Library :slight_smile:

3 Likes

Would custom events returning values do the trick, or must it be an API Workflow?

4 Likes

Both :joy: :pray:

3 Likes

Hey @nick.carroll well, both would be welcome. However, what I’m talking about and really, really desire is for the custom plugin client-side Actions API to be able to return values (which in this case would be found as return values in the workflow), in the same way that SSAs (server-side actions do).

The use case is the various data manipulations that can, at present, only be enabled by creating an Element plugin, creating an element action, and having that action publish the results of the action to that Element’s exposed state. (And the Bubble programmer user must then drop this element on their page to be able to use that action.)

This leads to a lot of silliness. Here’s a simple example: The original inspiration for my List Shifter plugin was simply to provide users with the JavaScript Array.reverse() method. Why does this need to be an element? If a client-side action could return values to the workflow, the interface for such an action would just take a List as input, do the operation, and return the reversed list to some returned value key.

We can build this today as an SSA - such a plugin would look like this - note that it can return values. This key will appear as “Result of Step X’s Reversed List” in the workflow:

But of course, this is a pretty dumb SSA. We wouldn’t really need such a thing on the backend (at least not without more options, etc.). However, executed in a client-side workflow such a value is returned to the cllient-side workflow, making it available to downstream workflow steps (after 5 seconds of cold-start time, etc. which makes this silly).

BUT, this would be very handy as a Client-Side Action! (Also, consider that, in the Element model, we are loading tons and tons of code for these various actions, even if we are not using them! This is inefficient.)

However, we are UNABLE TO BUILD such a plugin, because the client-side Actions API does not support return values. Here’s what this plugin looks like if it’s configured for the client-side:

See how “Returned values” cannot be configured? THAT’S what I’m talking about.

Obviously, there is code in Bubble which takes the JSON returned by an SSA and spits it out as values in the workflow, but this feature is not exposed in the plugin builder nor does the Editor understand this, even if we sync our plugin to GitHub and put the “return value” key into params.json. (I know because I tried. We can also look at run.js/run_debug.js and see that there is not way for this to work anyway as the code related to SSAs is inaccessible for client_side actions.)

But this seems like a rather simple change to support and it would really revolutionize the way we deliver certain types of plugin functionality.

Does this all make sense? (I feel like nobody at Bubble understands what we’re getting at when we ask for this addition to the plugin API, even though it is a glaring and obvious weakness in the currently-available version.)

10 Likes

@nick.carroll While you are taking our Christmas wish lists St. Nick C. (sorry that really is terrible of me)…

Can you please expose the ability to Create Custom Data Types? There are a million and one use cases for this and similar to what Keith pointed out, we sort of already can do this if we are willing to hack our way through run.js. The point is, we know the code is already there, it’s simply a matter of exposing a “Bubble-Safe” way to do this. I’m pretty sure the privacy rules in place would cover the security aspect.

Further, this would be a huge boost to plugin development as we could create much more complex plugins as they could define their own Data Types…

2 Likes

Keith - appreciate the detailed response. I checked in with the team and this feature is sitting at the top of the list of plugin editor api updates - one of the PMs has been running point on (1) documenting our existing plugin editor api and (2) making the plugin api better. I can’t give you a timeline, but it is something we are focused on going into the new year!

13 Likes

Noted!

4 Likes

Well now @bubble.trouble, you’re just getting greedy. :wink: But seriously, @nick.carroll, what @bubble.trouble is describing is probably the second biggest weakness in Bubble: That there is no support for objects outside of Things (and Things can only be created through interaction with the database and plugins themselves can neither create nor modify them – that’s the exclusive province of the Create and Modify actions which can only be executed by the Bubble programmer).

A more specific version of that request would be as follows:

It would be desirable to have a generic “Object” data type which might be specified in much the same way as return values from SSAs.

Such objects would not be Things, but would be simple JavaScript objects (probably published as JSON stringified text) that exist only in the page. But Bubble would understand them and one could access their values in the expression builder.

For example, we might be able to construct an object (like a car in this example) that is a JavaScript object composed of the basic Bubble datatypes and app types (represented by their unique IDs) and, if published to a state of type Object, Bubble would understand this. JS object:

car = {
    Make_text: "Aston Martin",
    Model_text: "Bondmaster 5000",
    TrimPackage_text: "Gaudy",
    Price_number: 5000,
    OwnedbyUser_User: "1670267192276x990887650961694600",
    AcquisitionDate_date: "Wed Dec 07 2022 14:46:19 GMT-0800 (Pacific Standard Time)",
    SomeOtherThing_custom_fave_thing: "1670267192276x990887650961694655"
}

And then we might publish it to an exposed state (or Action return value) called Car of type Object (e.g., instance.publishState('Car', JSON.stringify(car)). And, at the exposed state MyPlugin’s Car Bubble would understand that there are fields for “Make” (a string), “Model”, “TrimPackage”, “Price” (a number), “OwnedbyUser” (a User), “AcquisitionDate” (a date), “SomeOtherThing” (a Thing of type fave_thing).

Being able to dynamically publish object type values like this would also be a game changer as @bubble.trouble notes.

EDIT: And this example isn’t so totally great, but imagine that I want to publish a List of Cars and it makes more sense. Or some object that represents a line item in an order (with product, quantity, price, and subtotal fields) which is a less abstract use case.

EDIT 2: Clearly I don’t have my interface design hat on, but you get the idea (in the quickie description I wrote up, I encoded the data type into the name of the field, but obvs the field values could themselves be objects in which we specify the bubble type for the value (or however), e.g.,:

Make: { type: "text", value: "Aston Martin" }

The point was that the limitations at present are at least two-fold: (1) there is no support for objects besides Things and (2) ideally support for objects would be entirely dynamic (the Bubble programmer need not tell us everything or even anything about the output - the plugin is responsible for that).

3 Likes

That’s very cool to hear, @nick.carroll.

I get your point of view. But do not forget that there are 100 million new startups each year. Trying to crank out a mvp fast.

Bubble is close to being a solution for those 100 million startups each year. Some things need a bit of polish and some elements are lacking out of the box (mobile).

Make it easy to blend with Wix, Webflow, Drupal, Wordpress and the likes. Be great at anything that needs to be a mobile app or MVP and there is more than enough market space to make 30X for their VC’s.

1 Like

@nick.carroll what about Australian hoisted instance??

3 Likes

I don’t have too much context around specific progress in this area, but I do know that the team has a roadmap to get to hosted instances outside of the US

7 Likes

can you send a password to test ?

we are still working on it. Should start with beta testing end of this month or beginning of january

Any hope of you beeing able to share that roadmap or just an indication of how far along it is?

1 Like

Why wouldn’t you put up a landing page