Skip to content

Mobile & PWA overview

ShareOut artifacts are responsive by default. Add mobile_html and pwa to your publish call and you get automatic device detection, app-like navigation, offline support, and an “Add to Home Screen” prompt — with no separate build pipeline.

Responsive HTMLShareOut Mobile
Add to homescreenBrowser bookmarkNative app icon + splash
Full-screen modeAlways has URL barNo browser chrome
Offline supportRequires connectionService worker caching
Touch gesturesBasic scrollingSwipe nav, pull-refresh
NavigationLinks onlyBottom tabs, stack, drawer
TransitionsPage reloadsNative-feel animations

Publish one artifact with both versions. ShareOut serves the right one automatically:

User agentVersion served
Desktop browserhtml
Mobile browsermobile_html (if provided)
Tablethtml by default

Override with ?v=web or ?v=mobile.

const sdk = new ShareOut();
await sdk.publish({
slug: 'my-app',
title: 'My App',
html: webHtml, // served to desktop
mobile_html: mobileHtml // served to mobile browsers
});

Add the pwa key to make the artifact installable — see PWA setup.

The mobile SDK (shareout-mobile.js) ships three navigation styles:

Bottom tabs — main navigation, thumb-reachable:

ShareOut.mobile.navigation({ type: 'bottom-tabs', tabs: [
{ id: 'home', icon: 'home', label: 'Home' },
{ id: 'search', icon: 'search', label: 'Search' },
{ id: 'profile', icon: 'user', label: 'Profile' }
], onChange: tabId => showView(tabId) });

Stack — push/pop screens with animated transitions:

ShareOut.mobile.navigation({ type: 'stack', initialView: 'list' });
ShareOut.mobile.push('detail', { id: 123 });
ShareOut.mobile.pop();

Drawer — slide-in side menu:

ShareOut.mobile.navigation({ type: 'drawer', position: 'left', items: [
{ id: 'dashboard', icon: 'grid', label: 'Dashboard' },
{ id: 'settings', icon: 'cog', label: 'Settings' }
] });
// Swipe between views
ShareOut.mobile.swipe({ element: '#main',
onSwipeLeft: () => showNextView(),
onSwipeRight: () => showPrevView()
});
// Pull to refresh
ShareOut.mobile.pullToRefresh({ element: '#content',
onRefresh: async () => fetchNewData()
});
// Haptic feedback
ShareOut.mobile.haptic('success'); // light | medium | heavy | success | error
  • Thumb-first — primary actions in the bottom 60 % of the screen.
  • Tap targets ≥ 48 × 48 px — use padding to expand small icons.
  • Content > chrome — keep navigation bars thin; let content dominate.
  • Immediate feedback — touch highlight in < 100 ms, spinner after 300 ms.
  • Offline-first — show cached data and a banner when the connection drops.
  • Respect system settingsprefers-color-scheme, prefers-reduced-motion.

Add a separate mobile_html when:

  • Navigation needs to move to the bottom of the screen.
  • Cards should stack vertically rather than in a grid.
  • You want swipe gestures or pull-to-refresh.
  • The desktop layout relies on hover states or wide sidebars.

A single responsive layout is fine for reports and read-only dashboards that reflow cleanly at narrow widths.

FeatureiOS SafariChrome AndroidSamsung Internet
PWA install14+72+12+
Service worker11.3+45+4+
Web App Manifest11.3+39+4+
Haptic feedback13+89+Limited
Fullscreen API12+38+4+
  • PWA setup — manifest, offline caching, install prompt, icons.
  • SDK reference — data stores work the same in PWA mode.