Forum Academy Marketplace Showcase Pricing Features

Native App Conjurer plugin now launched for the first time

Hello fellow bubbler! :grinning_face_with_smiling_eyes:

After a long time with this plugin in the ice, I decided to publish it as it currently is.

What its current state would be, you may ask.

Well, it is almost there!
I call it version 0.95 since all features for the initial version are present, it just needs some polishing on top of known issues and for its main use case it will be perfect!

And what that use case would be?
Offline data collection tool.

Let’s say that an end user of yours needs to input offline data, like a farm inspection, and later when it gets online again, to send that data to your Bubble app.
The native app can do exactly that!

Of course the plugin can be used for other use cases too, but this is the most exciting one.
Other potential uses: You can currently create an offline viewable feed of information, or an offline mode for your natively wrapped app and more.

Here is the live demonstration of my favourite use case:

The Android app
https://play.google.com/store/apps/details?id=com.ubformsnc

The Bubble app for you to login
https://native-app-conjurer.bubbleapps.io/version-test/generate_qr_login

To test, download the app from Playstore and follow the instructions in the Bubble app page.

This demo works like this:

  1. You login through a mechanism that looks like a reverse whatsapp web login,
  2. the main key goes from your Bubble app into the native app,
  3. then the native app can send data back to be associated with a specific user in the Bubble app.
  4. The native app, under your command through the “Post data” button, sends a web request to the Bubble app’s publicly exposed backend workflow.
  5. If the native app is offline, it will wait until it is opened again with the phone being online and then sends the data.

Editor view of this demo and much, much more information you will find inside the instruction manual :closed_book:

This demo native app still can take some polishing in its user experience.
Once you select an image, it resets all text inputs of the page.
Also, sometimes it may send apparently missing data due to a button near the end having the effect of deleting an image.

How does this plugin works? It creates, through workflows, a JSON text, based on Jasonelle, that will instruct the native app to become a companion app to your Bubble app.
You will then save this into your database and makes it available through a backend workflow, and whenever the app gets online, especially for the first time after being installed, it will hit this publicly exposed backend workflow to get this text that contains all its initial page(s) with all their logic, data and more.

And of course, I kept all the boring details inside the instruction manual, and you can now find it here:

https://drive.google.com/file/d/1bGdccTipE0ysmPcaDsZSG1iz_Do1iXqm/view?usp=sharing

And the plugin itself, of course!

https://bubble.io/plugin/native-app-conjurer-1597785192288x568184268755828740


Now, a bit of backstory and the roadmap:

I could not create this plugin if it were not for some community members.
We had a fundraise campaign, then I still ended up investing out of my pocket an almost 1:1 match of funds in order to finish the plugin.

However, when I got some expert bubblers to aid with the beta testing, we quickly realized that another part was still difficult: Dealing with Android Studio. Very difficult indeed, lots of hoops.
Then I put this project in the ice and went after freelancers that could automate away this Android Studio part. And freelancer after freelancer, month after month, gave up trying to build this automation.
It seems to me now that it is too niche, too specific, that it is quite difficult to find someone that has the specific skillset to do the automation.

I then gave up trying to automate that and release the plugin without it and hopefully we can help eachother in this thread in the fight against the powerful Android Studio.

Here it is then :blush:

And moving forward?
I cannot possibly move forward alone.

  • iOS support?
  • Scheduled and reactive push notifications?
  • Better wrapper?
  • Moving the workflow actions to the server side so we can dynamically build and serve pages?
  • Automatic compilation of the app?
  • Instructional videos?

All of this, and much more, is possible, just not from me alone.
The way this plugin started is the only way for it to move forward: with your involvement.

I know because I withheld it for so long and tried to move it forward by myself and could not do so.

So this plugin is most of all a community technology, open to all, without pricing or usage restrictions.
Yes, it is under my name, but it is just that I took the challenge to be a central point for this.
Anyone can freely clone it anyway.

Okay, so how can you get involved? Two ways: Features and instructions.

