Skip to content

Expo Showcase Demo

This is the public hands-on demo app for the package.

Run a full Expo application that demonstrates package UI, runtime behavior, and customization with a clean, production-style structure.

Location

  • Repo path: examples/demo

What You Can Feel Immediately

  • Expo Router tabs (Info Screen, Banner Demo, Customize) with TypeScript
  • Default UpdateBanner plus a custom banner renderer toggle
  • OTAInfoScreen in both tab and modal usage patterns
  • useOTAUpdates() telemetry with status, metadata, and action triggers
  • Channel surfing — interactive runtime channel switching UI (production/staging/preview)
  • Controls to toggle banner/info overrides and simulate update states
  • Native-tabs compatibility strategy with fallback tabs for unsupported/unstable iOS ranges
  • Header coordination patterns to avoid double-header and content-overlap issues

This demo is intentionally tuned to surface real integration edge cases early (header coordination, safe-area behavior, and tab compatibility) so production apps can adopt safer defaults.

Screenshots

Live Demo
Live Demo — Banner, status, and lifecycle controls
Info Screen
Info Screen — Version details and update actions
Settings
Settings — Customization and channel surfing

Structure

  • app/: route files only
  • src/ota/: provider shell, settings context, palettes, translations
  • src/features/: feature-level screen composition
  • src/components/: reusable UI building blocks

Run Locally

bash
pnpm install
pnpm --dir examples/demo start

Then open with Expo Go or simulator.

Expo SDK

This demo targets Expo SDK 54 (latest stable at implementation time).

Local Package vs Published Package

By default, the showcase uses the local package from this repository:

json
"@ddedic/expo-fancy-ota-updates": "file:../.."

If you want to verify against npm instead, replace it with:

json
"@ddedic/expo-fancy-ota-updates": "^1.5.0"

Next Steps

Released under the MIT License.