📲 New Plugin Release: Audio Recorder Free Bubble Mobile

Introducing the Audio Recorder Free Bubble Mobile plugin - the easiest way to add lightweight voice recording to your native app.

Screen Recording Sept 30 2025 (1)

:sparkles: Key Features:

  • Simple Voice Recording - let users capture audio notes, feedback or short messages right inside your app.

  • .mp4 Format Support - recordings are saved in medium-quality .mp4 for easy handling and playback.

  • Lightweight & Fast - streamlined for performance with minimal setup.

Perfect for apps that need basic audio input - from voice notes to simple feedback forms.

:backhand_index_pointing_right: Demo | Documentation

:bell: For advanced recording options, higher-quality formats and extended functionality, check out the Audio Recorder Pro Bubble Mobile plugin.

Levon Terteryan
Founder @ Zeroqode

Browse all Zeroqode Plugins for bubble
Banner_Last3

Unfortunately, I'm unable to use your plugin at the moment. I get an error when trying to use it in both the project and the demo version. What could be wrong?

Hi @journal.424242 :waving_hand:

Thanks for reporting this. The errors in your screenshots - “Cannot read properties of undefined (reading ‘prepare’)” and “instance.data.startRecording is not a function” - usually happen when the recorder element hasn’t been initialized by the environment. This plugin is a native-mobile one, so it needs to run on a real device (Bubble’s native wrapper/Bubble Go or any webview wrapper) with mic permissions granted. Running it in a desktop browser or triggering the action before the element is ready can cause exactly those messages.

Before anything else, please simplify the setup:

  • In AudioRecorderNativeLight → Upload endpoint URL, use a plain text URL (no “formatted as text”, no data-type conversions):
    • Test: https://YOUR-APP.bubbleapps.io/version-test/fileupload
    • Live (custom domain): https://YOUR-DOMAIN/fileupload
      This avoids type conversions that can resolve to empty/invalid values and break the upload.

Quick checks:

  • Test on a physical phone and allow microphone permission.
  • Keep only one recorder element on the page and make sure it’s visible when you call Start recording.

If the issue persists, please share:

  1. How you’re previewing (Bubble Go/webview vs desktop browser), device & OS.
  2. A link to a minimal test page and full screenshots of the element setup (Appearance/Conditional).
  3. The exact workflow steps calling Start recording and Upload to Bubble.

We’ll reproduce and advise next steps.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

Hi @journal.424242 :waving_hand:

Quick check - were you able to try the steps in our previous message (test on a physical phone with mic allowed, set the Upload endpoint as plain text, and keep only one visible recorder element)?
Did that remove the errors or improve the behaviour? :slightly_smiling_face:

If it still fails, please share:

  • How you’re previewing (Bubble Go / webview vs desktop) and device + OS.
  • A minimal test page link + full screenshots of the element setup (Appearance / Conditional).
  • The exact workflow steps calling Start recording and Upload to Bubble.

We’ll reproduce and advise next steps.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

I can’t get any of my audio files to play. The formatting is also weird because each file is being saved with two .mp4 extensions:

image

Here’s my workflow, pretty simple:

The files are arriving in my bubble app, so I’m pretty confident I got the endpoint right.

When I try to view any of the audio files directly from Bubble’s File Storage, the link opens but the audio doesn’t load at all:

When I try to play it through the app with an audio playing plugin, the plugin also can’t load the audio files.

I’d love help quickly please. Thank you!

As a follow-up, I temporarily subscribed to the paid PRO version and it does work with all the same settings. I don’t need any of the pro features and I believe this is an issue with the free plugin.

I would prefer the free plugin to be fixed rather than stay with the pro plugin.

Thank you.

Hi there,

Thank you for the detailed explanation — that really helps. We’ve forwarded this issue to our development team for immediate investigation, since the behavior you’re seeing (double .mp4 extensions, unplayable audio files, and the free version producing unusable output while the PRO version works) requires their involvement. We’ll do our best to get this sorted quickly.

In the meantime, it would be very helpful if you could share a bit more information so we can narrow the cause faster:

  • When did this workflow stop working — was it after a recent Bubble or plugin update?
  • Do all audio files behave this way, or only specific sizes?

Anything you can share will help our team reproduce the exact scenario and resolve it quicker.

Thanks again for reporting this — we’ll keep you updated as soon as we have news from the dev team.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

I reported the issue the same day I began using the plugin. It hadn’t ever worked for me.

I only tried files between 5 seconds to 3 minutes long. I tried about 7 files. They all consistently failed with the same experience.

Hi @tkgibbs310 :waving_hand:

We’ve just released an update for the Audio Recorder Free plugin that addresses the issue with recordings being saved with a double .mp4 extension and failing to play back.

The fix is now live in version 1.8.0.
Please update the plugin from your Plugins tab in the Bubble editor, refresh your app, and test your workflow again.

