Skip to content

feat(web-shared): RelativeTimeCard with shared ContextCard provider#2328

Merged
mitul-s merged 13 commits into
mainfrom
relative-time-card
Jun 12, 2026
Merged

feat(web-shared): RelativeTimeCard with shared ContextCard provider#2328
mitul-s merged 13 commits into
mainfrom
relative-time-card

Conversation

@mitul-s

@mitul-s mitul-s commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a ContextCard provider/trigger to web-shared that powers animated, collision-aware hover cards with a shared portal so adjacent triggers morph between each other.
  • Rebuild the timestamp tooltip as a RelativeTimeCard on top of ContextCard, with detailed absolute/relative time formatting.
  • Mount the shared ContextCardProvider at the EventListView and AttributePanel roots so all timestamp cards share one provider.
  • Add the --ds-shadow-tooltip token to styles.css so the card shadow renders correctly when web-shared is used standalone.
  • Add deps: @radix-ui/react-slot and react-use-measure.

Test plan

  • pnpm --filter @workflow/web-shared typecheck passes
  • Hover timestamps in the event list / attribute panel and confirm the card appears with the correct shadow, formatting, and morphing animation between adjacent triggers
  • Verify reduced-motion preference disables the morph animation

Made with Cursor

Add a ContextCard provider/trigger and rebuild the timestamp tooltip as a
RelativeTimeCard, giving animated, collision-aware morphing hover cards.
Mount the shared provider in EventListView and AttributePanel.

Co-authored-by: Cursor <cursoragent@cursor.com>
@mitul-s mitul-s requested a review from a team as a code owner June 10, 2026 16:57
@changeset-bot

changeset-bot Bot commented Jun 10, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 5aace06

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 16 packages
Name Type
@workflow/web-shared Minor
@workflow/web Minor
@workflow/cli Patch
@workflow/nitro Patch
workflow Patch
@workflow/world-testing Patch
@workflow/nuxt Patch
@workflow/core Patch
@workflow/builders Patch
@workflow/next Patch
@workflow/vitest Patch
@workflow/astro Patch
@workflow/nest Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/vite Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Jun 12, 2026 10:24pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Jun 12, 2026 10:24pm
example-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-astro-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-express-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-fastify-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-hono-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-nitro-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-nuxt-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-tanstack-start-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workbench-vite-workflow Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Jun 12, 2026 10:24pm
workflow-swc-playground Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workflow-tarballs Ready Ready Preview, Comment Jun 12, 2026 10:24pm
workflow-web Ready Ready Preview, Comment Jun 12, 2026 10:24pm

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

All tests passed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 1376 0 219 1595
✅ 💻 Local Development 1811 0 219 2030
✅ 📦 Local Production 1811 0 219 2030
✅ 🐘 Local Postgres 1797 0 233 2030
✅ 🪟 Windows 145 0 0 145
✅ 📋 Other 837 0 178 1015
Total 7777 0 1068 8845

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 119 0 26
✅ example 119 0 26
✅ express 119 0 26
✅ fastify 119 0 26
✅ hono 119 0 26
✅ nextjs-turbopack 143 0 2
✅ nextjs-webpack 143 0 2
✅ nitro 119 0 26
✅ nuxt 119 0 26
✅ sveltekit 138 0 7
✅ vite 119 0 26
✅ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 120 0 25
✅ express-stable 120 0 25
✅ fastify-stable 120 0 25
✅ hono-stable 120 0 25
✅ nextjs-turbopack-canary 126 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 145 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 145 0 0
✅ nextjs-webpack-canary 126 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 145 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 145 0 0
✅ nitro-stable 120 0 25
✅ nuxt-stable 120 0 25
✅ sveltekit-stable 139 0 6
✅ vite-stable 120 0 25
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 120 0 25
✅ express-stable 120 0 25
✅ fastify-stable 120 0 25
✅ hono-stable 120 0 25
✅ nextjs-turbopack-canary 126 0 19
✅ nextjs-turbopack-stable-lazy-discovery-disabled 145 0 0
✅ nextjs-turbopack-stable-lazy-discovery-enabled 145 0 0
✅ nextjs-webpack-canary 126 0 19
✅ nextjs-webpack-stable-lazy-discovery-disabled 145 0 0
✅ nextjs-webpack-stable-lazy-discovery-enabled 145 0 0
✅ nitro-stable 120 0 25
✅ nuxt-stable 120 0 25
✅ sveltekit-stable 139 0 6
✅ vite-stable 120 0 25
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 119 0 26
✅ express-stable 119 0 26
✅ fastify-stable 119 0 26
✅ hono-stable 119 0 26
✅ nextjs-turbopack-canary 125 0 20
✅ nextjs-turbopack-stable-lazy-discovery-disabled 144 0 1
✅ nextjs-turbopack-stable-lazy-discovery-enabled 144 0 1
✅ nextjs-webpack-canary 125 0 20
✅ nextjs-webpack-stable-lazy-discovery-disabled 144 0 1
✅ nextjs-webpack-stable-lazy-discovery-enabled 144 0 1
✅ nitro-stable 119 0 26
✅ nuxt-stable 119 0 26
✅ sveltekit-stable 138 0 7
✅ vite-stable 119 0 26
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 145 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 120 0 25
✅ e2e-local-dev-tanstack-start- 120 0 25
✅ e2e-local-postgres-nest-stable 119 0 26
✅ e2e-local-postgres-tanstack-start- 119 0 26
✅ e2e-local-prod-nest-stable 120 0 25
✅ e2e-local-prod-tanstack-start- 120 0 25
✅ e2e-vercel-prod-tanstack-start 119 0 26

