Ir al contenido

Mobile y PWA — panorama general

Los artifacts de ShareOut son responsivos por defecto. Agregá mobile_html y pwa en tu llamada a sdk.publish() y obtenés detección automática de dispositivo, navegación tipo app, soporte offline y un prompt de “Agregar a la pantalla de inicio” — sin pipeline de build separado.

HTML responsivoShareOut Mobile
Agregar a la pantalla de inicioFavorito del navegadorÍcono nativo + splash
Modo pantalla completaSiempre muestra la barra de URLSin chrome del navegador
Soporte offlineRequiere conexiónCaché con service worker
Gestos táctilesScroll básicoSwipe, pull-to-refresh
NavegaciónSolo linksTabs inferiores, stack, drawer
TransicionesRecargas de páginaAnimaciones nativas

Publicás un solo artifact con ambas versiones. ShareOut sirve la correcta automáticamente:

User agentVersión servida
Navegador de escritoriohtml
Navegador móvilmobile_html (si está definido)
Tablethtml por defecto

Podés forzarlo con ?v=web o ?v=mobile.

const sdk = new ShareOut();
await sdk.publish({
slug: 'my-app',
title: 'My App',
html: webHtml, // se sirve en escritorio
mobile_html: mobileHtml // se sirve en navegadores móviles
});

Agregá la key pwa para hacer el artifact instalable — ver Configuración PWA.

El SDK móvil (shareout-mobile.js) incluye tres estilos de navegación:

Bottom tabs — navegación principal, al alcance del pulgar:

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

Stack — push/pop de pantallas con transiciones animadas:

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

Drawer — menú lateral deslizable:

ShareOut.mobile.navigation({ type: 'drawer', position: 'left', items: [
{ id: 'dashboard', icon: 'grid', label: 'Dashboard' },
{ id: 'settings', icon: 'cog', label: 'Ajustes' }
] });
// Swipe entre vistas
ShareOut.mobile.swipe({ element: '#main',
onSwipeLeft: () => showNextView(),
onSwipeRight: () => showPrevView()
});
// Pull to refresh
ShareOut.mobile.pullToRefresh({ element: '#content',
onRefresh: async () => fetchNewData()
});
// Feedback háptico
ShareOut.mobile.haptic('success'); // light | medium | heavy | success | error
  • Thumb-first — las acciones principales en el 60 % inferior de la pantalla.
  • Targets táctiles ≥ 48 × 48 px — usá padding para agrandar íconos pequeños.
  • Contenido > chrome — barras de navegación delgadas; el contenido domina.
  • Feedback inmediato — highlight táctil en < 100 ms, spinner después de 300 ms.
  • Offline-first — mostrá datos en caché y un banner cuando se corta la conexión.
  • Respetá las preferencias del sistemaprefers-color-scheme, prefers-reduced-motion.

Agregá un mobile_html separado cuando:

  • La navegación necesita moverse al fondo de la pantalla.
  • Las cards deben apilarse verticalmente en vez de en grilla.
  • Querés gestos de swipe o pull-to-refresh.
  • El layout de escritorio usa hover states o sidebars anchas.

Un único layout responsivo es suficiente para reportes y dashboards de solo lectura que se reorganizan bien en pantallas angostas.

FeatureiOS SafariChrome AndroidSamsung Internet
Instalación PWA14+72+12+
Service worker11.3+45+4+
Web App Manifest11.3+39+4+
Feedback háptico13+89+Limitado
Fullscreen API12+38+4+