Skip to content

Add a stormbox-react workload - #595

Merged
Bas-moz merged 9 commits into
WebKit:mainfrom
jrmuizel:stormbox-refactor
Nov 13, 2026
Merged

Bas-moz merged 9 commits into
WebKit:mainfrom
jrmuizel:stormbox-refactor

Conversation

@jrmuizel

Copy link
Copy Markdown
Contributor

This is a test based on the React port of the Thunderbird webmail client: https://github.com/thunderbird/stormbox

@netlify

netlify Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for webkit-speedometer-preview ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit d0cee54
🔍 Latest deploy log https://app.netlify.com/projects/webkit-speedometer-preview/deploys/6af73ff4c76a4b983d61007f
😎 Deploy Preview https://deploy-preview-595--webkit-speedometer-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

mstange pushed a commit to mozilla/Speedometer that referenced this pull request Nov 13, 2026
Stormbox-React's ScrollMessageList step drives the list through the
scrollTop, scrollHeight and clientHeight accessors on PageElement. This
warms them up like the other PageElement methods.

From WebKit#595 (2846a0b). The accessors themselves are
already on sp4-exp via the ChatRoom-React virtualization commit.
jrmuizel and others added 9 commits November 13, 2026 11:49
A React clone of the Stormbox webmail front end with a generated mailbox; nine steps cover folders, scrolling, reading, tagging, bulk actions, filtering, deleting, composing and theme switching.
…st is at the top for the next step

The virtualizer re-applies its last scrollToIndex target on later frames; leaving it on row 0 keeps that from scrolling the list, and closing the tag popover, during StarAndTagMessages.
…List scrolls

Assigning scrollTop on the wrapper only set an expando, and clientHeight and
scrollHeight were undefined, so the step never moved the list and measured
~0ms. The accessors match the ones in the ChatRoom virtualization commit, and
the warmup suite now exercises them.
Port of stormbox-react 6970a48.

FolderTree, ListHeader and MessageListRow inlined the
dangerouslySetInnerHTML icon pattern instead of using the existing
RawIcon helper. Route them through RawIcon so raw HTML injection of
trusted assets lives in one place. Rendered DOM is unchanged.
…svgr

Port of stormbox-react ca4a39a.

Replace the `?raw` SVG imports and innerHTML injection with `?react`
components. RawIcon becomes SvgIcon and takes a component instead of an
HTML string; it keeps the same aria-hidden wrapper span so the existing
CSS (which styles the inner [fill="context-fill"] / [fill="context-stroke"]
paths) still applies. SVGR is run without SVGO, so all attributes survive.

This changes the DOM work done per icon (React element creation instead
of one innerHTML parse), so Stormbox-React results are not comparable
across this commit.
Port of stormbox-react 289f522.

plaintext-html.ts built an HTML string that MessageView ran through
DOMPurify and injected with dangerouslySetInnerHTML. Replace it with
plaintext-body.tsx, which returns React nodes: nested <blockquote>s for
quote levels and <a> elements for links found by linkifyjs's tokenizer.
React's escaping makes the output safe, so the DOMPurify pass is gone;
link hrefs are still checked against ALLOWED_URI_REGEXP.

Markup is identical to the old path for every generated plaintext body.
Links with disallowed schemes (e.g. ftp:) now render as plain text
rather than as an href-less <a> left behind by DOMPurify.

Drops the now-unused linkify-string dependency. As with the icon
change, Stormbox-React results are not comparable across this commit.
…Stormbox-Vue

The svgr and plaintext-body ports made the README's "copied verbatim"
list for src/utils/ wrong and changed what the workload does compared
with Stormbox and Stormbox-Vue. Fix the list and note the difference,
including that React-vs-Vue comparisons now include it.
@Bas-moz
Bas-moz merged commit b4437d4 into WebKit:main Nov 13, 2026
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants