MARKETPLACE
PLUGINS
AUDIO PLAYER NATIVE MOBILE
Audio Player Native Mobile logo

Audio Player Native Mobile

Published September 2026
   β€’    Updated this week

Plugin details

🎧 Add an audio player to your Bubble native mobile app, with playlist support, a draggable waveform, cover art, lock screen controls, chapters, exposed states and workflow actions.
The plugin draws all of its own controls, so the player looks the same on iOS and Android and takes one colour from your brand. It works for music apps (queue, shuffle, repeat) and for podcast and audiobook apps (chapters, playback speed, 15 or 30 second skip).

Demo: https://plugins-testing-calendar.bubbleapps.io/version-test/api/1.1/mobile/preview?debug_mode=true&preview_view=Home
Editor: https://bubble.io/page?id=plugins-testing-calendar&test_plugin=1788755845093x974076376193433600_current&tab=Design&name=Home&type=page&elements=bTIYc

────────────────────────────────
🎡 PLAYLISTS
────────────────────────────────

  • Point four list fields at your database β€” links, titles, artists, cover images β€” and the player builds the playlist from them.
  • Or type a playlist by hand in one text field, one track per line, while you are still prototyping.
  • Or give it a single audio link if that is all you need.
  • A queue opens inside the player, shows every track, marks the one playing with a small equaliser, and plays any track you tap.
  • Shuffle changes what plays next without moving the track you are on, and the queue still reads in your order.
  • Repeat has three settings: off, repeat the playlist, repeat one track.
  • Previous goes to the track before it in the first few seconds, and restarts the current track after that.
  • Tracks advance on their own when one finishes. When the last one ends you get an event, so you decide what happens next rather than looping back silently.
  • The Load Playlist action swaps the whole playlist from a workflow without leaving the page.

────────────────────────────────
πŸ“Š THE WAVEFORM
────────────────────────────────

The progress bar is a waveform. Drag anywhere on it to scrub, with a time bubble that follows your finger, and the playhead glows softly while a track plays.

  • If your app stores real peak data, put it in the waveform_peaks field. Any scale works β€” the values are normalised and averaged to match the bar count.
  • If it does not, a waveform is generated from the track link instead. It is stable, so the same file always draws the same shape, and it is different for every track.
  • The waveform spans the full width it is given, and the played part is filled to the exact position, not one bar at a time.
  • A narrow player draws fewer bars rather than squeezing them.
  • If a waveform does not suit your design, switch progress_style to Line for a plain slim progress bar. Same gestures, same chapter marks.

────────────────────────────────
πŸ”’ LOCK SCREEN AND BACKGROUND
────────────────────────────────

  • The current track's title, artist and cover art appear on the lock screen and in the notification shade, with play, pause and skip that work from there.
  • Audio keeps playing when the app goes to the background.
  • It plays through the iPhone silent switch, which is off by default in most audio setups and is a common reason a player seems silent for no reason.

Both need background audio enabled in your app build, and neither can be seen in the browser preview β€” test them in BubbleGo or a build.

────────────────────────────────
🎨 DESIGN
────────────────────────────────

  • Two layouts. Card is the full player with cover art, for a now-playing screen. Bar is one compact row that fits inside a repeating group, under a header, or pinned to the bottom of a page.
  • Cover art in three sizes β€” large and centred, small beside the title, or hidden.
  • Dark and light themes, or Auto to follow the phone. Both are drawn deliberately rather than one being an inversion of the other.
  • One accent colour paints the play button, the played waveform, the playhead, the queue highlight and every active control. The icon colour on the play button is worked out by contrast, so a pale accent still reads.
  • Corner radius and inner padding are yours to set. There is no border, so the player sits on your page rather than in a box.
  • Cover art crossfades on a track change, and a title that does not fit slides while the track plays.
  • Times use tabular figures, so the digits do not shift the layout as they count.
  • It fits any width. Below about 330 points the previous-track button steps aside, below 260 the clock does too, and the waveform and play button always stay.

────────────────────────────────
πŸ“– CHAPTERS
────────────────────────────────

For podcasts and audiobooks. Give the player chapter times and titles and it draws marks into the waveform.

  • Two ways in: two list fields from your database, or one text field with a line per chapter, like 0:00 Introduction. Seconds, m:ss and h:mm:ss all work.
  • The chapter name appears over the player for a moment when a new one starts, then fades.
  • Two states tell you which chapter is playing and what it is called, so a list beside the player can highlight it.
  • The Go To Chapter action jumps to one by number or by name.

────────────────────────────────
βš™οΈ CONTROLS
────────────────────────────────

Play and pause, previous and next track, jump back and forward by a number of seconds you choose, playback speed from 0.75Γ— to 2Γ—, shuffle, repeat, and the queue. Each one can be hidden with its own field, so a podcast player and a music player can both look right without either carrying controls it does not need.

────────────────────────────────
πŸ”§ WORKFLOW ACTIONS (15)
────────────────────────────────

Play Β· Pause Β· Toggle Play Β· Next Track Β· Previous Track Β· Play Track Β· Seek To Β· Skip Β· Set Volume Β· Set Muted Β· Set Speed Β· Set Shuffle Β· Set Repeat Β· Load Playlist Β· Go To Chapter

────────────────────────────────
πŸ“‘ EXPOSED STATES (21)
────────────────────────────────

Is playing Β· Is muted Β· Is loading Β· Is ended Β· Current time Β· Duration Β· Progress percent Β· Buffered time Β· Volume Β· Playback rate Β· Current track index Β· Current track title Β· Current track artist Β· Current track link Β· Current track cover Β· Track count Β· Shuffle on Β· Repeat mode Β· Current chapter index Β· Current chapter title Β· Error message

