Repository navigation
Firebase Hosting Preview Channels
Location:
docs/wiki/Firebase-Hosting-Preview-Channels.md
Target Audience: Core Engineers, QA Testers, and Product Maintainers
Firebase Hosting Preview Channels provide ephemeral, fully isolated environments for deploying and verifying changes in the Selah Scripture Audio Meditation web client prior to production release.
Because live users actively access the primary production URL (https://selahword.web.app), direct deploys to the live channel are prohibited for unverified or experimental code.
graph TD
A[Git Feature Branch / Hotfix] -->|flutter build web --release| B(Release Artifacts build/web)
B -->|firebase hosting:channel:deploy <name>| C[Preview Channel]
C -->|Ephemeral URL| D[https://selahword--<name>-<hash>.web.app]
D -->|QA Verification & Audio Auditing| E{QA Sign-off?}
E -->|Approved| F[firebase hosting:clone selahword:<name> selahword:live]
E -->|Rejected| G[firebase hosting:channel:delete <name>]
F --> H[Live Production https://selahword.web.app]
-
Origin Separation:
- Each preview channel receives a distinct suborigin (
https://selahword--<channel-name>-<hash>.web.app). - LocalStorage, IndexedDB, and PWA CacheStorage are isolated per origin. Staging builds cannot poison production user states.
- Each preview channel receives a distinct suborigin (
-
Search Engine Protection:
- Every response from a preview channel automatically includes the header
X-Robots-Tag: noindex. - Googlebot and other indexing spiders ignore preview channels.
- Every response from a preview channel automatically includes the header
-
Time-To-Live (TTL):
- Channels automatically expire after 7 days (or custom duration via
--expires). - Prevents stale environments from accumulating.
- Channels automatically expire after 7 days (or custom duration via
# General syntax
firebase hosting:channel:deploy <channel_id>
# Example: Hotfix verification
firebase hosting:channel:deploy hotfix-v0-3-1
# Example: PR testing with 48-hour expiration
firebase hosting:channel:deploy pr-90 --expires 48hfirebase hosting:channel:list --site selahwordfirebase hosting:clone selahword:<channel_id> selahword:livefirebase hosting:channel:delete <channel_id> --site selahwordWhen validating a preview URL:
-
Verify Headers & Status:
curl -I https://selahword--<channel_id>-<hash>.web.app
Confirm
HTTP/2 200andx-robots-tag: noindex. -
Verify Scripture Audio Playback:
- Test BSB (Berean Standard Bible) bundled audio.
- Test WEB (World English Bible) online streaming.
- Test NIV excerpt text and verify Text-to-Speech (TTS) fallback plays smoothly without claiming "Offline / Airplane Mode".
-
Verify Firebase Analytics Integration:
- Confirm Google tag
G-7LFS54TTFMfires in browser DevTools. - Verify events populate Firebase DebugView in real time.
- Confirm Google tag
-
Verify Mobile Responsive Design:
- Open on iOS Safari and Android Chrome viewports.
- Confirm player controls, scrub bar, speed picker, and version footer format cleanly.
Overview
- π Welcome Home
- π Onboarding & Contributor Guide
- π Soft Launch Checklist
- π Review Guide Tomorrow Night
πΏ Product & Ministry
- Product & Ministry Home
- π Sharing & Invitation Kit
- User Feedback & Prayer Triage
- Data-Driven Ministry Insights
βοΈ Engineering & Architecture
- Engineering Home
- Audio Platform Matrix: Web vs PWA vs APK
- Firebase Hosting Previews
- Feedback Technical Architecture
- Firebase Analytics & Telemetry
- Releases & Roadmap
- Acoustic Calibration Guide
- WhisperX Alignment ADR
π Quick Links