iOS Development Without a Mac: PWA Approach
• Development
You don't need a Mac to create native-feeling iOS apps. Here's how I built and deployed an iOS app using only Fedora Linux and some clever web technologies.
The Problem
I wanted to build an educational iOS app for my kids, but I don't own a Mac. Traditional iOS development requires Xcode, which only runs on macOS. Cloud solutions like GitHub Codespaces with macOS runners cost $0.08/minute and add up quickly for development work.
Instead of spending thousands on Apple hardware or monthly fees on cloud services, I found a better way using Progressive Web App (PWA) technology.
The Solution: PWA + Capacitor
Modern iOS Safari supports PWAs that can be "installed" directly to the home screen, creating an experience indistinguishable from native apps. Combined with Capacitor for future native features, this approach gives you 90% of what you need for most apps.
What You Get
- No address bar - Completely hidden when launched from home screen
- Full-screen experience - Uses entire screen real estate
- Native app icon - Appears alongside real iOS apps
- Fast performance - No hybrid framework overhead
- Offline capability - With service workers (optional)
Implementation Steps
1. Set Up the Development Environment
# Create React TypeScript project
npm create vite@latest maze-adventures -- --template react-ts
cd maze-adventures
npm install
# Add Capacitor for future native features
npm install @capacitor/core @capacitor/cli @capacitor/ios
npx cap init "Maze Adventures" com.storbeck.mazeadventures
2. Configure PWA Meta Tags
The magic happens in your HTML head section. These meta tags tell iOS Safari to treat your web app as a native app:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-title" content="Maze Adventures">
<link rel="apple-touch-icon" href="/icon.png">
3. Development and Testing
# Start development server accessible on network
npm run dev -- --host 0.0.0.0
# Access from iPhone at:
# http://[your-ip]:5173/
4. Installation on iOS
- Open Safari on iPhone and navigate to your dev server
- Tap the Share button (square with arrow up)
- Scroll down and tap "Add to Home Screen"
- Confirm the installation
The app now launches from your home screen with zero browser UI - completely native feeling.
Key Meta Tag Explanations
apple-mobile-web-app-capable="yes"- Enables full-screen mode, hiding Safari's address bar and controls
apple-mobile-web-app-status-bar-style="default"- Controls iOS status bar appearance (default, black, or black-translucent)
user-scalable=no- Prevents pinch-to-zoom for a more app-like experience
apple-mobile-web-app-title- Sets the name displayed under the home screen icon
When to Use This Approach
Perfect For:
- Educational apps and games
- Productivity tools and utilities
- Content-focused applications
- MVP and prototyping
- Apps that don't need device-specific APIs
Consider Native When You Need:
- Camera or photo library access
- Push notifications (though web push is coming)
- Background processing
- Deep iOS integration
- App Store distribution
Future: Hybrid Approach
The beauty of starting with Capacitor is the upgrade path. If you later need native features, you can:
# Build iOS app remotely using EAS Build (free tier)
npm install -g eas-cli
eas build --platform ios
# Or use other cloud build services:
# - Codemagic
# - Bitrise
# - GitHub Actions with macOS runner
Your web app code remains unchanged - Capacitor simply wraps it in a native shell.
Performance and User Experience
PWAs often outperform hybrid apps built with frameworks like Cordova or Ionic because there's no JavaScript bridge overhead. Modern iOS Safari's JavaScript engine is fast enough for most interactive applications.
The user experience is genuinely indistinguishable from native apps for the majority of use cases. Users launch your app from the home screen and interact with it exactly as they would any other iOS app.
Conclusion
Don't let lack of Mac hardware stop you from iOS development. PWAs provide a legitimate path to creating professional iOS applications using any development platform.
This approach saved me thousands in hardware costs and hundreds in monthly cloud fees while delivering an excellent user experience. For many applications, it's not just a workaround - it's the better solution.