📋 View full workflow run

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.046s (+68.9% 🔺) 1.006s (~) 0.959s 10 1.00x
💻 Local Nitro 0.048s (+18.1% 🔺) 1.007s (~) 0.960s 10 1.03x
🐘 Postgres Nitro 0.058s (-13.8% 🟢) 1.012s (~) 0.954s 10 1.25x
💻 Local Next.js (Turbopack) 0.061s (+1.2%) 1.006s (~) 0.945s 10 1.33x
🐘 Postgres Express 0.068s (+20.8% 🔺) 1.014s (~) 0.946s 10 1.48x
🐘 Postgres Next.js (Turbopack) 0.068s (~) 1.011s (~) 0.943s 10 1.48x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 0.237s (-20.4% 🟢) 1.931s (-21.4% 🟢) 1.694s 10 1.00x
▲ Vercel Nitro 0.374s (+28.8% 🔺) 2.556s (+14.3% 🔺) 2.182s 10 1.58x
▲ Vercel Next.js (Turbopack) 0.555s (+100.8% 🔺) 2.748s (-5.2% 🟢) 2.193s 10 2.34x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.082s (+1.8%) 2.005s (~) 0.923s 10 1.00x
🐘 Postgres Nitro 1.107s (~) 2.009s (~) 0.903s 10 1.02x
🐘 Postgres Express 1.107s (~) 2.010s (~) 0.903s 10 1.02x
💻 Local Nitro 1.111s (+1.7%) 2.007s (~) 0.896s 10 1.03x
🐘 Postgres Next.js (Turbopack) 1.122s (-1.3%) 2.009s (~) 0.887s 10 1.04x
💻 Local Next.js (Turbopack) 1.133s (~) 2.007s (~) 0.874s 10 1.05x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 1.595s (-1.4%) 3.586s (-3.7%) 1.991s 10 1.00x
▲ Vercel Next.js (Turbopack) 1.721s (+7.1% 🔺) 3.892s (+2.7%) 2.171s 10 1.08x
▲ Vercel Nitro 1.746s (+8.4% 🔺) 3.990s (+18.6% 🔺) 2.243s 10 1.09x

🔍 Observability: Express | Next.js (Turbopack) | Nitro

workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 10.447s (+0.6%) 11.021s (~) 0.574s 3 1.00x
🐘 Postgres Express 10.539s (~) 11.019s (~) 0.480s 3 1.01x
🐘 Postgres Nitro 10.551s (~) 11.021s (~) 0.470s 3 1.01x
💻 Local Nitro 10.600s (~) 11.024s (~) 0.424s 3 1.01x
💻 Local Next.js (Turbopack) 10.797s (~) 11.022s (~) 0.225s 3 1.03x
🐘 Postgres Next.js (Turbopack) 10.872s (~) 11.110s (+0.8%) 0.238s 3 1.04x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 13.997s (+2.5%) 15.745s (+1.7%) 1.748s 2 1.00x
▲ Vercel Nitro 14.130s (+4.8%) 16.872s (+11.5% 🔺) 2.742s 2 1.01x
▲ Vercel Next.js (Turbopack) 15.572s (+9.6% 🔺) 17.858s (+7.6% 🔺) 2.285s 2 1.11x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 13.633s (+2.0%) 14.027s (~) 0.394s 5 1.00x
🐘 Postgres Express 13.780s (~) 14.020s (~) 0.240s 5 1.01x
🐘 Postgres Nitro 13.814s (~) 14.020s (~) 0.206s 5 1.01x
💻 Local Nitro 13.906s (+1.1%) 14.229s (+1.4%) 0.323s 5 1.02x
💻 Local Next.js (Turbopack) 14.369s (~) 15.030s (~) 0.661s 4 1.05x
🐘 Postgres Next.js (Turbopack) 14.473s (~) 15.029s (~) 0.556s 4 1.06x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 21.886s (+7.2% 🔺) 24.272s (+8.0% 🔺) 2.386s 3 1.00x
▲ Vercel Express 22.726s (+8.1% 🔺) 24.734s (+7.2% 🔺) 2.008s 3 1.04x
▲ Vercel Next.js (Turbopack) 24.735s (+12.3% 🔺) 27.408s (+12.3% 🔺) 2.673s 3 1.13x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 12.172s (+4.0%) 13.025s (+8.3% 🔺) 0.852s 7 1.00x
🐘 Postgres Express 12.563s (-2.9%) 13.021s (-2.2%) 0.459s 7 1.03x
🐘 Postgres Nitro 12.619s (+0.7%) 13.020s (~) 0.401s 7 1.04x
💻 Local Nitro 12.623s (+1.8%) 13.027s (~) 0.404s 7 1.04x
💻 Local Next.js (Turbopack) 13.712s (~) 14.027s (~) 0.315s 7 1.13x
🐘 Postgres Next.js (Turbopack) 14.003s (+1.8%) 14.589s (+4.1%) 0.585s 7 1.15x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 31.975s (~) 34.249s (-1.1%) 2.274s 3 1.00x
▲ Vercel Next.js (Turbopack) 32.363s (-8.4% 🟢) 34.743s (-6.8% 🟢) 2.380s 3 1.01x
▲ Vercel Nitro 32.526s (+2.3%) 34.694s (+3.1%) 2.168s 3 1.02x

