A hybrid app is a mobile app whose screens are built with web technology (HTML, CSS and JavaScript) and then packaged inside a thin native container. To the user it looks like any app from the App Store or Google Play, but most of its code is shared between iPhone and Android.
How the wrapper works
The native shell contains a WebView, which is an embedded browser engine without the address bar. Your web code runs inside it. When the app needs something a web page cannot do on its own, such as reading contacts or sending a push notification, it calls a plugin that bridges to native code. Apache Cordova popularised this approach, and Ionic's Capacitor is the common modern choice.
The term is used loosely. Frameworks like React Native and Flutter also give you one codebase for two platforms, but they draw real native components (React Native) or render with their own engine (Flutter) instead of using a WebView. Many people call them cross-platform rather than hybrid, and the distinction matters for performance.
An example: a florist's ordering app
A florist already has a mobile-friendly ordering site built in React. Customers keep asking for an app with delivery notifications. A developer wraps the existing frontend with Capacitor, adds the push notification plugin, and submits builds to both stores. Most of the work already done for the website carries over, and only the native-specific pieces are new.
When hybrid is a sensible choice
Hybrid suits apps that are mostly forms, lists and content: ordering, bookings, membership cards, catalogues. It lets a small team ship to both stores without hiring two specialists. It is a weaker fit for heavy animation, games, or features that lean hard on hardware, where a native app feels smoother. If you do not need the stores at all, a progressive web app is simpler still.
Common hybrid app mistakes
- Shipping the website unchanged. Apple's review guidelines reject apps that are little more than a repackaged site, so the app needs real app features.
- Desktop-sized tap targets and hover menus. WebView screens must be designed for thumbs.
- Letting plugins go stale. Outdated bridge plugins are a common cause of builds breaking after an OS update.
- Loading everything from the network. Bundle the core screens in the app so it opens without a signal.
Related terms
- Native app: built separately per platform with its own tools.
- Progressive web app: installable from the browser, no store wrapper.
- Web app: the browser-only version of the same idea.
- JavaScript framework: what most hybrid screens are built with.