Forum Academy Marketplace Showcase Pricing Features

Xano: a powerful external backend and database for Bubble

Very helpful insight, thanks!

Hi. Thanks - yes, I understand the distinction that it’s only data that would be moved.

I don’t understand why Xano or any other platform would be prevented from radically hiking its prices. The notion that you or others ‘can’t see’ other platforms doing this doesn’t actually have any bearing on whether a platform will or not.

Presumably Bubble users ‘didn’t see’ this change coming - so why would your expectations, false here, hold true elsewhere? What’s different? I guess this is what I find jarring about ‘join Xano to escape this problem’. It doesn’t escape the problem. It repeats it, almost exactly. Namely… join a no code platform… and assume they won’t suddenly change the terms in a way that harms you.

In any event, your expectations aside, there are no assurances. If a platform with as great a community as Bubble can do this, what in earth is there to stop platforms with lesser communities?

Finally, the idea that this doesn’t happen elsewhere isn’t true. I’m from the legal Industry. I’ve been watching how a company has been buying legal tech companies that law firms have come to rely on… and suddenly they’re increasing pieces by nearly 300%. The comments from users are nearly identical. The difference is that the company is not backing down bc they know the lawyers are fully dependent - and they’re preparing to go to court over it in a class action suit that the users are getting ready to bring.

Anyway, for the record I think all of these trade offs and risks are worth it. I just think they’re jumping ship for some other platform isn’t actually going to remove any risk. If anything it might increase it since, as you say, Bubble has a proven track record of at least listening to its users and rolling mistakes back.

Anyway thanks for your comment and your thoughtfulness in your reply. :+1::slightly_smiling_face:

3 Likes

You are indeed correct and offer a perspective I could not give, so thank you for the response!

Hello! Could you help please?

I have a bubble app that has a chat function. I’m thinking of adding xano as a backend, but my previous experience with backendless has shown that there are problems: every time a user sends a message in my bubble app, I send that message to backendless and store it in the database. I then make another query to backendless to get an updated list of objects from there, including the last message, and display it in my bubble app. However, there is a problem - how can I tell my interlocutor frontend that another object has been added to the backendless database and that I need to re-request the entire object list? Because without doing so, my interlocutor won’t be able to see the message I sent him.

Bubble does this automatically, when you create an object, it appears in a repeating group for all participants that have access to the data source.

I tried to use Real Time Chat from backendless via websocket however it didn’t work for bubble.

I hope I have explained clearly enough the nature of the problem, which prevents me from migrating my application to a third party backend at this time.

1 Like

There is no third party service that will work as you expect, since bubble uses websocket to allow this interaction between the client’s browser and Bubble’s server.

That being said, there are few hacks you could use. One option is to take advantage of the websocket that Bubble has to communicate to your user browser that a new message has been created, even using third party services like Backendless and Xano, to do this you could create a duplicated thread “data thing” in Bubble and Xano, this data thing should have a column/field called “lastUpdate” (or something like that) of the type “Date”, in the front end you should have a variable (group with a data type of date) which stores the last time you retrieved the messages of that thread (lets call it “lastCall”), then when a new message associated to this thread is created in Xano you can update the “lastUpdate” field after the response or through a webhook. Finally add the “Do when it is true” (Every time) event with the conditional “Thread’ lastUpdate date > lastCall’ date” to do a new call to retrieve the newest listing of messages (and don’t forget to update the lastCall variable every time you do a new call to fetch new messages). I have used this technique many times, it is not ideal but does the trick and I haven’t encountered any issues so far.

Hope it helps!

3 Likes

How does one handle a development database vs live database with Xano? Without using say the scale plan which appears to be the minimum plan that supports such a thing?

You could always have a field on your thing called “live/test”

Currently Scale is the first plan that supports different database environments. However, you could also clone your workspace to have a replica… this is a bit more of a manual solution but at least it is an option.

2 Likes

Hey @eli

Dis you find your Xano plugin faster than the do a search for?

Also, how does it perform on something like creating an invoice line item on the page? Right now with Bubble’s database is pretty fast.

Thanks a lot man.

Hello @ryanck