🔍 Observability: Express | Next.js (Turbopack) | Nitro

Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.172s (+2.8%) 2.005s (~) 0.833s 15 1.00x
🐘 Postgres Nitro 1.201s (-4.0%) 2.008s (~) 0.806s 15 1.02x
💻 Local Nitro 1.204s (-5.0%) 2.007s (~) 0.803s 15 1.03x
🐘 Postgres Express 1.218s (+1.2%) 2.008s (~) 0.789s 15 1.04x
🐘 Postgres Next.js (Turbopack) 1.297s (+1.5%) 2.007s (~) 0.711s 15 1.11x
💻 Local Next.js (Turbopack) 1.344s (+1.5%) 2.007s (~) 0.663s 15 1.15x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.258s (-20.7% 🟢) 4.022s (-12.9% 🟢) 1.764s 8 1.00x
▲ Vercel Express 2.496s (-25.3% 🟢) 3.968s (-22.9% 🟢) 1.473s 8 1.11x
▲ Vercel Next.js (Turbopack) 3.117s (-32.4% 🟢) 4.824s (-27.3% 🟢) 1.707s 7 1.38x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.416s (~) 2.393s (~) 0.977s 13 1.00x
🐘 Postgres Express 1.427s (+5.7% 🔺) 2.395s (~) 0.967s 13 1.01x
🐘 Postgres Next.js (Turbopack) 1.502s (-5.9% 🟢) 2.149s (-3.3%) 0.647s 14 1.06x
💻 Local Express 1.673s (+14.1% 🔺) 2.072s (+3.4%) 0.399s 15 1.18x
💻 Local Nitro 1.996s (+15.3% 🔺) 2.470s (+23.1% 🔺) 0.473s 13 1.41x
💻 Local Next.js (Turbopack) 2.003s (+22.2% 🔺) 2.394s (+15.5% 🔺) 0.391s 13 1.42x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.678s (-14.1% 🟢) 4.521s (-4.0%) 1.843s 7 1.00x
▲ Vercel Nitro 3.439s (-6.2% 🟢) 5.173s (+2.5%) 1.733s 6 1.28x
▲ Vercel Next.js (Turbopack) 3.613s (+1.7%) 5.938s (+7.3% 🔺) 2.325s 6 1.35x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.612s (~) 4.136s (~) 2.523s 8 1.00x
🐘 Postgres Nitro 1.744s (+10.6% 🔺) 4.012s (+3.2%) 2.268s 8 1.08x
🐘 Postgres Next.js (Turbopack) 3.194s (+0.9%) 4.321s (+4.3%) 1.127s 7 1.98x
💻 Local Express 4.330s (+59.4% 🔺) 4.880s (+45.9% 🔺) 0.550s 7 2.69x
💻 Local Next.js (Turbopack) 5.729s (+19.4% 🔺) 6.215s (+20.0% 🔺) 0.486s 5 3.55x
💻 Local Nitro 5.838s (+23.7% 🔺) 6.215s (+17.3% 🔺) 0.377s 5 3.62x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 3.897s (-19.4% 🟢) 6.290s (-4.9%) 2.393s 5 1.00x
▲ Vercel Nitro 4.444s (-14.9% 🟢) 6.694s (+5.4% 🔺) 2.250s 5 1.14x
▲ Vercel Express 5.062s (+2.0%) 7.260s (+5.5% 🔺) 2.199s 5 1.30x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.201s (-0.5%) 2.007s (~) 0.806s 15 1.00x
🐘 Postgres Nitro 1.209s (+0.8%) 2.006s (~) 0.797s 15 1.01x
🐘 Postgres Next.js (Turbopack) 1.345s (+4.7%) 2.012s (~) 0.667s 15 1.12x
💻 Local Next.js (Turbopack) 1.375s (-1.2%) 2.006s (~) 0.631s 15 1.15x
💻 Local Express 1.457s (+16.1% 🔺) 2.006s (~) 0.549s 15 1.21x
💻 Local Nitro 1.606s (+6.8% 🔺) 2.008s (~) 0.401s 15 1.34x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.285s (-6.3% 🟢) 3.965s (+13.2% 🔺) 1.680s 8 1.00x
▲ Vercel Next.js (Turbopack) 2.407s (-1.3%) 4.294s (+5.4% 🔺) 1.887s 8 1.05x
▲ Vercel Express 2.761s (-3.9%) 4.543s (-1.4%) 1.782s 7 1.21x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.351s (-2.8%) 2.392s (+11.1% 🔺) 1.041s 13 1.00x
🐘 Postgres Nitro 1.454s (+6.5% 🔺) 2.393s (~) 0.938s 13 1.08x
🐘 Postgres Next.js (Turbopack) 1.478s (-0.6%) 2.316s (+15.3% 🔺) 0.837s 13 1.09x
💻 Local Express 1.719s (+8.2% 🔺) 2.073s (+3.4%) 0.354s 15 1.27x
💻 Local Next.js (Turbopack) 2.099s (+2.5%) 2.736s (+9.1% 🔺) 0.636s 11 1.55x
💻 Local Nitro 2.324s (+11.8% 🔺) 2.828s (+14.5% 🔺) 0.503s 11 1.72x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.560s (-51.1% 🟢) 4.409s (-34.3% 🟢) 1.849s 8 1.00x
▲ Vercel Express 2.878s (-18.9% 🟢) 4.649s (-14.5% 🟢) 1.771s 7 1.12x
▲ Vercel Next.js (Turbopack) 3.237s (-3.0%) 5.404s (-5.9% 🟢) 2.166s 6 1.26x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.572s (-7.0% 🟢) 3.886s (-3.1%) 2.314s 8 1.00x
🐘 Postgres Nitro 1.633s (-14.2% 🟢) 3.885s (-9.7% 🟢) 2.252s 8 1.04x
🐘 Postgres Next.js (Turbopack) 2.877s (-30.9% 🟢) 3.886s (-20.2% 🟢) 1.009s 8 1.83x
💻 Local Express 4.652s (+19.7% 🔺) 5.013s (+17.7% 🔺) 0.360s 6 2.96x
💻 Local Next.js (Turbopack) 5.806s (+7.8% 🔺) 6.618s (+13.2% 🔺) 0.812s 5 3.69x
💻 Local Nitro 6.332s (+9.0% 🔺) 6.815s (+2.9%) 0.482s 5 4.03x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 3.176s (-18.2% 🟢) 5.422s (-0.8%) 2.246s 6 1.00x
▲ Vercel Express 3.352s (-24.9% 🟢) 5.595s (-13.6% 🟢) 2.244s 6 1.06x
▲ Vercel Next.js (Turbopack) 4.887s (-1.9%) 6.931s (+1.1%) 2.044s 5 1.54x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.553s (-4.4%) 1.006s (-1.6%) 0.453s 60 1.00x
💻 Local Express 0.589s (+20.6% 🔺) 1.004s (~) 0.415s 60 1.06x
🐘 Postgres Express 0.590s (+2.6%) 1.023s (~) 0.433s 59 1.07x
💻 Local Nitro 0.622s (+2.0%) 1.005s (~) 0.383s 60 1.12x
💻 Local Next.js (Turbopack) 0.886s (-2.4%) 1.022s (-5.1% 🟢) 0.136s 59 1.60x
🐘 Postgres Next.js (Turbopack) 0.899s (+9.2% 🔺) 1.251s (+24.3% 🔺) 0.351s 48 1.62x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Next.js (Turbopack) 5.843s (+6.6% 🔺) 7.564s (+2.0%) 1.721s 9 1.00x
▲ Vercel Nitro 6.257s (-2.3%) 8.407s (+6.4% 🔺) 2.150s 8 1.07x
▲ Vercel Express 6.317s (+22.8% 🔺) 8.324s (+21.9% 🔺) 2.007s 8 1.08x

