Product prototyping
Prototype product behavior in React with fixed visual rules, working interactions, and explicit empty, loading, and failure states.
Vlak is a React design system for product prototyping. It supplies a consistent type scale, neutral surfaces, controls, and layout rules so you can test what a product does before settling every visual detail. Begin with a task someone needs to complete, then use the smallest set of components that lets them do it.
Start a foldable prototype · Install Vlak
Choose a question
A useful prototype answers something specific: can a person compare two records, recover a failed action, or continue a task when a phone unfolds? Write that question before choosing the screen. Define the starting state, the action, and the observable result. If the task takes several screens, keep the same records and unfinished input between them.
Use an interface study when its behavior is close to your question. The foldable phone tests continuity between outer and inner screens. Calendar tests date selection and editing. CSV reconciliation tests comparison and exception review. Each is a working browser example with its own stated limits.
Keep the difficult states
A complete-looking screen is only one case. Put representative data into the prototype before evaluating its layout. These cases should be easy to reproduce during a session:
- Empty: explain what belongs here and provide the first useful action.
- One record and many records: test selection, scanning, long labels, and a narrow viewport.
- Loading and partial data: preserve useful content and distinguish pending work from an empty result.
- Failure: keep the draft, explain which action failed, and make retry explicit.
- Restricted access: show the permitted task without implying that hidden records do not exist.
Carry the decisions forward
The visual constraints are defaults, not restrictions enforced against your application. You can override the tokens, change a component, or copy its source. Keep a record of intentional exceptions so a second team does not have to guess which decisions still apply.
React prototypes can become application code, but a convincing interaction does not supply a backend. Replace sample data with adapters, enforce permissions in your service, define persistence, and test the resulting keyboard and screen-reader paths. Vlak remains a young library; inspect the component and its tests before relying on it for a critical workflow.
Working rules
- Start with one task and the state changes it needs. Add a component when the task calls for it.
- Keep paper, ink, type, spacing, and borders consistent while testing different product decisions.
- Separate a working local prototype from the services, permissions, and persistence required to ship it.
Components
- Button. Triggers an action with solid primary, 1px ghost, or borderless subtle styling. Every target is at least 44px; icon size is a 44px square.
- Field. Groups a label, control, and hint or error in one vertical field.
- Input. Collects one line of text. 1px border, 2px focus ring, 12px label above.
- Dialog. Focuses attention on a modal task. Title, body, and two equal actions.
- Empty. Explains an empty state with a title, one sentence, and an optional action.
- Progress. Shows completion for a known process. 4px bar; the label carries the percentage.
- Tabs. Switches between related panels. Text labels in one row; active tab has a 1px underline.
Continue
- Calendar starter. Start with an editable schedule.
- Use with an agent. Give your coding tool the same component and token reference.
- Choosing Vlak. Check the fit before adopting the system.
Interfaces
- iPhone Duo. An interactive iOS study with everyday apps, familiar navigation and system controls.
- Calendar. A local calendar with month, week, day and agenda views, recurring events and iCalendar files.
- CSV reconciliation. Compare two CSV exports, review exceptions and keep a reusable reconciliation project.
- AI chat. A research notebook with separate conversations, local writing templates, and a response inspector.
Install Vlak or inspect the linked pages for React, CSS, registry, keyboard, and accessibility details.