────────────────────────────────
πŸ“£ EVENTS (10)
────────────────────────────────

On ready Β· On play Β· On pause Β· On end of track Β· On end of playlist Β· On track change Β· On seek Β· On time update Β· On chapter change Β· On error

πŸ“„ Documentation: https://wide-finch-c12.notion.site/Audio-Player-Documentation-3d561f4cca3a80d9a8a2f68dcc2e8b08?pvs=73
βœ‰οΈ Support: info@technocode.agency

$40

One time  β€’  Or  $4/mo

stars   β€’   0 ratings
2 installs  
This plugin does not collect or track your personal data.

Platform

Native mobile

Contributor details

Technocode logo
Technocode
Joined 2020   β€’   17 Plugins
View contributor profile

Instructions

🎧 Audio Player β€” setup
────────────────────────────────
1. Put the element on the page
────────────────────────────────

Drag Audio Player onto a mobile page. It takes the full width it is given and works out its own height.

────────────────────────────────
2. Give it audio
────────────────────────────────

For a single track, set audio_url to a direct link to the file. MP3, M4A, AAC, WAV and HLS (.m3u8) all work. Fill in track_title, artist_name and artwork_url as well β€” those three are what appear on the lock screen, not only inside the player.

For a playlist, point these four at lists from your database, in the same order:

  • track_urls β€” the audio links
  • track_titles
  • track_artists
  • track_artworks

Tick Is a list on all four. Without that box Bubble hands over a single value and your playlist ends up one track long, with no error to tell you.

Point them at the text, not at the records: Search for Audios:each item's Track, where Track is the field holding the link.

While prototyping, tracks_text is faster β€” one track per line:

[color=#0205d3][url=https://cdn.example.com/1.mp3]https://cdn.example.com/1.mp3[/url][/color] | Midnight City | M83 [color=#0205d3][url=https://cdn.example.com/2.mp3]https://cdn.example.com/2.mp3[/url][/color] | Outro | M83

────────────────────────────────
3. Pick a shape
────────────────────────────────

layout is Card for a now-playing screen with cover art, or Bar for a compact row that fits inside a repeating group or pinned to the bottom of the page.

artwork_style sets how much room the cover gets: Large, Compact or Hidden.

────────────────────────────────
4. Set the colours
────────────────────────────────

accent_color paints the play button, the played part of the waveform, the playhead, the queue highlight and every active control at once. theme is Dark, Light, or Auto to follow the phone.

corner_radius and inner_padding are yours. There is no border β€” if you want one, put the element in a group and give the group the border.

────────────────────────────────
5. Tick the checkbox defaults
────────────────────────────────

Several fields are meant to be on: show_skip_buttons, show_track_buttons, show_speed, show_shuffle_repeat, show_queue, show_times, play_in_background, lock_screen_controls, wave_pulse and show_chapter_labels.

A Bubble checkbox starts unticked, so tick the ones you want. If a control is missing from the player, this is almost always why β€” the element is hiding it because you told it to.

────────────────────────────────
6. Chapters (optional)
────────────────────────────────

Fill chapters_text with one line per chapter:

0:00 Introduction 1:45 The main part 4:10 Wrapping up

Or point chapter_times and chapter_titles at two lists in the same order. The waveform splits itself and the chapter name appears over the player when each one starts.

────────────────────────────────
7. Wire it to your workflows
────────────────────────────────

Fifteen actions drive the player from anywhere: Play, Pause, Toggle Play, Next Track, Previous Track, Play Track, Seek To, Skip, Set Volume, Set Muted, Set Speed, Set Shuffle, Set Repeat, Load Playlist, Go To Chapter.

Twenty-one states report back, including Current time, Duration, Progress percent, Current track index and title, Track count, Shuffle on, Repeat mode and Current chapter title.

────────────────────────────────
TIPS
────────────────────────────────

  • Continue where they left off. Save Current time and Current track index on the On pause event, and feed them back as start_at and start_track next time.
  • Decide what plays next. Use the On end of playlist event. It fires when the last track finishes and nothing is left β€” the player does not loop back to the first track on its own. Set repeat_mode to All if you want it to.
  • For podcasts: set skip_seconds to 15 or 30, keep the speed control on, and turn shuffle and repeat off. Shuffle means nothing on an episode.
  • For music: keep shuffle and repeat on, and hide the skip buttons if the row feels busy.
  • A mini player at the bottom of a page: layout Bar, artwork_style Compact, show_queue off, in a floating group.
  • Too many workflow runs? Raise time_update_interval. It controls both the On time update event and how often Current time is published.
  • One player per page. The actions talk to the last one placed.
  • Real waveforms: if your app has peak data, put it in waveform_peaks in any scale. Leave it empty and a waveform is generated from the track link.

────────────────────────────────
TESTING
────────────────────────────────

The browser preview runs React Native for Web, where the native audio engine does not exist. It falls back to a plain audio element, which is fine for checking layout, the waveform, the queue and chapters.

Playback itself, lock screen controls, background audio and the iPhone silent switch can only be tested in BubbleGo or a build.

πŸ“„ Full documentation:  https://wide-finch-c12.notion.site/Audio-Player-Documentation-3d561f4cca3a80d9a8a2f68dcc2e8b08?pvs=73

Types

This plugin can be found under the following types:
Element   β€’   Event   β€’   Action

Categories

This plugin can be found under the following categories:

Resources

Support contact
Documentation
Tutorial

Rating and reviews

No reviews yet

This plugin has not received any reviews.
Bubble