🔍 Observability: Next.js (Turbopack) | Nitro | Express

workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.356s (~) 2.007s (~) 0.651s 45 1.00x
🐘 Postgres Nitro 1.358s (+0.6%) 2.007s (~) 0.650s 45 1.00x
💻 Local Express 1.455s (+13.0% 🔺) 2.005s (+1.1%) 0.550s 45 1.07x
💻 Local Nitro 1.589s (+5.9% 🔺) 2.007s (~) 0.418s 45 1.17x
🐘 Postgres Next.js (Turbopack) 1.911s (~) 2.347s (+11.8% 🔺) 0.437s 39 1.41x
💻 Local Next.js (Turbopack) 2.123s (~) 3.008s (~) 0.885s 30 1.57x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 14.543s (+2.1%) 16.649s (+6.9% 🔺) 2.106s 6 1.00x
▲ Vercel Next.js (Turbopack) 14.682s (-5.4% 🟢) 16.678s (-5.3% 🟢) 1.996s 6 1.01x
▲ Vercel Express 15.804s (+5.6% 🔺) 18.058s (+6.4% 🔺) 2.254s 5 1.09x

🔍 Observability: Nitro | Next.js (Turbopack) | Express

workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 2.733s (+1.6%) 3.110s (+1.7%) 0.377s 39 1.00x
🐘 Postgres Express 2.914s (+4.6%) 3.371s (+6.6% 🔺) 0.458s 36 1.07x
💻 Local Express 3.067s (+17.0% 🔺) 3.537s (+13.8% 🔺) 0.470s 34 1.12x
💻 Local Nitro 3.378s (+4.2%) 4.009s (~) 0.631s 30 1.24x
🐘 Postgres Next.js (Turbopack) 3.711s (-4.0%) 4.335s (+4.5%) 0.624s 28 1.36x
💻 Local Next.js (Turbopack) 4.396s (+0.9%) 5.010s (~) 0.615s 24 1.61x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 27.668s (+6.7% 🔺) 30.766s (+11.2% 🔺) 3.098s 4 1.00x
▲ Vercel Express 28.590s (+4.8%) 31.402s (+7.8% 🔺) 2.812s 4 1.03x
▲ Vercel Next.js (Turbopack) 31.631s (+6.2% 🔺) 34.337s (+8.1% 🔺) 2.706s 4 1.14x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.228s (-9.0% 🟢) 1.006s (~) 0.778s 60 1.00x
🐘 Postgres Express 0.278s (+9.1% 🔺) 1.008s (~) 0.730s 60 1.22x
🐘 Postgres Next.js (Turbopack) 0.306s (+4.7%) 1.044s (+3.8%) 0.738s 59 1.34x
💻 Local Nitro 0.437s (-4.8%) 1.005s (-1.6%) 0.568s 60 1.92x
💻 Local Express 0.453s (+30.9% 🔺) 1.004s (~) 0.551s 60 1.99x
💻 Local Next.js (Turbopack) 0.551s (-2.2%) 1.022s (+1.7%) 0.471s 59 2.42x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.077s (-15.5% 🟢) 4.063s (+1.5%) 1.987s 15 1.00x
▲ Vercel Express 2.267s (-11.0% 🟢) 4.334s (+1.0%) 2.067s 14 1.09x
▲ Vercel Next.js (Turbopack) 2.568s (+11.5% 🔺) 4.443s (+9.1% 🔺) 1.875s 14 1.24x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.368s (-7.3% 🟢) 1.029s (+2.2%) 0.661s 88 1.00x
🐘 Postgres Express 0.467s (+14.2% 🔺) 1.055s (+1.3%) 0.588s 86 1.27x
🐘 Postgres Next.js (Turbopack) 0.600s (+4.1%) 1.206s (+9.2% 🔺) 0.606s 75 1.63x
💻 Local Express 1.988s (+31.4% 🔺) 2.508s (+20.9% 🔺) 0.520s 36 5.41x
💻 Local Nitro 2.139s (-4.8%) 2.767s (+1.1%) 0.628s 33 5.82x
💻 Local Next.js (Turbopack) 2.504s (+5.1% 🔺) 3.261s (+6.0% 🔺) 0.757s 28 6.81x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 2.952s (-21.9% 🟢) 4.821s (-9.1% 🟢) 1.869s 19 1.00x
▲ Vercel Express 2.999s (-21.1% 🟢) 4.783s (-12.5% 🟢) 1.784s 19 1.02x
▲ Vercel Next.js (Turbopack) 3.083s (-18.8% 🟢) 5.023s (-13.6% 🟢) 1.940s 18 1.04x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.760s (-4.8%) 1.526s (+13.9% 🔺) 0.766s 79 1.00x
🐘 Postgres Express 0.910s (+11.8% 🔺) 1.548s (+14.2% 🔺) 0.638s 78 1.20x
🐘 Postgres Next.js (Turbopack) 2.079s (-21.5% 🟢) 2.857s (-21.7% 🟢) 0.778s 43 2.73x
💻 Local Express 8.695s (+27.2% 🔺) 9.167s (+21.9% 🔺) 0.473s 14 11.44x
💻 Local Nitro 9.995s (+5.3% 🔺) 10.613s (+5.0%) 0.618s 12 13.15x
💻 Local Next.js (Turbopack) 11.119s (+1.1%) 11.941s (-0.7%) 0.822s 11 14.63x