But mainly it has to be something that suits your interests, your agenda.
The community aspect of it is that we all invest in the same shared piece of tech, instead of each reinventing the wheel in closed rooms.

  • Maybe you want to be free from “nativization” fees and be able to turn an unlimited amount of Bubble apps into native apps without incremental, per project or per app, costs.
  • Maybe your Bubble app needs a specific offline or native function currently unavailable elsewhere. Or a group of several functionalities and deep integration with your Bubble app!
  • Maybe you want to have more control over the tech involved.
  • Or maybe you want to teach your students how to do something with this plugin.

I cannot tell. You can!

When it comes to features, you can:

  • Pay someone to create the feature for you.
  • Create the feature youself if you have coding skills.

When it comes to instructions, you can:

  • Create a written or video tutorial showing how to create a specific kind of app or native feature with the plugin.
  • Help improve the basic general instruction manual.
  • Helping people in this, or another thread, on solving specific problems that may arise.
  • Help curate a list of known issues. Oh, there will be plenty of them. So many moving parts in this one.

And finally, as usual, tell others about the plugin. Another bubbler you know may be interested in it.

If you want to use this tech in your project and wants to further improve it to meet your requirements, then let me know and I can help onboard whichever professional you allocate to this :blush:

The only thing I ask is: let’s keep this free and open for everyone! If you do create a new feature in it, do share it back.

31 Likes

Always impressed with your plugins @vini_brito , great stuff! Offline data collection is a massive pain point for many apps.

2 Likes

I just want to say that I salute you, @vini_brito ! You and the members of the community that helped, deserve a standing ovation for all effort put into this plugin.

1 Like

Very cool :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands:

1 Like

Well done!

1 Like

Great job! Extremely useful

1 Like

Hey @vini_brito !

Simply awesome.

I dropped an inspections type app a while back ago precisely due to lack of offline capabilities.

I may be taking another crack at it… :fire:

Thanks! :grinning:

1 Like

YESSS!!!

My users for one of my apps are screaming out for offline!!

So - are you saying only Android offline supported at the moment? Not iOS???

Will ANYTHING that Bubble can do be available to do offline? Specifically a JS based plugin? Or are there limitations to what functions can happen offline?

I’d happily contribute funds towards getting iOS offline up and running…as long as it doesn’t take 2 years to happen :sweat_smile:

Also - if you make changes in the Bubble editor, will this automatically update the native app? Or do you need to update the JSON every time you make changes?

1 Like

Há! This delay left me with a bad taste in my mouth too :yum:

Just to be clear, this plugin does not makes the Bubble app itself function offline, it creates a companion app that can serve as an offline mode that can collect and display data downloaded, like image feed, instructions, etc.
Or just as an offline companion, no need to wrap the Bubble app.
So yes, you must change the JSON, through workflows, every time you want changes in the companion app done.

To also make it possible in iOS, indeed the path exists, let’s see what comes in the future :blush:

I gathered as much, which is why I asked about the JSON - so you need to resubmit to app stores if you make any changes that will effect this companion app?

And does it have the ability to run javascript offline for data creation? Or only data collection in input fields you’ve created?

Ah, got it now :blush:

Nope, no need to, submit once, use it forever, unless there is an update in the base engine and you want that update, if you do not need that new update, then you will not need to resubmit anything.

Whenever the native app gets online it gets that special JSON from your Bubble app’s database and with that it can reconstruct itself with different logic, different pages and different data.

1 Like

Hey there @vini_brito ! If we wish to contribute to this plugin and work on the source code, are you open to collaborations?

1 Like

Certainly! Actually, that is one of my main goals for this plugin :blush:
To get collaborations :relieved: do send me a private message! Let’s get it started :wink:

2 Likes

Just what I needed and was struggling with some awkward solutions! Thank you, @vini_brito and the community that helped you build this plugin. I hope iOS is next in line :wink:

2 Likes

Sounds amazing!
I’ve been wanting to use Bubble for just this use case (offline-capable) but not found a smooth way of achieving it until now.
Can’t wait to try it out.

I’ve used survey.js successfully with Bubble before but not in an offline situation. Really would be awesome if someone has experience and especially how to integrate it with this wonderful plugin.

hey @vini_brito has there been any movement here?? :slight_smile:

Nope, pretty much nothing since launch :roll_eyes: