App Review Tips
Tips for passing Google Play and App Store review
Why Do You Need This Guide?
Unveily SDK is a WebView-based hybrid app solution. Google Play and Apple App Store strictly review apps that behave differently after review compared to during review.
The good news is that Unveily SDK is already designed to be review-friendly.
Why Unveily SDK Is Safe for Review
Native Features Are Fixed at Build Time
| Item | Dynamically Changeable? | Description |
|---|---|---|
| Bridge function list | No | Hard-coded in native code, cannot be added without app update |
config.json module ON/OFF | No | Included in assets at build time, fixed |
| App permissions (camera, location, etc.) | No | Fixed in AndroidManifest.xml at build time |
| Web content (HTML/CSS/JS) | Yes | Can be changed on server, but only works within native feature scope |
Even if web content changes, the scope of callable native features is determined at build time. New native capabilities cannot be added dynamically.
Recommendations for Review Submission
1. Add Description to App Review Information
Include the following in Google Play Console's App Content or review notes:
This app uses Android WebView to display web content from our server.
All native device API access (camera, location, biometric, etc.) is
controlled by a static configuration file (config.json) bundled at
build time. No new native capabilities can be added dynamically
after installation. The app does not download or execute native code
at runtime.2. Attach config.json Copy
Attaching your config.json content to review notes helps reviewers clearly understand the scope of features your app uses.
{
"modules": {
"accessibility": { "enabled": true },
"bottomTabs": { "enabled": true },
"sideDrawer": { "enabled": false }
},
"security": {
"screenshotProtectionEnabled": true,
"rootDetectionEnabled": true
}
}3. Document Bridge API List
The only global object web content calls is window.unveilyBridge, and every native feature is exposed through its namespaces. If needed, submit the list below:
unveilyBridge— Data storage, page navigation, cache managementunveilyBridge.accessibilityPanel/.tts/.stt— Accessibility panel, TTS, STTunveilyBridge.bottomTabs/.sideDrawer/.topDownMenu— NavigationunveilyBridge.qr— QR/Barcode scan (when enabled in config)unveilyBridge.auth— Biometric auth, social login (when enabled by plan)
Underscore-prefixed names such as _unveilyBridgeQR and _unveilyBridgeBiometric are internal SDK registration names, not something you call from web code. The only public API for web developers is window.unveilyBridge.
4. For App Store (iOS) Submission
The same principles apply when submitting to the App Store. Additionally, confirm the following:
- Write the
Info.plistusage-description strings for the features you use (e.g.,NSCameraUsageDescription,NSFaceIDUsageDescription) truthfully and clearly - If you use in-app purchases, configure your StoreKit 2 products in App Store Connect
- Attach the same WebView-behavior explanation notes to the review notes in App Store Connect
Post-Review Considerations
config.json Changes = App Update Required
config.json is included in assets/ at build time. To change settings:
- Modify
config.json - Rebuild the app (generate new APK/AAB)
- Submit update to Google Play (re-review)
config.json cannot be remotely replaced from a server. It is a static file bundled with the app, so any changes require an app update.
Web Content Changes Are Free
Web app (HTML/CSS/JS) can be freely updated from the server. This is the same as a regular website update and does not require app re-review.
However, you must follow these guidelines:
- Do not exceed the scope of features approved during review
- Do not add code that bypasses native features
- Do not display content that violates Google Play policies
Common Rejection Cases and Responses
Draft your appeal quickly with AI
If your app is rejected, give an AI assistant (Claude, Gemini, ChatGPT) the rejection reason, the WebView behavior note above, and your config.json, and ask for a "polite, clear reply to the review team." This speeds up your response significantly — just verify the facts before sending.
| Rejection Reason | Response |
|---|---|
| "App merely wraps a website" | Explain that native features (QR scan, biometric, push notifications, etc.) are utilized |
| "Core functionality depends on WebView" | Submit Bridge feature list and config.json to demonstrate differentiation |
| "Permission usage purpose unclear" | Specify which feature each permission is used for in review notes |
The most common reason WebView apps get rejected is being judged as "just wrapping a website." Actively utilize Unveily SDK's native Bridge features (QR scan, biometric, accessibility, etc.) and mention them in review notes to increase approval chances.