Date: December 16, 2025
Status: Major Pivot - From "Memory Saver" to "Power Tool for Web Apps"
Our original value proposition was weak:
- Safari's "Add to Dock" (macOS Sonoma) now creates proper PWAs
- "200-300MB RAM savings" isn't compelling for most users
- Competing with free built-in solution + paid polished apps (Unite $30, Coherence $40)
Stop building a "worse Safari" and start building a "Power Tool for Web Apps"
Safari's Add to Dock creates dumb windows. PWA-Kit creates smart, customizable web app containers with features Safari cannot provide due to Apple's philosophy of simplicity.
| Feature | Safari PWA | PWA-Kit |
|---|---|---|
| Ad Blocking | ❌ No | ✅ Per-app content blockers |
| Tracker Blocking | ❌ No | ✅ Built-in privacy protection |
| JS Injection | ❌ No | ✅ UserScript/Greasemonkey-style |
| CSS Injection | ❌ No | ✅ Custom stylesheets per app |
| Custom User-Agent | ❌ No | ✅ Per-app configuration |
| Proxy per App | ❌ No | ✅ Route specific apps through proxies |
| AI Integration | ❌ No | ✅ Local LLM sidebar (planned) |
| Session Control | ❌ Isolated only | ✅ Configurable isolation |
Decision: Focus on features Safari PWAs cannot do
Priority Order:
- Phase 0: Per-app content blocking (ads, trackers) - COMPLETED
- Phase 1: CSS/JS injection engine with UI
- Phase 2: Built-in ad block lists (EasyList integration)
- Phase 3: Optional AI sidebar (Ollama integration)
Rationale:
- Content blocking is immediate, tangible value
- "Block ads in your web apps" is a clear marketing message
- Builds on existing WKContentRuleListStore capability
- Low effort, high impact
Decision: Implement robust content blocking system
Components Created:
Sources/MacPin/ContentBlocker.swift- Main blocking enginetemplates/Resources/content-blocker-ads.json- Ad network rulestemplates/Resources/content-blocker-trackers.json- Tracker rules
Features:
- Predefined rule sets: ads, trackers, cookies, social, HTTPS upgrade
- Custom rule builder API
- Per-WebView application
- Enable/disable at runtime
Decision: Keep GitHub fork as PWA-Kit until v1.0
Reasoning:
- Original MacPin has 339 stars and brand recognition
- Better SEO: "PWA-Kit modernized" > "unknown project"
- Gradual transition strategy:
- v0.1-0.4: Market as "PWA-Kit - The Power Tool for Web Apps"
- v0.5+: Evaluate rebrand based on community feedback
- v1.0: Potential rebrand if significant traction
Decision: Maintain independent fork, do NOT submit PRs to kfix/MacPin
Reasoning:
- Original repo inactive (last commit Nov 2022, 3 years old)
- Our direction is fundamentally different (power tool vs educational)
- Changes are extensive and break backward compatibility
License Compliance:
- ✅ Keep GPL-3.0 license
- ✅ Maintain copyright attributions
- ✅ Credit MacPin in README prominently
Decision: Ship initial versions with Swift 5.10
Rationale:
- Swift 6 strict concurrency is correct but time-consuming
- Better to ship working MVP fast
- Community can help fix concurrency issues once interested
Decision: Distribute via Homebrew Cask initially
Why No App Store:
- Requires $99/year (no budget yet)
- GPL license conflicts with App Store terms
- Review process slow
- Can't distribute generated PWAs via App Store anyway
Decision: Pure SwiftUI for app builder UI
Architecture:
// Future GUI app structure
@MainActor
class AppConfiguration: ObservableObject {
@Published var url: String = ""
@Published var name: String = ""
@Published var enableAdBlocking: Bool = true
@Published var enableTrackerBlocking: Bool = true
@Published var customCSS: String = ""
@Published var customJS: String = ""
}| Tool | Price | Open Source | Content Blocking |
|---|---|---|---|
| Safari "Add to Dock" | Free | N/A | ❌ No |
| Unite 6 | $29.99 | ❌ No | ✅ Yes |
| Coherence X5 | $39.99 | ❌ No | Via extensions |
| PWA-Kit | Free | ✅ Yes | ✅ Yes |
- Free and open-source - No $30-40 cost
- Per-app content blocking - Safari PWAs can't do this
- Fully scriptable - JavaScript runtime per site
- Privacy-first - No telemetry, local-only
- Community-driven - Contributors welcome
- ✅ Content blocker compiles and applies rules
- ⏳ Ad-heavy sites load without ads
- ⏳ Memory usage remains reasonable (<150MB per app)
- v0.1 (Week 4): 50+ GitHub stars
- v0.3 (Week 8): 200+ stars, 5+ community PRs
- v0.5 (Week 12): 500+ stars
- v1.0 (Week 24): 1,000+ stars, 50+ contributors
- <20 stars after launch → marketing problem
- 0 community PRs after 2 months → code too complex
- Content blocking breaks sites → need better rules
- ✅ Implement ContentBlocker.swift
- ✅ Create ad/tracker blocking JSON rules
- ⏳ Integrate content blocker into WebView initialization
- ⏳ Add JavaScript API for toggling blockers
- ⏳ Test against ad-heavy sites (CNN, Forbes)
- Start CSS/JS injection UI
- Create example apps with blocking enabled
- Update README with new value proposition
- Prepare demo video showing ad blocking
-
AI Sidebar: Worth the effort vs crowded AI space?
- Decision deferred to Phase 3, gauge community interest
-
Proxy per App: How hard is NEAppProxyProvider?
- Decision: Research in Phase 2, may be too complex
-
Monetization: Still viable with free competition?
- Decision: PWAKitBuilder GUI app on Gumroad remains the plan
Last Updated: December 16, 2025
Next Review: January 1, 2026