Short answer: website to app in one paragraph
To convert a website into a mobile app, pick one of three methods. A PWA (add a manifest and service worker) is free and takes an afternoon, but it does not list in the App Store. A wrapper (Capacitor for HTML/CSS/JS sites, or a React Native WebView) packages your existing site into iOS and Android projects in a day, but Apple rejects wrappers with no native features under guideline 4.2. A native rebuild keeps your backend and API and replaces only the front end with real native screens. It used to take weeks; an AI app builder such as ShipNative can generate it from a description or a screenshot of your site.
The three paths, and what each really gets you
| Method | Effort | App stores? | Native feel | Best for |
|---|---|---|---|---|
| PWA (installable web app) | Lowest | ❌ Not really (limited) | ⚠️ Partial | Reach + speed, no store needed |
| Webview wrapper | Low | ⚠️ Risky (4.2 rejection) | ❌ Website in a shell | A quick store presence, if it passes |
| Native rebuild (reuse API) | Higher, or minutes with AI | ✅ Yes | ✅ Full | A real product that performs and monetizes |
Path 1: Make it a PWA
The cheapest, fastest option. Add a web app manifest and a service worker, and your site becomes installable, a home-screen icon, offline caching, a splash screen. No app store, no review, no $99 fee.
A minimal manifest.webmanifest, linked from your HTML with <link rel="manifest" href="/manifest.webmanifest">:
{
"name": "My App",
"short_name": "MyApp",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#111111",
"icons": [
{ "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }
]
}Add a service worker for offline caching, serve the site over HTTPS, and Chrome on Android will offer an install prompt. On iPhone, users install through Safari’s Share menu, “Add to Home Screen”.
The catch:iOS treats PWAs as second-class, no real push on older versions, no store discoverability, and limits on background behavior. A PWA is excellent for a tool your existing users adopt. It’s weak if discovery is your growth channel, because nobody finds a PWA by browsing the App Store.
Path 2: Wrap it (Capacitor or WebView), including plain HTML sites
A wrapper puts your website inside a native shell and ships it as an app. It sounds ideal, reuse everything, get a store listing. In practice it’s the path with the most rejections. There are two common ways to do it.
HTML to app with Capacitor
If your site is static HTML, CSS and JavaScript (or builds to a folder of them), Capacitor bundles those files into real Xcode and Android Studio projects:
npm i @capacitor/core
npm i -D @capacitor/cli
npx cap init "My App" com.example.myapp --web-dir=www
npm i @capacitor/ios @capacitor/android
npx cap add ios
npx cap add android
npx cap sync # copy www/ into both native projects
npx cap open ios # build and run in XcodePut your index.html and assets in www/ (or point --web-dirat your build output). Bundle the files rather than pointing the app at your live URL: Capacitor’s server.url option is meant for live reload during development, not production. Building for iOS needs a Mac with Xcode.
Live website in a React Native WebView
If you want the app to load your live site, an Expo app with a single React Native WebView screen does it, and leaves room to add native screens next to it later:
import { WebView } from 'react-native-webview';
export default function Home() {
return <WebView source={{ uri: 'https://example.com' }} style={{ flex: 1 }} />;
}App Store guideline 4.2rejects apps that are “simply a repackaged website.” If your wrapper adds no offline support, no push notifications, and no native features, expect a rejection. Google Play is more permissive but ranks wrappers poorly. Wrappers can work, but only once you’ve added enough genuine native capability that you’re halfway to a real app anyway.
Path 3: Rebuild it natively, and reuse your backend
The best outcome, and historically the most expensive. The key insight most people miss: you don’t rewrite the whole thing. Your backend, database, auth, and API endpoints stay exactly as they are. Only the front end changes, from HTML/CSS to native screens that call the same API your website already hits.
That means a native app gets you real performance, full device access (camera, notifications, biometrics), store discoverability, and in-app-purchase monetization, while your web app keeps running unchanged for desktop users.
The reason this used to be path-of-last-resort is cost: rebuilding a UI natively by hand takes weeks. That math is what changed.
The shortcut: describe the app, reuse the API
An AI app builder collapses the native-rebuild timeline. Instead of hand-coding every screen, you describe your product’s core flows, or upload a screenshot of your existing site, and get a working React Native app with navigation and data. You then point it at the API your website already uses, so there’s no second backend to maintain.
ShipNative does this: turn a description (or a screenshot of your website) into a native app previewable on your phone, with your own backend wired in, not a webview of your site, an actual native rebuild you fully own.
Which path should you pick?
- Your users already visit and just want convenience → PWA.
- You need a store listing tomorrow and have native features to add → wrapper, cautiously.
- You want a real product that ranks, performs, and monetizes → native rebuild that reuses your API.
Try the native path at shipnative.dev (free to try): describe your site’s core screens and see a native version running on your phone in minutes.