Skip to content
WebViewGold Vibe Coding to App Store
English
Get WebViewGold

Bolt + video and audio

Native video and audio playback for your Bolt app

An HTML5 video tag works inside the app, but long lessons feel cramped and playback usually stops when the user switches apps. With WebViewGold your Bolt app hands a stream URL to the native player with one link (startnativevideo://), so viewers get fullscreen and Picture-in-Picture on both platforms and AirPlay on iPhone. On iOS you can also keep HTML audio playing in the background for podcasts, radio and audio courses.

From $109 one-time per platform, or let our team do it all from $698.

  • Approval guarantee – or money back within 14 days
  • No coding needed
  • One-time payment, free updates
  • 24/7 human support
  • Made in Germany since 2014 · ISO 27001

What the native player adds

Native player with Picture-in-Picture

Link to startnativevideo://videostreamurl= followed by a direct stream URL and WebViewGold opens the system video player on iOS and Android. Users can shrink the video into a floating window and keep browsing the app, or even switch to another app.

AirPlay and familiar controls

On iPhone and iPad the native player brings AirPlay, fullscreen and the standard playback controls users already know. No custom player library to maintain in the web app.

Background audio on iOS

For podcasts, radio streams, meditations and audio lessons, the HTML background audio setup keeps the web app's audio playing when the iPhone is locked or another app is in front. It is a setting in the Xcode project, shown step by step in the iOS documentation video.

Direct stream URLs only

The native player needs an .mp4 file or an HLS .m3u8 stream, not the URL of a page that embeds a video. Streaming hosts such as Mux, Cloudflare Stream or Bunny Stream give you HLS URLs; YouTube and Vimeo pages stay normal embeds.

Prompt for Bolt

Paste this into Bolt to implement the web-app side. Review the result, publish, then test inside the WebViewGold app.

Prompt to paste into Bolt
Prepare video and audio playback for our native WebViewGold app. Add a MediaPlayer component: in normal browsers it renders an HTML5 video element with controls, playsinline and a poster; when navigator.userAgent contains "WebViewGold" it renders a Play button that sets window.location.href to "startnativevideo://videostreamurl=" + streamUrl, where streamUrl is a direct .mp4 or HLS .m3u8 link. Create a Netlify Function get-stream-url that verifies the Supabase access token from the Authorization header, checks that the user may watch the lesson and returns a signed Supabase Storage URL valid for two hours, using SUPABASE_SERVICE_ROLE_KEY from the Netlify environment. Never expose that key through a VITE_ variable. For the podcast page, keep a standard audio element with controls and a visible play button. Show a clear error state if the stream URL cannot be loaded.

My iOS WebView is finally approved. Thanks!!

Taha Farooqui · CodeCanyon

Add native playback step by step

About 30 minutes, most of it testing on real phones.

  1. Get a direct stream URL

    Use an .mp4 file from your storage or an HLS .m3u8 playlist from your video host. Long lessons stream better as HLS, because the player adapts the quality to the connection.

  2. Make the URL playable on its own

    The native player loads the stream itself and may not see the login session of the web view. For paid lessons, create a short-lived signed URL on the server after checking access, and pass that.

  3. Call the bridge inside the app only

    Set a custom user agent that contains a token such as WebViewGold (useragent_iphone and useragent_ipad in Config.swift, USER_AGENT in Config.java). When it is present, the Play button navigates to startnativevideo://videostreamurl= plus the stream URL; in a browser, the normal <video> element plays.

  4. Switch on background audio if you need it (iOS)

    Only for apps whose audio should keep playing with the screen locked. Follow the HTML background audio video in the iOS docs, then test with the phone locked and with another app in front.

  5. Test like a viewer

    Start a video, open Picture-in-Picture, browse to another page, lock the phone, rotate to landscape, and try a slow mobile connection. Do it on an iPhone and on an Android phone.

A play helper for app and browser

One function for both worlds. The signed stream URL comes from the server side of your stack: Supabase, Firebase or your own API.

javascript
// Custom user agent containing "WebViewGold" set in Config.swift / Config.java
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1;

// streamUrl: direct .mp4 or HLS .m3u8 (signed and short-lived for paid content)
function playVideo(streamUrl, videoEl) {
  if (IN_APP) {
    window.location.href = "startnativevideo://videostreamurl=" + streamUrl;
  } else {
    videoEl.src = streamUrl; // HLS outside Safari needs a library such as hls.js
    videoEl.play();
  }
}

// In the browser keep a normal player:
// <video controls playsinline preload="metadata" poster="/poster.jpg"></video>

Store review and content rules

  • Apple Guideline 2.5.4: background services are for their intended purpose. Enable background audio only when the app plays audio the user expects to keep hearing (podcast, radio, audio course), and tell the reviewer in the review notes where to find it.
  • Courses and premium videos sold inside the iOS app are digital content: Apple expects In-App Purchase (Guideline 3.1.1) and Google Play Billing applies on Android. See in-app purchases for vibe-coded apps.
  • Only stream what you have the rights to. Apps full of third-party films, sports or TV channels get questions about licensing (Guideline 5.2 on intellectual property).
  • A video catalog alone can look like a website (Guideline 4.2). Native playback with Picture-in-Picture, push reminders for new lessons and a clean offline screen make the case for an app together.
  • Android: the WebViewGold docs describe the native video player with Picture-in-Picture, not a background audio switch. Test what your audio does when the app is minimized and do not promise lock-screen playback in the Play listing until you have verified it.

Frequently asked questions

Can I play YouTube or Vimeo videos in the native player?

Not through startnativevideo://, which needs a direct .mp4 file or HLS .m3u8 stream. YouTube and Vimeo embeds usually keep working as normal iframes inside the app, with their own player and fullscreen button.

Does Picture-in-Picture work on iOS and Android?

Yes. Both the iOS and the Android documentation describe startnativevideo:// with Picture-in-Picture: the video keeps playing in a floating window while the user browses the app or another app.

Will audio keep playing when the screen is locked?

On iOS, yes, once HTML background audio is enabled in the Xcode project as shown in the iOS docs. On Android, the WebViewGold docs do not describe a background audio mode, so test your player on a device before you promise it.

Do I need In-App Purchase for paid videos in my Bolt app?

If the app itself sells the course or subscription, yes: Apple expects In-App Purchase for digital content (Guideline 3.1.1) and Google expects Play Billing. Content bought on your website can often be unlocked in the app as well; check the current text of Guidelines 3.1.1 and 3.1.3, because the rules on external purchase links differ by region.

Can users download videos to watch offline?

Links ending in .mp4 are handled by the WebViewGold file downloader, which saves the file on the device. A complete offline library inside the Bolt web app is a larger project; for most course apps, streaming plus the native offline screen is enough.

Three ways to get your app into the stores

Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.

Do it yourself

$109 per platform, one-time

The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.

See plans on the main page

Cloud Builder

$349 per license, one-time add-on

No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.

How the Cloud Builder works Try the free demo

Full Service

$698 per platform $798

Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.

Full Service details Powered by WeSetupYourWebViewApp

Winter Sale prices valid until December 31, 2026.

Ready to ship your Bolt app?

App Store & Google Play approval guarantee – or your money back within 14 days

Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.

Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.