Xano: a powerful external backend and database for Bubble

Already let’s go for all your questions :slight_smile:

Nope, there’s not :upside_down_face:
Xano can scale to whatever needs or means possible. If you visit their technology page, you will see it’s set up with the stack to do so. But keep in mind, scaling to something of that magnitude would require a custom plan and configuration - it would be beyond what is available on their self serve plans, but it’s definitely possible.

Xano is hosted on the Google Cloud Platform (GCP), the database is a PostgreSQL database. We don’t allow for direct connections so you would need to build the API calls yourself.

They found that the storage accommodates the vast majority of use cases from their clients. They recommend to users who have media-intensive applications to integrate with a cloud storage provider such as an Amazon S3 so they have complete control over their media storage.

Interesting point about this one: I invite you to read more about how they would open the source code if Xano were to ever go away so you can continue building - Frequently Asked Questions - Xano Documentation

They allow to export all your data and schema from Xano.

Bringing your own cloud, means you can have Xano hosted on the cloud platform that you use. For example, Xano is hosted on GCP (Google) but you could bring your own Azure or AWS cloud platform that you have to host Xano instead.

Definitely! You can integrate any service that exposes an API.
And they also have a marketplace where you can get modules (pre-setup functions) such as Stripe.

You can see background tasks as what Bubble haves with recurring events.

Well it’s hard because they are two different services for different uses. Xano can’t do most of what Bubble can and vice-versa.
If we’re talking about backends, that’s not Bubble’s strongest point as Bubble is not meant to be a strong backend. So performance-wise Bubble’s backend and Xano are incomparable. Xano can iterate through and execute thousands of functions lighting-speed compared to Bubble.
I would say, generally speaking, that Xano is helpful when your reach Bubble backend’s limits in terms of complexity and performance. I wouldn’t advise working with a separate external backend if there are no highly complex workflow schemes or speed requirements.

Some uses-cases I’ve personally worked on:

  • Private rental management platform with over 1000 listings (and their bookings, customers, …), where Xano connects to the different providers (Airbnb, Booking) to constantly get, update and maintain the database to be used in Bubble.

  • Database externalization to allow faster (complex) searches

  • Error reporter system for Bubble developers, where front-end errors are sent to a Xano server in order to be processed and eventually sent to the app’s owner if critical.
    This processing involves getting similar errors over the database (>1M), determining - based on numerous and complex rules if it needs to be processed by the ML model (using no-code service Pelatrion), checking the incoming API key and verifying the origin of the request, …
    All of this, over dozens of requests per second!

Hope this is helpful for all of us :slight_smile:

5 Likes

Fantastic thank you very much

1 Like

Morning all,

I’ve posted this in the other topic if someone knows how to handle this with Xano and Bubble.

Thanks a lot!

1 Like

Answered there!

1 Like

Thought I’d offer a little input here. First of all, I understand your response but I think some info was lost in translation. The recommendation is not to switch to Xano, rather it is to deal with your data in Xano. I haven’t had a chance yet to dive super deep with Xano, so I am not sure if they offer a UI builder as well (Backendless offers a UI builder as well, but it is nowhere near as powerful as Bubble’s in my view) but the value add here is increased capabilities on the back end.

Yes, there is a learning curve when implementing Xano. However, the proposed change in Bubble pricing incurred astronomical price hikes tied to data “things”. The idea here is to migrate the data storage and handling to Xano in the interest of still being able to use Bubble on the front end and dealing with the expensive data operations on the back end using Xano. I’m not surprised at this post either. Xano and Backendless have both been ramping up outreach in lieu of the proposed Bubble price changes, which I absolutely do not blame them for. Smart move on their part.

That being said, as @Landowski mentioned, I can’t see any other platform doing what Bubble did. Bubble’s greatest asset, as stated by many users and online reviews, is its strong community. Bubble actually listened to us and pivoted their strategy, which is rare in a company of their size and growth phase. I thought their response to the outrage was incredibly thoughtful and despite the “platform risk” that was so clearly highlighted, I still feel really good about this one simply due to the way they have handled this situation.

This is a new space, with changes occurring on an hourly basis. I’d say we are all just along for the ride here. That being said, these discussions are important and they are closely monitored not only by Bubble but by other platforms. The best strategy here is to make the best decision you can and continue to be involved on this forum.

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”

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