A distinct page or view in the product interface that users interact with.
A screen is a single addressable view in a product: a route a user can reach, with a purpose, an audience, and a place in the navigation. It is the durable unit of an interface, the thing that survives from design into shipped code, where a wireframeWireframeExperience DesignA low-fidelity structural layoutView reference → or a mockup is only a proposal for it.
The screen as a design unit grew with the graphical user interface. Once Xerox PARC and then the Macintosh established windowed, page-like interfaces, designers worked in terms of discrete views a user moved between, and the practice of designing screen by screen became the default. The web reinforced it: a site was a set of pages, each with a URL, and the page-as-unit assumptionAssumptionStrategyA belief taken as true that underpins a strategyView reference → carried straight into early app design.
The thinking matured by demoting the screen from the centre of design. Two developments pushed in the same direction. Atomic design treated a page as the assembly of smaller components rather than a hand-drawn one-off, so a screen became a composition of reusable parts. Journey and flow mapping placed the screen inside a larger sequence, so a screen was understood as one state in a user's path, not an island. The recurring anti-pattern the field now names explicitly is "screens without journeys": isolated views that look fine in a portfolioPortfolioPortfolioA grouping of products by strategic axisView reference → and fail in use because nobody mapped how a person arrives, what they came to do, and where they go next.
Cooper, Reimann, and Cronin's About Face pressed the same point from the direction of goal-directed design: screens should be organised around what users are trying to accomplish, not around system functions or featureFeatureProduct SpecificationA product capability or featureView reference → lists. By that reading, a screen without a clear user goal is a misdesign at the root, not merely a navigation problem.
Modern practice also separates a screen from its states. A login screen is one route, but it has an empty state, a loading state, an error state, and a success state, and designing only the happy path is how products ship that break the moment reality diverges from the demo.
Wathan and Schoger's Refactoring UI makes the practical case for this directly: a screen designed only in its ideal populated state will look polished in a handoff and expose its gaps the moment real users hit it with missing data, slow connections, or failed requests. Empty states are one of the book's named design problems, and their guidance treats every state as a first-class design problem, not an afterthought.
A team is building a billing area. They define a ScreenExperience DesignA distinct screen or view in the product with route screen/settings/billing, viewport responsive, access level authenticated, purpose "view and change the current plan". On its own that is a static fact. The value appears when it connects: User Flowroutes throughScreenhierarchy places it on the upgrade path, user_flow_routes_through_screenScreennavigates toScreenhierarchy links it to the payment-method screen it leads to, and screen_navigates_to_screenScreenrendersDesign Componenthierarchy ties it to the plan-card and button components it is built from. Now a question like "if we deprecate the legacy plan card, which screens break?" is a graph query, not an archaeology project. The screen has gone from a picture to a node with known dependenciesDependencyTeam & OrganisationA cross-team or system dependencyView reference → upstream and down.screen_renders_design_component
screen_wireframed_as_wireframeScreenwireframed asWireframehierarchy connects them. Many wireframes can precede one shipped screen.screen_renders_as_screen_stateScreenrenders asScreen Statehierarchy.In the Unified Product Graph, ScreenExperience DesignA distinct screen or view in the product is a leaf in the Experience Design domain of the Experience, Design & Brand region, anchored under the user journeyUser JourneyExperience DesignAn end-to-end map of a user experienceView reference → it belongs to. It is unusually well connected for a leaf: outbound it renders as screen states (screenScreenrenders asScreen Statehierarchy), renders design componentsDesign ComponentDesign SystemA reusable UI componentView reference → (screen_renders_as_screen_stateScreenrendersDesign Componenthierarchy), navigates to other screens (screen_renders_design_componentScreennavigates toScreenhierarchy), and surfaces features (screen_navigates_to_screenScreensurfacesFeaturecross-domain); inbound it is routed through by user flows (screen_surfaces_featureUser Flowroutes throughScreenhierarchy) and belongs to a product via user_flow_routes_through_screenProductcontainsScreenhierarchy. That density is deliberate. A screen is where the experience region meets the design systemDesign SystemDesign SystemThe root design system entityView reference → (the components it renders) and product delivery (the features it surfaces), so it serves as a junction the graph can traverse in several directions.product_contains_screen
Type-specific fields on BaseNode
routestringApplication route. @example "/dashboard", "/settings/billing"
viewportenumPrimary target viewport
access_levelenumReach
purposestringOne-line purpose
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
5 phases, initial: draft
18 edge types connected to this entity.
screen_renders_as_screen_statescreen_navigates_to_screenscreen_renders_design_componentscreen_wireframed_as_wireframescreen_markets_productscreen_targets_competitorscreen_surfaces_featurewireframe_specifies_screenhelp_video_documents_screenscreen_translated_via_translation_bundlewireframe_depicts_screena11y_issue_found_in_screendecision_affects_screenjourney_step_shown_on_screenprototype_simulates_screen1 framework use this entity type.