surveyframe 0.3.3 is on CRAN
surveyframe, CRAN, R package, survey research, analysis plan, WCAG 2.2, accessibility, Likert chart, ggplot2
TL;DR: surveyframe 0.3.3 was accepted on CRAN on 11 July 2026. Install it with install.packages("surveyframe"). The full documentation site is now live at mohammedalisharafuddin.github.io/surveyframe. This release rebuilds the look of the exported survey, meets WCAG 2.2 AA, reflows properly on phones, and adds an opt-in ggplot2 plotting layer including a diverging stacked-bar chart for Likert results. It is free and open source under the MIT licence.
What surveyframe is
surveyframe is an R package for survey research. Its one distinctive idea is the order of work. You build the instrument first, which means the questions, the scoring rules, and the analysis plan, and you do that before you collect a single response. The plan you declare up front is the plan that runs when the data comes in.
Most survey tools work the other way round. You gather responses, open the results, and then decide how to analyse them. surveyframe makes that harder to do by accident, because the analysis is already written down as part of the instrument. That is worth explaining on its own, so it gets its own post.
Install it
install.packages("surveyframe")That is the whole install. surveyframe is on CRAN, so there is no extra step and no development toolchain to set up. The documentation, function reference, and worked examples now live on the pkgdown site.
What is new in 0.3.3
The exported survey looks like a real instrument
The survey you export has been redesigned end to end. Question text now uses larger serif typography, options sit in bordered cards with a selection tick, Likert points are numbered squares, and the matrix, slider, and ranking blocks have all been restyled. A slim progress bar runs along the top. The result reads as a considered survey rather than a plain web form, which matters when you are asking real respondents to give you real attention.
It meets WCAG 2.2 AA
The exported survey passes an instrumented accessibility audit at WCAG 2.2 AA. In practice that means every input carries an accessible name, keyboard focus is visible as you move across the option cards, and validation errors are announced to assistive technology rather than shown by colour alone. Required questions are marked in more than one way, ranking items can be reordered with the keyboard, and touch targets meet a 44-pixel minimum on phones. Accessibility here is not a claim on a marketing page. It is a property the build checks.
It works on a phone
Matrix questions used to force a wide table that needed horizontal scrolling on a small screen. Below 600 pixels they now reflow into stacked, labelled row cards, so a respondent on a phone answers the same question without pinching and dragging.
A plotting layer, on request
There is a new optional plotting layer built on ggplot2. Turn it on and your analysis blocks gain charts: bar charts for frequency and chi-square blocks, and scatter plots with a regression overlay for correlation and regression blocks. It is opt-in, so nothing changes in your reports unless you ask for it.
A proper chart for Likert scales
Likert items in a report now get a diverging stacked-bar chart. Agreement and disagreement diverge from the centre, darkest at each pole and lightest next to the neutral point, so you can read the balance of a scale at a glance instead of squinting at a plain frequency bar.
Built from a real study
surveyframe 0.3.3 is not a paper exercise. It was hardened while running an actual live survey study on AI room service. That deployment surfaced a real bug: the submission call to Google Apps Script was triggering a CORS preflight that Apps Script never answers, so some responses were being dropped silently. The submission path has been rewritten to avoid that preflight, and those responses now arrive. Bugs found in production are the ones worth fixing, and this release carries several of them.
Where it is heading
The next version, v0.4, leans into small-sample methods, the situation most applied researchers actually face. That work is anchored by the companion textbook, Quantitative Analysis with Small Samples, which is free and already available. A manuscript describing the package has also been submitted to the Journal of Statistical Software and is under review. More on that if and when it is accepted.
Get it
- Install:
install.packages("surveyframe") - Documentation: mohammedalisharafuddin.github.io/surveyframe
- Source: github.com/MohammedAliSharafuddin/surveyframe
- On CRAN: CRAN.R-project.org/package=surveyframe
If you want the reasoning behind the design, read why the analysis plan comes first.