Installing as PWA
Desktop Installation
Chrome / Edge / Brave
- Visit the Kayston’s Forge website
- Look for the install icon in the address bar (⊕ or computer icon)
- Click the icon and select Install
- The app will open in its own window without browser UI
- Click the three-dot menu (⋮) in the browser
- Select Install Kayston’s Forge or Create Shortcut
- Check Open as window for a native app experience
Firefox
- Visit the Kayston’s Forge website
- Click the three-line menu (≡) > Install Kayston’s Forge
- Confirm installation in the dialog
Safari (macOS)
- Visit the Kayston’s Forge website
- Go to File > Add to Dock (macOS Sonoma+)
- The app will be added to your Dock as a standalone app
Mobile Installation
iOS Safari
- Open Kayston’s Forge in Safari
- Tap the Share button (square with arrow)
- Scroll down and tap Add to Home Screen
- Edit the name if desired and tap Add
- The app icon appears on your home screen
Android Chrome
- Open Kayston’s Forge in Chrome
- Tap the three-dot menu (⋮)
- Select Add to Home screen or Install app
- Follow the prompts to install
- The app icon appears on your home screen
PWA Manifest
The PWA configuration is defined inpublic/manifest.json:
Manifest Properties
- name: Full app name shown during installation
- short_name: Short name for home screen icons (limited space)
- start_url: URL to load when the app is launched
- display:
standaloneremoves browser UI for a native app feel - background_color: Warm cream (#fdf6e3) from Solarized Light theme
- theme_color: Brand gold (#b58900) for OS-level UI elements
- icons: SVG icons at 192x192 and 512x512 for crisp display at any size
Service Worker
The app uses a custom service worker (public/sw.js) for offline caching and performance.
Caching Strategy
The service worker uses a hybrid caching approach:Network-First for HTML
- Navigation requests (HTML pages) fetch from the network first
- If the network is unavailable, fall back to the cache
- Successful responses are cached for future offline use
Why network-first for HTML? This ensures users always get the latest version of the app when online, while still functioning offline.
Cache-First for Static Assets
- JavaScript, CSS, images, and other static assets load from cache first
- If not cached, fetch from the network and cache the response
- This provides instant load times for repeat visits
Cache Versioning
The service worker uses a versioned cache name (kaystons-forge-v2):
- When the cache version changes, old caches are automatically deleted
- This prevents stale assets from persisting across updates
Registration
The service worker is registered inAppShell.tsx on app load:
Service worker registration failures are silently ignored — the app works fine without offline support if the browser doesn’t support service workers.
Offline Functionality
What Works Offline
✅ All 51 tools — Every tool runs client-side with no network requests✅ Full UI — Navigation, command palette, sidebar all work offline
✅ History & settings — IndexedDB works offline
✅ Tool execution — All encoding, formatting, and conversion happens locally
✅ PWA installation — Can be installed and launched offline
What Requires Internet
❌ Initial load — First visit requires downloading the app (typical for PWAs)❌ Updates — New features and bug fixes need an internet connection
❌ External links — Documentation links to external sites won’t work offline
Benefits of PWA
Performance
- Instant load — Static site cached after first visit
- No round trips — All processing happens in your browser
- Fast execution — No server latency or API calls
Privacy
- Zero data transmission — All data stays on your device
- No tracking — No analytics, no cookies (except for app state)
- Offline operation — Works in air-gapped environments
User Experience
- Native feel — Standalone window, no browser UI
- App launcher — Appears in OS app switcher and spotlight search
- Keyboard shortcuts — Full support for app-wide shortcuts
- Notifications — Could support push notifications (not currently implemented)
Browser Support
PWA features are supported in:| Browser | Desktop Install | Mobile Install | Service Worker | Offline |
|---|---|---|---|---|
| Chrome | ✅ | ✅ | ✅ | ✅ |
| Edge | ✅ | ✅ | ✅ | ✅ |
| Firefox | ✅ | ✅ | ✅ | ✅ |
| Safari | ✅ (macOS 14+) | ✅ | ✅ | ✅ |
| Brave | ✅ | ✅ | ✅ | ✅ |
Updating the App
When a new version is deployed:- Service worker detects update — New
sw.jswith different cache version - New assets download — Next navigation fetches fresh HTML/JS/CSS
- Old cache cleared — Previous cache version is deleted on activation
- User sees update — Changes appear on next page load or reload
Force update: To immediately get the latest version, do a hard refresh (
Cmd/Ctrl+Shift+R) or clear browser cache.Uninstalling the PWA
Desktop
Chrome / Edge / Brave
- Open the installed app
- Click the three-dot menu in the title bar
- Select Uninstall Kayston’s Forge
- Go to
chrome://apps(Chrome) oredge://apps(Edge) - Right-click the Kayston’s Forge icon
- Select Remove from Chrome/Edge
Firefox
- Visit
about:preferences#applications - Find Kayston’s Forge in the list
- Click Remove
Safari (macOS)
- Locate the app icon in your Dock
- Right-click and select Options > Remove from Dock
Mobile
iOS
- Long-press the app icon on your home screen
- Tap Remove App > Delete App
Android
- Long-press the app icon
- Drag to Uninstall or tap App info > Uninstall
Troubleshooting
App Won’t Install
- Check HTTPS: PWAs require HTTPS (production site) or localhost (development)
- Clear cache: Old service workers can interfere — clear browser cache and try again
- Update browser: Ensure you’re using a recent browser version
Offline Mode Not Working
- Check service worker status in DevTools:
- Chrome: DevTools > Application > Service Workers
- Firefox: DevTools > Application > Service Workers
- Verify the service worker is activated and running
- Check cache storage has entries for the app
App Not Updating
- Do a hard refresh:
Cmd/Ctrl+Shift+R - Clear site data: DevTools > Application > Clear storage
- Unregister service worker manually in DevTools
Future Enhancements
Planned PWA improvements:- Background sync — Sync history to cloud when connection is restored
- Push notifications — Notify when new tools are added
- Share target — Accept shared text from other apps
- Shortcuts — Quick actions from app icon (e.g., “New JSON Formatter”)
- File handlers — Open JSON/YAML files directly in the app