▲ Production (Vercel)

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Nitro 5.984s (-13.9% 🟢) 7.950s (-6.1% 🟢) 1.966s 16 1.00x
▲ Vercel Express 6.334s (-24.4% 🟢) 8.211s (-18.9% 🟢) 1.876s 15 1.06x
▲ Vercel Next.js (Turbopack) 7.116s (-13.0% 🟢) 8.825s (-12.7% 🟢) 1.709s 14 1.19x

🔍 Observability: Nitro | Express | Next.js (Turbopack)

Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.150s (+3.4%) 2.005s (~) 0.009s (+62.5% 🔺) 2.016s (~) 0.866s 10 1.00x
🐘 Postgres Nitro 1.157s (-1.3%) 2.001s (~) 0.001s (~) 2.010s (~) 0.853s 10 1.01x
💻 Local Nitro 1.171s (~) 2.006s (~) 0.013s (+26.0% 🔺) 2.021s (~) 0.850s 10 1.02x
💻 Local Next.js (Turbopack) 1.215s (+0.7%) 2.004s (~) 0.013s (+27.7% 🔺) 2.021s (~) 0.806s 10 1.06x
🐘 Postgres Next.js (Turbopack) 1.222s (-2.7%) 2.002s (~) 0.001s (-16.7% 🟢) 2.010s (~) 0.788s 10 1.06x
🐘 Postgres Express 1.261s (+6.7% 🔺) 1.998s (~) 0.002s (+15.4% 🔺) 2.010s (~) 0.749s 10 1.10x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.327s (+5.2% 🔺) 3.320s (~) 1.054s (-13.0% 🟢) 4.827s (-4.3%) 2.500s 10 1.00x
▲ Vercel Nitro 2.383s (+7.5% 🔺) 3.652s (+4.3%) 0.950s (-13.9% 🟢) 5.128s (+2.1%) 2.745s 10 1.02x
▲ Vercel Next.js (Turbopack) 2.422s (+9.7% 🔺) 3.521s (-4.0%) 1.030s (+1.8%) 5.081s (-2.3%) 2.660s 10 1.04x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.508s (+7.0% 🔺) 2.009s (~) 0.012s (+29.9% 🔺) 2.022s (~) 0.514s 30 1.00x
🐘 Postgres Nitro 1.582s (~) 2.005s (~) 0.004s (-8.2% 🟢) 2.024s (~) 0.442s 30 1.05x
🐘 Postgres Express 1.592s (-0.9%) 2.003s (~) 0.005s (-8.2% 🟢) 2.025s (~) 0.433s 30 1.06x
💻 Local Nitro 1.624s (+2.4%) 2.011s (~) 0.014s (+7.6% 🔺) 2.027s (~) 0.403s 30 1.08x
💻 Local Next.js (Turbopack) 1.753s (+1.9%) 2.009s (~) 0.013s (+11.3% 🔺) 2.025s (~) 0.272s 30 1.16x
🐘 Postgres Next.js (Turbopack) 1.964s (+10.9% 🔺) 2.404s (+19.7% 🔺) 0.004s (+10.3% 🔺) 2.424s (+19.9% 🔺) 0.460s 25 1.30x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 5.762s (-14.2% 🟢) 7.214s (-11.6% 🟢) 0.573s (+194.3% 🔺) 8.281s (-6.2% 🟢) 2.519s 8 1.00x
▲ Vercel Nitro 5.974s (-1.1%) 7.632s (+8.9% 🔺) 0.303s (+52.4% 🔺) 8.406s (+10.2% 🔺) 2.432s 8 1.04x
▲ Vercel Next.js (Turbopack) 6.026s (-5.2% 🟢) 7.888s (-2.3%) 0.277s (-13.5% 🟢) 8.657s (-2.9%) 2.631s 7 1.05x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.758s (-6.6% 🟢) 1.014s (-3.3%) 0.000s (-100.0% 🟢) 1.042s (-3.1%) 0.284s 58 1.00x
🐘 Postgres Express 0.775s (-4.1%) 1.066s (+0.8%) 0.000s (-75.0% 🟢) 1.097s (+1.6%) 0.321s 56 1.02x
🐘 Postgres Next.js (Turbopack) 1.225s (+25.8% 🔺) 1.687s (+21.7% 🔺) 0.000s (+25.7% 🔺) 1.726s (+23.8% 🔺) 0.501s 35 1.62x
💻 Local Express 1.229s (+15.6% 🔺) 1.979s (+12.9% 🔺) 0.000s (+93.5% 🔺) 1.981s (+12.9% 🔺) 0.752s 31 1.62x
💻 Local Nitro 1.448s (~) 2.015s (~) 0.001s (+266.7% 🔺) 2.017s (~) 0.570s 30 1.91x
💻 Local Next.js (Turbopack) 1.465s (-3.6%) 2.014s (~) 0.001s (+128.6% 🔺) 2.017s (~) 0.552s 30 1.93x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 2.743s (-15.5% 🟢) 4.263s (-5.8% 🟢) 0.000s (+Infinity% 🔺) 4.717s (-5.6% 🟢) 1.974s 13 1.00x
▲ Vercel Nitro 2.806s (+1.0%) 4.182s (+4.3%) 0.000s (-100.0% 🟢) 4.817s (+10.0% 🔺) 2.011s 13 1.02x
▲ Vercel Next.js (Turbopack) 2.847s (-9.7% 🟢) 4.347s (-7.7% 🟢) 0.000s (-100.0% 🟢) 4.809s (-7.4% 🟢) 1.962s 13 1.04x

