Surface RSC timings in Request Insights#96053
Conversation
Stats from current PR🔴 2 regressions, 2 improvements
📊 All Metrics📖 Metrics GlossaryDev Server Metrics:
Build Metrics:
Change Thresholds:
⚡ Dev Server
📦 Dev Server (Webpack) (Legacy)📦 Dev Server (Webpack)
⚡ Production Builds
📦 Production Builds (Webpack) (Legacy)📦 Production Builds (Webpack)
📦 Bundle SizesBundle Sizes⚡ TurbopackClient Main Bundles
Server Middleware
Build DetailsBuild Manifests
📦 WebpackClient Main Bundles
Polyfills
Pages
Server Edge SSR
Middleware
Build DetailsBuild Manifests
Build Cache
🔄 Shared (bundler-independent)Runtimes
📝 Changed Files (29 files)Files with changes:
View diffsapp-page-exp..ntime.dev.jsfailed to diffapp-page-exp..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page.runtime.dev.jsfailed to diffapp-page.runtime.prod.jsfailed to diffapp-route-ex..ntime.dev.jsDiff too large to display app-route-ex..time.prod.jsDiff too large to display app-route-tu..ntime.dev.jsDiff too large to display app-route-tu..time.prod.jsDiff too large to display app-route-tu..ntime.dev.jsDiff too large to display app-route-tu..time.prod.jsDiff too large to display app-route.runtime.dev.jsDiff too large to display app-route.ru..time.prod.jsDiff too large to display pages-api-tu..ntime.dev.jsDiff too large to display pages-api-tu..time.prod.jsDiff too large to display pages-api.runtime.dev.jsDiff too large to display pages-api.ru..time.prod.jsDiff too large to display pages-turbo...ntime.dev.jsDiff too large to display pages-turbo...time.prod.jsDiff too large to display pages.runtime.dev.jsDiff too large to display pages.runtime.prod.jsDiff too large to display server.runtime.prod.jsDiff too large to display use-cache-pr..ntime.dev.jsDiff too large to display use-cache-pr..ntime.dev.jsDiff too large to display use-cache-pr..ntime.dev.jsDiff too large to display use-cache-pr..ntime.dev.jsDiff too large to display 📎 Tarball URLCommit: 2230e48 |
Failing test suitesCommit: 2230e48 | About building and testing Next.js
Expand output● otel-parent-span-propagation › should set http.route on handleRequest span for dynamic routes ● otel-parent-span-propagation › should set http.route on handleRequest span for static routes
Expand output● otel-parent-span-propagation › should set http.route on handleRequest span for dynamic routes ● otel-parent-span-propagation › should set http.route on handleRequest span for static routes
Expand output● opentelemetry - default › root context › app router › should trace inline Server Action ● opentelemetry - default › root context › app router › should trace exported Server Action ● opentelemetry - default › root context › app router › should handle RSC with fetch ● opentelemetry - default › root context › app router › should propagate custom context without span ● opentelemetry - default › root context › app router › should handle RSC with fetch on edge ● opentelemetry - default › root context › app router › should handle RSC with fetch in RSC mode ● opentelemetry - default › root context › app router › should handle route handlers in app router ● opentelemetry - default › root context › app router › should record accurate status code for non-200 route handler responses ● opentelemetry - default › root context › app router › should record status code for failing handler ● opentelemetry - default › root context › app router › should handle error in RSC ... truncated ...
Expand output● request insights › tracks RSC rendering and HTML completion across Suspense
Expand output● otel-parent-span-propagation › should set http.route on handleRequest span for dynamic routes ● otel-parent-span-propagation › should set http.route on handleRequest span for static routes
Expand output● otel-parent-span-propagation › should set http.route on handleRequest span for dynamic routes ● otel-parent-span-propagation › should set http.route on handleRequest span for static routes
Expand output● ReactRefreshLogBox › Node.js builtins ● ReactRefreshLogBox › Module not found ● ReactRefreshLogBox › Module not found (missing global CSS)
Expand output● Error Overlay for server components compiler errors in pages › importing 'next/cache' APIs in pages › cacheTag is not allowed
Expand output● otel-parent-span-propagation › should set http.route on handleRequest span for dynamic routes ● otel-parent-span-propagation › should set http.route on handleRequest span for static routes
... truncated to fit in one GitHub comment ... |
| attributes: { | ||
| 'next.span_name': `run Server Action ${serverActionName}`, | ||
| 'next.span_category': 'application', | ||
| 'next.span.category': 'application', |
Summary
This is an internal, protocol-dependent proof of concept limited to dynamic App Router Node-stream rendering without Cache Components.
Verification
pnpm --filter=next typespnpm jest packages/next/src/server/lib/trace/request-insights.test.ts packages/next/src/next-devtools/dev-overlay/components/request-insights/trace-viewer.test.ts --runInBandNEXT_TEST_PREFER_OFFLINE=1 pnpm test-dev-webpack test/development/app-dir/request-insights/request-insights.test.tsNEXT_TEST_PREFER_OFFLINE=1 pnpm test-dev-webpack test/development/app-dir/react-performance-track/react-performance-track.test.ts