If you expect an instant graphic response, this is slightly more tricky.
This is because when creating a new entry (like an invoice entry) in Bubble through a workflow, Bubble anticipates the database change and shows a temporary version on the client side before/at the same time it’s updated in the database.
You could create the same behaviour but that requires some engineering…

For your first question, I find Xano much faster when it comes to database searches. Partly because you can manually define indexes to tell Xano which fields should be indexed and how.
Documentation here

I’ve been recently using Xano for searches on a database with 2M+ items and the results are really impressive: on average, 250 to 400ms for the search response in Bubble!
(searches in 3 indexed fields + paging + call made directly from browser on Bubble)

Hope this helps :+1:

2 Likes

Hell yeah. Being able to create indices is killer. You can do full text queries like nobodies business in a fraction of a second!

Maybe someone can help out here: Do you know from technical side, why bubble cannot provide such a service? So what are the differences between xano and bubble databases that leads to speed differences?

Good question, I don’t know the answer!

I don’t know the technical details but from reading a lot of docs and posts and reading between the lines, Bubble has it’s own way of storing the data which is manipulated through it’s own abstraction layer that we interact with in our app. I don’t think it’s storing them natively as records and fields on the database, I think they have their own methodology which means they can’t simply expose the DB’s (Postgres) native indexing. With Xano they again have their own no-code abstraction layer on top of Postgres but the data is stored as records and fields directly in the underlying DB. Therefore they are able to expose Postgres’ indexing directly for you to manipulate.

3 Likes

So helpful your posts, thanks!

About search performance I think nothing beats an external database. I ran into issues with fetching and pushing the search results back to Bubble. Can you elaborate on your experiences? Maybe provide some tips? Allow me to explain shorty my use case.

I have to deal with a matching service. Thousands of users have several characteristics attached to them (personality traits). These users need to be matched with each other on there traits. % match. So first I save traits of each user and then want to run a match against each user ending up with millions of % match between each and every user. I can query then all the users that match a particular user with x% for instance.

Issues:
Doing this in Bubble is not possible as it is too slow
Query on the fly, asking all users that match for a certain % is not doable in Bubble either because of limited query/search options
Sending users with their traits to an external DB and doing the query and search there leaves me with the issue that I am unable to send back of fetch thousands of users back to Bubble. API connector is slow and returns max 200.

Any ideas how to deal with this?

Interesting! I’m not sure what I’ll suggest is the best practice thought because this sounds like a specific use case that probably has its own way of being solved that I’m unaware of.

However, here’s what I can think of:

  1. Whenever a user is created, or their personality traits change, trigger a “match” endpoint on Xano
  2. This “match” endpoint will have two entry fields: User_id and Personality_traits
  3. When the endpoint is triggered, run a loop on every user in your database, and for each item, calculate the match % with the current iteration User.
    Then, save it to a database “Users_matches” which contains 2 fields: User_ids and Match_%
    If the entry already exists, then update it (this is easily done with the “Add or Edit record” function)
  4. Whenever you need the match % between two users, simply call an endpoint that searches for the “Users_matches” entry containing both users.
    You can also have an endpoint searching for entries containing only one user to return a list of users sorted by matching %.

Hope that helps! :smiley:


Victor from Flusk

Black_512x512 Flusk - a hub of tools and services for Bubble makers and businesses

Thanks!

With database you mean xano or any other external database right? I mean, is your experience the same as mine that for this type of use case Bubble is not performant enough?

I have done a test on a regular MySQL db and matching and query 3500 users is done under a second. Since the matching is done only once the test is performed, I can get away with lets day 5 seconds from a user standpoint. Some tricks in the UI and those 5 seconds are not noticeable.

I do have the issue of max 200 records returned. Suppose there are 1000 record that I want to present to bubble, how to do so?

Perhaps on the fly is also an option? Let a user push a “match” button that enters the current user ID and traits into the api which runs a query on an external database and fetch the results back into bubble?

Yes

Also yes, but Xano might be slightly longer than the MySQL experiment you ran. I can’t tell for sure but for 3500 users it might take a few seconds.
That’s why saving the results upfront could be a good idea here.

I’m not aware of this, can you give more details?

This I mean

I don’t think Xano allows MySQL connexion, so I don’t think this is relevant when using Xano and Bubble as data will be stored either on Bubble or Xano.