🔍 Observability: Express | Nitro | Next.js (Turbopack)

fan-out fan-in 10 streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.521s (-5.2% 🟢) 2.144s (~) 0.000s (~) 2.174s (~) 0.654s 28 1.00x
🐘 Postgres Express 1.587s (-1.7%) 2.171s (+1.5%) 0.000s (+Infinity% 🔺) 2.213s (+2.8%) 0.626s 28 1.04x
🐘 Postgres Next.js (Turbopack) 2.427s (+9.6% 🔺) 2.939s (+7.7% 🔺) 0.000s (+Infinity% 🔺) 2.992s (+8.7% 🔺) 0.565s 21 1.60x
💻 Local Express 2.531s (+19.7% 🔺) 2.872s (+12.2% 🔺) 0.001s (-2.0%) 2.882s (+12.4% 🔺) 0.351s 21 1.66x
💻 Local Nitro 3.125s (-2.7%) 3.674s (-5.9% 🟢) 0.001s (~) 3.679s (-5.8% 🟢) 0.554s 17 2.06x
💻 Local Next.js (Turbopack) 3.171s (+3.5%) 3.776s (+6.4% 🔺) 0.001s (+6.2% 🔺) 3.780s (+6.3% 🔺) 0.610s 16 2.08x

▲ Production (Vercel)

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
▲ Vercel 🥇 Express 4.447s (-2.2%) 5.921s (-2.5%) 0.010s (+Infinity% 🔺) 6.468s (-1.0%) 2.021s 10 1.00x
▲ Vercel Next.js (Turbopack) 4.515s (-8.4% 🟢) 6.096s (-3.9%) 0.000s (NaN%) 6.613s (-3.1%) 2.097s 10 1.02x
▲ Vercel Nitro 4.525s (-3.2%) 6.076s (+7.2% 🔺) 0.000s (-85.7% 🟢) 6.514s (+7.2% 🔺) 1.989s 10 1.02x

