This site has been permanently archived. The content on this site was last updated in 2019.
Daydream App Quality Requirements
Stay organized with collections
Save and categorize content based on your preferences.
Daydream aims to provide users with high-quality, interactive, VR experiences.
Designing apps for VR is substantially different than for other platforms,
particularly because poorly designed applications or performance issues can make
some users feel nauseated.
These pages help you assess quality in your Daydream app through a compact set
of functional and user interaction quality criteria. This helps you meet the
expectations of Daydream users for high-quality, comfortable VR experiences.
Important: To ensure a great user experience, apps
for Daydream must follow specific requirements for performance and usability.
Only apps that meet the following quality criteria will qualify as a Daydream
app on Google Play. Qualifying as a Daydream app will make it easier for
Daydream users to discover your app on Google Play and allows your app to appear
in Play Store VR.
Learn more about publishing Daydream apps in Google
Play.
Design requirements
Area
ID
Description
App Design
UX-D1
Users can focus on objects and read necessary text.
(more )
UX-D2
App maintains head tracking.
(more )
UX-D3
App has a stable horizon line.
(more )
UX-D4
Camera movement must be user-initiated.
(more )
UX-D5
App does not interfere with system-level recentering behavior.
(more )
UX-D6
App recenter appropriately with respect to the experience.
(more )
UX-D7
App's forward direction is consistent with the platform's global forward direction.
(more )
UX-D8
App uses a neck model.
(more )
UX-D9
App never goes to 2D monoscopic unexpectedly.
(more )
Controller
UX-C1
Controller must be used as a laser pointer when clicking on UI targets.
(more )
UX-C2
App uses hand preference.
(more )
UX-C3
Scrolling through large sets of items must be done by swiping on the
touchpad.
(more )
UX-C4
Cursor displays at the same depth as objects being targeted.
(more )
UX-C5
App does not interfere with system controls.
(more )
Functionality requirements
Area
ID
Description
SDK
FN-S1
App uses a supported version of the Google VR SDK.
(more )
FN-S2
App uses Daydream API calls to transition between activities.
(more )
Manifest
FN-M1
App manifest does not request the NFC permission.
(more )
FN-M2
App manifest sets correct VR activity styles.
(more )
FN-M3
App manifest sets hardware features according to the platform(s) supported.
(more )
UI
FN-U1
App hides the Status Bar and Navigation Bar while in VR.
(more )
App state
FN-A1
App pauses when the user exits VR.
(more )
FN-A2
App closes from VR correctly.
(more )
Area
ID
Description
Stability
PS-S1
App installs and runs without crashing.
(more )
Performance
PS-P1
App loads quickly or provides feedback in VR to the user if the app
takes longer than 3 seconds to load.
(more )
PS-P2
App maintains high performance.
(more )
PS-P3
App does not display a thermal warning during 30 minutes of usage.
(more )
Visual quality
PS-V1
App renders without unexpected distortion when viewed through a Daydream
viewer.
(more )
Publishing requirements
Area
ID
Description
Publishing
PB-P1
App adheres to all existing Google Play Content Policies.
(more )
PB-P2
App has a VR Icon.
(more )
PB-P3
App has a 360° stereo photosphere.
(more )
PB-P4
App content matches description.
(more )
PB-P5
App is for users 13 years and older.
(more )
PB-P6
App has the correct Motion Intensity level.
(more )
PB-P7
App name must adhere to naming policy.
(more )
PB-P8
App uses correct platform terminology.
(more )
PB-P9
App does not use the Daydream logo.
(more )
PB-P10
App must be able to be reviewed in full
(more )
All rights reserved. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2018-05-03 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Missing the information I need"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Too complicated / too many steps"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Out of date"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Samples / code issue"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Other"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Easy to understand"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Solved my problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Other"
}]
{"lastModified": "Last updated 2018-05-03 UTC."}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2018-05-03 UTC."]]