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

Base44 + splash screen

Splash screen, loading indicator and pull-to-refresh for your Base44 app

A white screen for two seconds after launch is how a Base44 app collects a Guideline 2.1 note or a one-star review. The native app opens instantly; your web app needs a moment. WebViewGold covers that moment with a branded splash, a native loading indicator and pull-to-refresh, and a few lines in your web app make the hand-off invisible.

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

Where the white flash comes from

The first request

The app starts in milliseconds, but the first HTML, CSS and JavaScript still have to come over the network. On a cold server (scale-to-zero hosting) or a weak connection that takes seconds. Without a splash, users and reviewers look at an empty WebView.

The empty single-page app

Most vibe-coded apps are React single-page apps. When the page has "finished loading", the root element can still be empty until JavaScript renders and the first data arrives. If the splash disappears exactly then, you see a blank frame.

Mismatched colors

A dark app behind a white splash background, or a white page background under a dark header, flashes on every launch. One background color shared by the splash, the HTML and the status bar removes it.

Prompt for Base44

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

Prompt to paste into Base44
This app will be published as a native app (WebViewGold) that shows a branded splash until the first page has loaded. Make the first seconds look polished:
1. On every page that loads data, show skeleton rows or cards while the data loads, never an empty list or a blank page.
2. Show the login screen immediately for logged-out users, with the same background color as the rest of the app.
3. Use one consistent page background color everywhere and tell me its hex value.
4. For actions that take more than two seconds (reports, AI features, imports), show progress text; when navigator.userAgent contains "WebViewGold", also navigate to spinneron:// when the action starts and to spinneroff:// when it ends.
5. Show a friendly error with a Try again button if loading fails.

My iOS WebView is finally approved. Thanks!!

Taha Farooqui · CodeCanyon

Configure a splash that covers the whole first load

Ten minutes in Config.swift and Config.java, then one rebuild.

  1. Enable the splash and add your image

    iOS: splashScreenEnabled in Config.swift and your square splash.gif (128, 512 or 1024 px) in the project root. Android: SPLASH_SCREEN_ACTIVATED in Config.java and splash.gif in the assets. Animated GIFs work; keep the animation short.

  2. Match the background color

    Set splashscreencolor on iOS and the splash background in colors.xml on Android to the exact background color of your first screen. Size the logo with scaleSplashImage and SCALE_SPLASH_IMAGE (percent of the shorter screen side; 0 hides it).

  3. Keep it up until the page is ready

    Set remainSplashOption (iOS) and REMAIN_SPLASH_OPTION (Android) to true: the splash stays until the start URL has loaded instead of giving way to the loading sign after a fixed splashTimeout / SPLASH_TIMEOUT. Optional: splashMinTime / SPLASH_MIN_TIME for a minimum duration and splashFadeTime / SPLASH_FADE_OUT for the fade-out, in milliseconds.

  4. Style the loading indicator for later page loads

    After launch, WebViewGold shows its native indicator whenever a page loads. On iOS pick spinner or progress bar (useLoadingSign, useLoadingProgressBar) and a color (loadingIndicatorColor); on Android switch it with ACTIVATE_PROGRESS_BAR.

  5. Paint the first frame in your web app

    Give the html element an inline background color in index.html that equals the splash color, and render a lightweight skeleton instead of an empty root while the session check and the first data load run. Then the hand-off from splash to web app is seamless.

Native spinner and pull-to-refresh from JavaScript

Client-side work is not a page load, so the native indicator does not appear on its own. Around AI generations, uploads or long backend calls in your Base44 app, switch it on and off yourself, and turn pull-to-refresh off on screens with their own gestures:

javascript
const inApp = navigator.userAgent.includes("WebViewGold"); // your custom user-agent token

async function withNativeSpinner(task) {
  if (inApp) window.location.href = "spinneron://";
  try {
    return await task();
  } finally {
    if (inApp) window.location.href = "spinneroff://";
  }
}

// usage
// const reply = await withNativeSpinner(() => fetch("/api/generate", { method: "POST", body }));

// maps, drag-and-drop boards, carousels: disable while the screen is open
function setPullToRefresh(enabled) {
  if (inApp) window.location.href = enabled ? "enablepulltorefresh://" : "disablepulltorefresh://";
}

Pull-to-refresh in one setting

  • iOS: set pulltorefresh to true and preventoverscroll to false (the gesture needs the bounce). Colors for light and dark mode: pulltorefresh_loadingsigncolour_lightmode, pulltorefresh_backgroundcolour_lightmode and the _darkmode variants (pull-to-refresh docs).
  • Android: set ENABLE_PULL_REFRESH to true in Config.java. The same enablepulltorefresh:// and disablepulltorefresh:// calls work on both platforms.
  • The gesture reloads the current URL. On screens of your Base44 app that hold unsaved input (a long form, a chat draft), switch it off while the screen is open.
  • Want fresh content when the app returns from the background? autoRefreshEnabled (iOS) and AUTO_REFRESH_ENABLED (Android) reload the page on foreground; leave them off for apps with long forms.

What gets flagged in review

  • A splash that ends before the page is ready, followed by a white screen. With remainSplashOption off and a slow first request, that is exactly what the reviewer sees, and a blank screen is a typical Guideline 2.1 finding (how to fix 2.1).
  • A long branded intro. Apple's Human Interface Guidelines treat the launch as a quick transition into the app; a splash that lasts as long as loading takes is fine, an extra five-second animation is not.
  • The WebViewGold placeholder splash or icon left in the build.
  • A login check that renders nothing for several seconds. Show the login form or a skeleton immediately.
  • A preview, password-protected or sleeping development URL as start URL: the splash ends on an error page.

Frequently asked questions

Is a splash screen required for the App Store?

Apple requires a launch screen, which the WebViewGold iOS project already includes. The branded splash on top is optional, but for an app that loads a web app it is the practical way to avoid a white screen while the first page loads.

How long should the splash stay?

As long as the first page takes to load and no longer. remainSplashOption (iOS) and REMAIN_SPLASH_OPTION (Android) do exactly that; add a minimum time of around one second only if a very fast load makes the logo flicker.

Why do I still see a white frame after the splash?

The page has loaded but your single-page app has not rendered yet, or its background differs from the splash color. Set an inline background color on the html element, render a skeleton right away and keep the splash color identical.

Can the splash be animated?

Yes, splash.gif may be animated on both platforms. Keep it square, small in file size and shorter than the typical load time so users do not see it cut off mid-animation.

Does the loading indicator show during client-side navigation in a Base44 app?

Not automatically: client-side route changes and fetch calls are not page loads. Use spinneron:// and spinneroff:// around long operations, and skeletons for short ones.

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 Base44 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.