🔍 Observability: Express | Next.js (Turbopack) | Nitro

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Express 19/21
🐘 Postgres Nitro 13/21
▲ Vercel Nitro 10/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 12/21
Next.js (Turbopack) 🐘 Postgres 14/21
Nitro 🐘 Postgres 20/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Redis + BullMQ: Community world (local development)
  • 🌐 Cloudflare: Community world (local development)
  • 🌐 MySQL: Community world (local development)
  • 🌐 Azure: Community world (local development)
  • 🌐 NATS JetStream: Community world (local development)
  • 🌐 Upstash: Community world (local development)

📋 View full workflow run

Comment thread packages/web-shared/src/components/ui/context-card.tsx Outdated
Render absolute Created/Started/Completed (and sibling) timestamps using
date-fns in vercel/front's request/activity format (e.g.
"JUN 10 10:16:02.69 GMT-4") via the shared formatLocalMillisecondTime helper.

Co-authored-by: Cursor <cursoragent@cursor.com>
The card is positioned `sideOffset` away from the trigger, leaving a
transparent un-hoverable gap that caused the hover card to flicker
(open → close → open) when moving the cursor onto it. Add a transparent
hover bridge inside the floating wrapper that extends the hover surface
by `sideOffset` to meet the trigger edge, keeping the visual spacing
while making the hover surface continuous.

Co-authored-by: Cursor <cursoragent@cursor.com>
mitul-s and others added 5 commits June 10, 2026 14:24
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…er unmounts

The unmount cleanup had an inverted guard: an unmounting inactive trigger
would clear the shared active card, hiding another trigger's card (and an
unmounting active trigger left a stale card). Guard on === id instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@socket-security

socket-security Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​react-use-measure@​2.1.1991009383100

View full report

@karthikscale3 karthikscale3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for fixing this

@github-actions

Copy link
Copy Markdown
Contributor

Backport PR opened against stable: #2392. Merge conflicts were resolved by AI — please review carefully. (backport job run)

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.

2 participants