Skip to content

Commit 8344a04

Browse files
committed
Merge branch 'main' into 2.4.0
2 parents beaabec + 4937817 commit 8344a04

365 files changed

Lines changed: 12541 additions & 830 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
---
2+
layout: post
3+
title: "Remote Usability Testing of Figma Prototypes with reVISit"
4+
authors:
5+
- harrison
6+
---
7+
8+
Scheduling one-on-one usability sessions is time-consuming, expensive, and hard to scale. With reVISit's **screen recording** and **think-aloud audio** features, you can run instrumented prototype studies asynchronously — participants navigate your Figma prototype while their screen and voice are captured, and you can run multiple participants at once!
9+
10+
<!-- truncate -->
11+
12+
## Why Test Figma Prototypes with reVISit?
13+
14+
Usability testing can be difficult. You have to track people down, schedule a time for the session, and repeat for each user. Remote testing, e.g., via Zoom is possible, but still requires you to be online at the same time.
15+
16+
reVISit now offers an alternative through it's new screen recording and audio think-aloud features. Because Figma provides shareable embed URLs for interactive prototypes, you can drop one directly into a reVISit `website` component using iframes — with very little coding needed. Layering on `recordScreen: true` and `recordAudio: true` gives you:
17+
18+
- **Screen recordings** of every participant's navigation path through the prototype
19+
- **Synchronized think-aloud audio** so you can hear their reasoning alongside what they see
20+
- **Structured questionnaires** before and after the prototype task — in the same study, same dataset
21+
- **Participant Replay** to watch recordings back with audio aligned on a single timeline
22+
23+
The entire study is defined in a single JSON config, and all data lands in your reVISit storage automatically.
24+
25+
## Step 1: Enable Screen Recording and Think-Aloud Audio
26+
27+
Start by turning on both capture modes in the top-level `uiConfig` block:
28+
29+
```json
30+
"uiConfig": {
31+
"recordScreen": true,
32+
"recordAudio": true,
33+
"withProgressBar": true,
34+
"withSidebar": true,
35+
"contactEmail": "your@email.com"
36+
}
37+
```
38+
39+
Then import the companion library that handles participant permissions:
40+
41+
```json
42+
"importedLibraries": ["screen-recording"]
43+
```
44+
45+
The **`screen-recording`** library provides a `screenRecordingPermission` component that asks participants to share their browser tab — similar to screen-sharing in a video call. When `recordAudio: true` is also set, the permissions step requests microphone access at the same time. reVISit blocks progression if either permission is denied.
46+
47+
Insert the permission step near the start of your study sequence:
48+
49+
```json
50+
"sequence": {
51+
"order": "fixed",
52+
"components": [
53+
"introduction",
54+
"$screen-recording.co.screenRecordingPermission",
55+
"figmaTask",
56+
"postTaskQuestions"
57+
]
58+
}
59+
```
60+
61+
![The permissions step participants encounter before the study begins — the browser's native "Choose what to share" dialog with the reVISit study tab pre-selected, alongside the microphone permission prompt. Both are requested together on the same screen.](/img/blog_posts/figma-1.png)
62+
63+
## Step 2: Embed Your Figma Prototype
64+
65+
In Figma, open your prototype, click **Share → Open embed code** or **Publish**, and copy the URL from the `src` attribute of the generated `<iframe>` tag. It will look something like:
66+
67+
```
68+
https://embed.figma.com/proto/<FILE_ID>/<PROTOTYPE_NAME>?node-id=...&scaling=min-zoom&embed-host=share
69+
```
70+
71+
![The interface on Figma for publishing a prototype.](/img/blog_posts/figma-4.png)
72+
73+
Paste that URL into a `website` component in your reVISit config:
74+
75+
```json
76+
"figmaTask": {
77+
"type": "website",
78+
"recordAudio": true,
79+
"recordScreen": true,
80+
"path": "https://embed.figma.com/proto/<YOUR_FILE_ID>/<PROTOTYPE_NAME>?...",
81+
"instruction": "Please explore the prototype below. As you navigate, speak your thoughts aloud — tell us what you notice, what you expect, and anything that feels unclear or surprising.",
82+
"response": []
83+
}
84+
```
85+
86+
Setting `recordAudio` and `recordScreen` on the component itself is optional when they are already enabled globally in `uiConfig`, but it is good practice to be explicit — especially if you want different recording behavior on other components (e.g., a plain questionnaire where you turn audio off).
87+
88+
![The reVISit participant view during the prototype task — the Figma prototype is embedded in the main content area, fully interactive, while the right sidebar displays the think-aloud instructions in a scrollable panel. The progress bar is visible at the top of the page.](/img/blog_posts/figma-2.png)
89+
90+
## Step 3: Guide Participants with Sidebar Instructions
91+
92+
Without a moderator in the room, it can be easy for participants to forget to think aloud or to drift into their working process. It can be useful to include an on screen prompt to remind them to stay on task
93+
Add a `textOnly` response at `location: "sidebar"` to keep instructions visible throughout the entire task:
94+
95+
```json
96+
"response": [
97+
{
98+
"id": "think-aloud-instructions",
99+
"type": "textOnly",
100+
"location": "sidebar",
101+
"prompt": "### Think-Aloud Instructions\n\nYour screen and audio are being recorded. Please say out loud everything you are thinking as you move through the prototype.\n\n**As you explore, try to describe:**\n\n- What you notice on each screen\n- What you expect to happen when you tap or click something\n- What feels clear or confusing\n- Why you choose certain actions\n\nThere are no right or wrong actions — we are evaluating the design, not you."
102+
}
103+
]
104+
```
105+
106+
Sidebar content remains pinned while participants scroll or interact, so the instructions stay in view even as they move through multiple prototype screens.
107+
108+
## Step 4: Collect Structured Post-Task Feedback
109+
110+
Follow the prototype task with a `questionnaire` component. Setting `recordAudio: true` on it means participants can continue to narrate their thoughts while they fill out rating scales and open-ended questions — a useful signal for interpreting their written responses. Alternately, you might design a series of pages with one spoken question per page, which will automatically be segmented by reVISit's trial management architecture.
111+
112+
```json
113+
"postTaskQuestions": {
114+
"type": "questionnaire",
115+
"recordAudio": true,
116+
"response": [
117+
{
118+
"id": "satisfaction",
119+
"prompt": "Rate your satisfaction with the following aspects of the prototype.",
120+
"location": "aboveStimulus",
121+
"type": "matrix-radio",
122+
"answerOptions": "satisfaction5",
123+
"questionOptions": [
124+
"Overall Design",
125+
"Ease of Navigation",
126+
"Visual Clarity",
127+
"Completeness of Information"
128+
]
129+
},
130+
{
131+
"id": "open-feedback",
132+
"prompt": "What stood out most during your exploration — positive or negative?",
133+
"location": "aboveStimulus",
134+
"type": "longText",
135+
"placeholder": "Share your thoughts here..."
136+
}
137+
]
138+
}
139+
```
140+
141+
The Likert matrix response type (`matrix-radio`) with the built-in `satisfaction5` answer options gives you a clean, pre-labeled five-point scale without any extra configuration.
142+
143+
## Reviewing Your Results
144+
145+
Once participants complete the study, head to the reVISit analysis interface. The **[Participant Replay](https://revisit.dev/docs/analysis/participant-replay/)** view lets you watch each participant's screen recording with their think-aloud audio synchronized on a timeline — so you can see exactly where they hesitated, backtracked, or expressed confusion.
146+
147+
For deeper qualitative analysis, the **[Qualitative Coding](https://revisit.dev/docs/analysis/coding/)** interface displays auto-transcribed think-aloud text for each participant and task, lets you correct transcriptions, and supports creating and applying codebooks to surface recurring themes across your dataset.
148+
149+
![The Participant Replay interface showing a recording of a participant navigating the Figma prototype in the main pane, with the audio waveform timeline running along the bottom of the player. The qualitative coding panel is open on the right, displaying the auto-transcribed think-aloud text with analyst annotations applied.](/img/blog_posts/figma-3.png)
150+
151+
## Putting it All Together
152+
153+
Here is a complete, ready-to-use config. The only change you need to make is swapping in your Figma embed URL for the `path` value in `figmaTask`:
154+
155+
```json
156+
{
157+
"$schema": "https://raw.githubusercontent.com/revisit-studies/study/v2.3.0/src/parser/StudyConfigSchema.json",
158+
"studyMetadata": {
159+
"title": "Prototype Usability Study",
160+
"version": "pilot",
161+
"authors": ["Your Name"],
162+
"date": "2026-02-21",
163+
"description": "A think-aloud usability study with screen and audio recording.",
164+
"organizations": ["Your Institution"]
165+
},
166+
"uiConfig": {
167+
"contactEmail": "your@email.com",
168+
"withProgressBar": true,
169+
"withSidebar": true,
170+
"recordAudio": true,
171+
"recordScreen": true
172+
},
173+
"importedLibraries": ["screen-recording"],
174+
"components": {
175+
"introduction": {
176+
"type": "markdown",
177+
"path": "<PATH_TO_YOUR_INTRODUCTION.md>",
178+
"response": []
179+
},
180+
"figmaTask": {
181+
"type": "website",
182+
"recordAudio": true,
183+
"recordScreen": true,
184+
"path": "https://embed.figma.com/proto/<YOUR_FILE_ID>/<PROTOTYPE_NAME>?node-id=...&scaling=min-zoom&embed-host=share",
185+
"instruction": "Please explore the prototype below. As you navigate, speak your thoughts aloud — tell us what you notice, what you expect, and anything that feels unclear or surprising.",
186+
"response": [
187+
{
188+
"id": "think-aloud-instructions",
189+
"type": "textOnly",
190+
"location": "sidebar",
191+
"prompt": "### Think-Aloud Instructions\n\nYour screen and audio are being recorded. Please say out loud everything you are thinking as you move through the prototype.\n\n**As you explore, try to describe:**\n\n- What you notice on each screen\n- What you expect to happen when you tap or click something\n- What feels clear or confusing\n- Why you choose certain actions\n\nThere are no right or wrong actions — we are evaluating the design, not you."
192+
}
193+
]
194+
},
195+
"postTaskQuestions": {
196+
"type": "questionnaire",
197+
"recordAudio": true,
198+
"response": [
199+
{
200+
"id": "satisfaction",
201+
"prompt": "Rate your satisfaction with the following aspects of the prototype.",
202+
"location": "aboveStimulus",
203+
"type": "matrix-radio",
204+
"answerOptions": "satisfaction5",
205+
"questionOptions": [
206+
"Overall Design",
207+
"Ease of Navigation",
208+
"Visual Clarity",
209+
"Completeness of Information"
210+
]
211+
},
212+
{
213+
"id": "open-feedback",
214+
"prompt": "What stood out most during your exploration — positive or negative?",
215+
"location": "aboveStimulus",
216+
"type": "longText",
217+
"placeholder": "Share your thoughts here..."
218+
}
219+
]
220+
}
221+
},
222+
"sequence": {
223+
"order": "fixed",
224+
"components": [
225+
"introduction",
226+
"$screen-recording.co.screenRecordingPermission",
227+
"figmaTask",
228+
"postTaskQuestions"
229+
]
230+
}
231+
}
232+
```
233+
234+
## Next Steps
235+
236+
To learn more, check out the [Screen Recording setup guide](https://revisit.dev/docs/designing-studies/record-screen/) and the [Think-Aloud documentation](https://revisit.dev/docs/designing-studies/think-aloud/). If you have questions or want to share what you build, come find us in the [reVISit Slack](https://revisit.dev/contact/). We'd love to see what kinds of prototypes you put to the test.

blog/authors.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
team:
22
name: The ReVISit Team
3+
harrison:
4+
name: Lane Harrison
5+
lex:
6+
name: Alexander Lex

docs/libraries/adaptive-vlat.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ DOI: [10.1109/TVCG.2023.3327165](https://dx.doi.org/10.1109/TVCG.2023.3327165)
3030

3131

3232
<!-- Importing Links -->
33-
3433
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
3534

3635
<StructuredLinks

docs/libraries/beauvis.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ None
3030

3131

3232
<!-- Importing Links -->
33-
3433
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
3534

3635
<StructuredLinks

docs/libraries/berlin-num.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ Link: [http://www.riskliteracy.org/](http://www.riskliteracy.org/)
3131

3232

3333
<!-- Importing Links -->
34-
3534
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
3635

3736
<StructuredLinks

docs/libraries/calvi.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ The Critical Thinking Assessment for Literacy in Visualizations (CALVI) library
88
## Reference
99

1010
:::note[Reference]
11-
Lily W. Ge, Yuan Cui, and Matthew Kay. 2023. CALVI: Critical Thinking Assessment for Literacy in Visualizations. In Proceedings of the 2023 CHI Conference on Human Factors in Computing Systems (CHI '23). Association for Computing Machinery, New York, NY, USA, Article 815, 118.
11+
Lily W. Ge, Yuan Cui, and Matthew Kay. 2023. CALVI: Critical Thinking Assessment for Literacy in Visualizations. In Proceedings of the 2023 CHI Conference on Human Factors in Computing Systems (CHI '23). Association for Computing Machinery, New York, NY, USA, Article 815, 1-18.
1212
:::
1313

1414
DOI: [10.1145/3544548.3581406](https://dx.doi.org/10.1145/3544548.3581406)
@@ -87,7 +87,6 @@ DOI: [10.1145/3544548.3581406](https://dx.doi.org/10.1145/3544548.3581406)
8787

8888

8989
<!-- Importing Links -->
90-
9190
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
9291

9392
<StructuredLinks

docs/libraries/color-blindness.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ Link: [https://www.colour-blindness.com/colour-blindness-tests/ishihara-colour-t
4848

4949

5050
<!-- Importing Links -->
51-
5251
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
5352

5453
<StructuredLinks

docs/libraries/demographics.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ None
2424

2525

2626
<!-- Importing Links -->
27-
2827
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
2928

3029
<StructuredLinks

docs/libraries/graph-literacy-scale.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44

55

6-
The Graph Literacy Scale is a 13-item instrument that measures peoples ability to understand common graphical formats, with a focus on health-related graphs. This library contains 13 components, each corresponding to a question of the Graph Literacy Scale. It also includes a sequence of all 13 components (the full Graph Literacy Scale).
6+
The Graph Literacy Scale is a 13-item instrument that measures people's ability to understand common graphical formats, with a focus on health-related graphs. This library contains 13 components, each corresponding to a question of the Graph Literacy Scale. It also includes a sequence of all 13 components (the full Graph Literacy Scale).
77

88
## Reference
99

@@ -38,7 +38,6 @@ DOI: [10.1177/0272989X10373805](https://dx.doi.org/10.1177/0272989X10373805)
3838

3939

4040
<!-- Importing Links -->
41-
4241
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
4342

4443
<StructuredLinks

docs/libraries/mic-check.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ None
2424

2525

2626
<!-- Importing Links -->
27-
2827
import StructuredLinks from '@site/src/components/StructuredLinks/StructuredLinks.tsx';
2928

3029
<StructuredLinks

0 commit comments

Comments
 (0)