WebView apps are at high risk of rejection on both Apple App Store and Google Play Store. This guide helps you maximize your approval chances.
Apple App Store: 55-70% ✅ (MEDIUM-HIGH)
Google Play: 75-85% ✅ (HIGH)
Apple App Store - Guideline 4.2.2:
- ❌ Rejects apps that are just "web clippings" (packaged websites)
- ❌ Requires features that "elevate the experience beyond the website"
⚠️ Very strict and unpredictable review process
Google Play Store - Spam Policy:
- ❌ Rejects "webview spam" without added value
- ✅ More tolerant if the app offers useful features
- ✅ More predictable review process
- ✅ Firebase Cloud Messaging integrated
- ✅ Foreground/background notification handling
- ✅ Topic subscription support
- ✅ Deep linking from notifications
Store Value: ⭐⭐⭐⭐⭐ (CRITICAL)
- This is the #1 feature required by Apple
- Demonstrates native functionality not available on web
- ✅ Automatic caching of 50 visited pages
- ✅ Persistent history between sessions
- ✅ Intelligent cache management (automatic cleanup after 7 days)
- ✅ Toast notifications for offline/online states
- ✅ Favorites/bookmarks for quick offline access
Store Value: ⭐⭐⭐⭐ (VERY HIGH)
- Explicitly required by Apple
- Demonstrates value beyond simple browsing
- ✅ Swipe from left edge to go back
- ✅ Fade + scale animation
- ✅ iOS-native experience
Store Value: ⭐⭐⭐ (MEDIUM-HIGH)
- Improves mobile user experience
- Demonstrates native integration
- ✅ Automatic system dark mode support
- ✅ Fixed light/dark modes
- ✅ Customizable themes
Store Value: ⭐⭐⭐ (MEDIUM)
- Modern standard requirement
- ✅ Opens tel:, mailto:, maps: in native apps
- ✅ Support for WhatsApp, Telegram, social media
Store Value: ⭐⭐ (LOW-MEDIUM)
- Nice to have, not critical
- ✅ Persistent cookies between sessions
- ✅ Session storage
- ✅ localStorage support
Store Value: ⭐⭐ (LOW-MEDIUM)
- Keeps users logged in
- Google/Firebase Console account
- Configured iOS Bundle ID
- Configured Android package name
- Go to Firebase Console
- Click "Add Project"
- Enter project name (e.g., "webwrap-app")
- Disable Google Analytics (optional)
- In Firebase Console, click "Add app" → iOS
- Enter Bundle ID (e.g.,
com.yourcompany.webwrap) - Download
GoogleService-Info.plist - Place the file in:
ios/Runner/GoogleService-Info.plist - Open
ios/Runner.xcworkspacein Xcode - Drag & drop
GoogleService-Info.plistinto the Runner project
Capabilities Configuration (Xcode):
- Select "Runner" target
- "Signing & Capabilities" tab
- Click "+" → "Push Notifications"
- Click "+" → "Background Modes"
- Enable:
- ✅ Remote notifications
- ✅ Background fetch
- In Firebase Console, click "Add app" → Android
- Enter package name (e.g.,
com.yourcompany.webwrap) - Download
google-services.json - Place the file in:
android/app/google-services.json
Modify android/build.gradle:
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.4.0'
}
}Modify android/app/build.gradle:
apply plugin: 'com.google.gms.google-services'
android {
defaultConfig {
minSdkVersion 21 // Increase if needed
}
}Modify assets/config.yaml:
notifications:
enabled: true
firebase_enabled: true # CHANGE FROM false TO true
show_in_foreground: true
play_sound: trueThe NotificationService is already ready, you just need to initialize it in lib/main.dart:
import 'package:firebase_core/firebase_core.dart';
import 'services/notification_service.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize Firebase
await Firebase.initializeApp();
// Initialize notifications
if (config.notifications.enabled && config.notifications.firebaseEnabled) {
final notificationService = NotificationService();
await notificationService.initialize();
}
runApp(WebWrapApp(config: config));
}-
App Store Description:
[App Name] is a native app that offers: - 📬 Real-time push notifications - 📴 Offline access with integrated history - 🌓 Automatic dark mode - 👆 iOS-native gesture navigation - ⚡ Mobile-optimized performance A premium mobile experience that goes beyond simple browsing. -
Screenshots: Show native features
- Push notification received
- Offline screen with history
- Dark mode
- Gesture navigation in action
-
App Review Notes (important!):
This app provides significant native functionality: 1. Push Notifications via Firebase Cloud Messaging - Not available on mobile Safari - Keeps users engaged 2. Advanced Offline Mode - 50 pages in automatic cache - Persistent history - Intelligent storage management 3. Native UI/UX - iOS-style gesture navigation - System dark mode integration - Mobile-first optimization To test notifications: - Username: [provide test account] - Notifications will arrive automatically -
Marketing URL: Dedicated app page
- Explain differences between web app and mobile app
- Highlight exclusive features
- ❌ Don't say "it's just a website wrapper"
- ❌ Don't link only the website as support URL
- ❌ Don't use website screenshots
- ❌ Don't copy description from website
-
Long Description:
- Emphasize native features
- Explain why the app is better than browser
- Mention offline mode and notifications
-
Feature Graphic: Professional design
- Show mobile features
- Use icons for notifications/offline
-
Category: Choose appropriate category
- NOT "Utilities" (too generic)
- Prefer content-specific categories
- ❌ Don't mention "webview" in description
- ❌ Don't say "mobile version of the site"
- ❌ Don't use only web screenshots
-
Website Content:
- If the site contains only generic/public content
- If the site doesn't require login/authentication
- If there's no exclusive content for the app
-
Duplicate Functionality:
- If the mobile website does EVERYTHING the app does
- If push notifications don't add real value
-
Non-Mobile-First Design:
- If the website inside the app is clearly desktop-oriented
- If there are mobile usability issues
-
Very Simple Site:
- Static blog without interaction
- Single landing page
- Purely informational content
-
No Added Mobile Value:
- Push notifications aren't used
- Offline mode irrelevant for the content
- No exclusive app features
-
Problematic Monetization:
- IAP that bypass Apple/Google (30% fee)
- External links for purchases
- Adult content
Option 1 - Add More Features (recommended):
- Barcode scanner for e-commerce
- Camera integration for photo upload
- Location services for geo features
- iOS/Android widgets
- Apple Watch / Wear OS companion
Option 2 - Exclusive App Content:
- "App Only" section on site with dedicated API
- Premium mobile-only features
- Early access to content for app users
Option 3 - Appeal with Explanations:
We have implemented significant native functionality:
- Push notifications with Firebase
- Offline caching with 50 pages
- iOS-native gesture navigation
- System dark mode integration
These features are not available on mobile Safari
and provide a superior user experience.
[Attach screenshots and demo video]
Usually simpler to resolve:
- Improve description emphasizing native features
- Add screenshots showing unique features
- Remove any reference to "webview" or "wrapper"
| Site Type | Apple Approval | Google Approval | Recommendations |
|---|---|---|---|
| E-commerce with login | 70% ✅ | 85% ✅ | Excellent - leverage notifications for orders/promotions |
| Social/Community | 65% ✅ | 80% ✅ | Good - notifications for interactions |
| News/Blog with accounts | 60% |
75% ✅ | Fair - notifications for new articles |
| SaaS/Dashboard | 75% ✅ | 90% ✅ | Excellent - already app-like by default |
| Simple informational site | 30% ❌ | 50% |
Difficult - consider alternatives |
| Single landing page | 10% ❌ | 20% ❌ | Very high rejection risk |
Before submitting to stores:
- Firebase configured and tested (iOS + Android)
- Push notifications working
- Offline mode tested (turn off WiFi)
- Dark mode tested
- Gesture navigation smooth
- No crashes or critical errors
- Tested on real devices (not just simulator)
- Screenshots show native features
- Description emphasizes mobile value
- No mention of "webview" or "wrapper"
- Support URL goes to dedicated page (not just homepage)
- Privacy policy updated (includes Firebase)
- Detailed app review notes (Apple)
- iOS/Android permissions justified
- GDPR-compliant privacy policy
- Terms of service present
- No copied content without permissions
With the implemented features (Push Notifications + Advanced Offline Mode), the app has good approval chances, especially on Google Play.
For Apple Store the situation is more uncertain, but you've implemented the main required features. The key is:
- Present the app as "mobile-first" not as a "wrapper"
- Demonstrate clear added value vs browser
- Have content that truly benefits from notifications/offline
Final note: Even with everything done correctly, Apple approval can be unpredictable. Be prepared for possible rejections and appeals.