Multiple page in Native app

I’m in the final stage of building my Bubble app and planning to convert it into a native app using one of the available wrappers in the market. However, I recently learned that to publish a native app on the Play Store or App Store, it ideally needs to be built as a single-page app.

My app currently has 3 different user types who interact with each other, and based on the user type, I redirect them to different pages from the splash screen. Now I’m quite confused after reading conflicting information — I’m unsure whether my multi-page setup can be successfully converted into a native app.

Each of the user-specific pages includes unique layers, floating groups, and popup windows, making it difficult to merge everything into a single page. I also haven’t found a way to convert an entire page into a reusable element.

So, my question is: Can a Bubble app with 5 pages still be converted into a native app and published on the Play Store and App Store using wrappers like BDK, Natively, or others?

This is a BRUTAL lesson to learn and I went through the exact same thing.

You have to redo your whole app as a single page app.

What you do is have only index. From index, you use Groups of Elements as pages. Each page you now have has to be a Group.

Then you use the Show/Hide Element functionality to change pages. You “Show” your login page, then you “hide” your login page once logged in.. and the same for every single page or popup you have.

Took me a month to redo my whole app.

Sorry to hear you ran into this too.

Here’s a screenshot of my pages. All those groups at the bottom are the pages. You show/hide them to change pages. But it’s all really just the index page.

Thank you Sarsasparillaj for your response. I’m a little disheartened to learn about the single-page limitation at this stage, but I wanted to clarify something.

At what point during your build or conversion did you encounter this restriction that the app must be single-page for native deployment? When I looked into wrappers like Natively, it didn’t seem like using multiple pages was a hard blocker — they do support navigation between pages.

I understand that if you select “This page is a native app” in Bubble, it disables actions like “go to page,” which can make navigation harder. In my current setup, I can potentially restructure everything into a single page using conditional groups and custom states. However, there’s one workflow I’m still unsure about:

I’m building this app for the Indian market and using Razorpay for payments. The payment flow opens in an external Razorpay page, and after completion, it redirects back to my Bubble page with URL parameters indicating payment status. I then clean up those parameters using JavaScript.

My concern is: if all three user types (Customer, Vendor, Rider) are on the same page and one of them completes a payment, could this redirect interfere with other active sessions or data? Do you foresee any issue with handling such redirects on a single-page setup?

I found out after I was completely finished my app and getting ready to deploy with BDK Native. I was all ready to wrap it and release it. Then I had to redo the whole thing. In the end it was probably good because I made a lot of improvements as I redid the app, but it was very painful to have to do it twice.

I have the same workflow with Stripe that you have with Razorpay. It redirects after successful payment to indicate the payment status. The way to handle it is to use a “when page loads” workflow that’s always waiting in the background and parses the extra information in the return URL. The return URL has something like “success” or whatever in it. When your “when page loads” workflow finds “success” in the URL, it will take a certain action for a successful payment. You don’t need any JavaScript to do this in Bubble.

I may be misunderstand what you wrote, but for your last paragraph, it seems like you have a misunderstanding of how the sessions work. Each individual user will have their own session on your page and have their own checkout session with Razorpay. It can all happen concurrently. BUT.. if it works like Stripe does, (and it sounds like it does), you’ll have to save the transaction as “in process” or something when the person goes off to Razorpay, then retrieve that transaction from your database after the return URL is detected in order for the user to pick up where they left off.