Let us know if everything works smoothly on your end, or if you notice anything unexpected — we’ll be here to help!

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
Banner_Last3

@ZeroqodeSupport When I try to record, I get the error:

Cannot read property ‘prepare’ of null

Then when I stop recording, it gives this error:

❌ Upload failed for recording_1776987987.mp4: Cannot read property ‘startsWith’ of undefined

I am using the endpoint value https://popcode.bubbleapps.io/version-test/fileupload (I also tried with the domain, same result) on Bubble Go (Android). Mic permissions are granted.

Workflow is just “start recording”, nothing else.

Hello @brenton.strine ,

Usually this error shows up for one of two reasons:

A value isn’t being passed correctly somewhere in the workflow (so the element ends up trying to work with null/undefined), or
There’s a library conflict with another plugin that uses similar native/web capabilities.
Could you please check whether either of these might be the case on your app?

Do you have any other plugins/elements that also use the microphone, record audio/video, or handle file uploads (e.g., camera/recorder plugins, uploader elements, media capture, etc.)?
The quickest way to verify a conflict is to test on a clean page:

  • Create a new blank page
  • Add only the Audio Recorder element + the minimal workflow (start/stop)
  • Use the same endpoint value
  • Test again

If it works on the clean page, then we’re likely dealing with a conflict or a workflow/value issue on the original page. If it still fails, please share your plugin list (or a screenshot of installed plugins) and we’ll narrow down which one might be interfering.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
BannerLast3

On that same page I have a workflow that opens the camera.

It’s actually pretty important for my use case to be able to use both the microphone and the camera on the same page. Are there any workarounds that you know of?

Hey @ZeroqodeSupport , I tried it on an isolated page and it’s still not working.

Cannot read properties of undefined (reading ‘prepare’)

Here’s the URL:

Hello @brenton.strine,

Thank you for your patience while we reviewed your setup. I checked your workflow, and it appears to be configured correctly—both the recording and the “spot” actions align with what’s recommended in the documentation and the demo page.

The main difference between the working version and yours is that your implementation doesn’t trigger an explicit microphone-permission request. You mentioned that you’ve granted microphone access, but on many modern devices/browsers microphone access still requires an explicit user interaction (for example, a button click) to prompt the permission request. Granting permission only in the device settings is often not sufficient.

When I previewed your app in the browser, it didn’t prompt for microphone access at all.

Could you please check this first and ensure the permission request is triggered on your test page? Once implemented, let us know whether the issue is resolved on your end.

Looking forward to your reply.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
BannerLast3

@ZeroqodeSupport as far as I’m aware there isn’t a workflow to trigger the microphone permission. Is there some other way to trigger the mic permission, other than initiating a recording, that you’re aware of?

If you look on the page I am displaying whether mic permission is granted. When you loaded it, does it say “MicPermission:yes” or “MicPermission:no”? For me it says yes.

@ZeroqodeSupport Just following up here.

Hello @brenton.strine :waving_hand:

Apologies for the delayed response. We’ve just received an update from our development team regarding a newly published release—version 1.10.0 of the Audio Recorder Free plugin for Bubble Mobile.

This update includes several improvements, including a fix related to recording via the microphone library, which may have been the cause of the issue you experienced.

Please update the plugin to the latest version. After doing so, the action to request microphone permissions should be available on your end.

As mentioned earlier, modern devices may require explicit permission requests to prevent unauthorized background microphone access—this is a built-in security measure to protect users.

We’ve also rechecked your demo page and reviewed the project’s Permissions tab, confirming that microphone access is enabled. At this point, there are no differences between your setup and ours, so the issue should now be resolved.

Please let me know once you’ve had a chance to test it.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
BannerLast3

Thank you @ZeroqodeSupport , that update fixed the issue I was having.

It seems that there is another bug where it is not possible to upload the recording to Bubble in the same workflow as stopping the recording.

Hello @brenton.strine,

We’re glad to hear the previous update resolved the earlier issues.

Regarding the newly observed behavior, what you’re describing may occur because the file is not yet ready for upload when the plugin stops recording.

To help prevent this, you could try adding a small delay using Bubble’s “Add pause before next action” workflow option, or apply an “Only when” condition based on the exposed state is Stopped.

If neither of these approaches resolves the workflow issue, please let us know and we’ll take another look into the problem.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
BannerLast3

Hello @brenton.strine,

Following up on our previous message to check if you had an opportunity to test the suggested workflow adjustments.

Did adding a pause before the next action or applying the “Only when” condition with the is Stopped state resolve the file upload issue?

If the file is still not uploading correctly within the same workflow, please let us know and we will investigate the problem further.

Best regards,
Support Team
Browse all Zeroqode Plugins for Bubble
BannerLast3