revalidateTag during streaming Route Handler response is silently dropped
revalidateTag or revalidatePath called after a Route Handler returns a streaming Response is queued but never executed, causing stale cache entries with no warning.

A sourced fix-playbook workspace for AI and agent engineers. Find the root cause, the affected version, the rollback-safe next step, and edge-case audits.
revalidateTag or revalidatePath called after a Route Handler returns a streaming Response is queued but never executed, causing stale cache entries with no warning.
The v1 message converters in langchain-groq and langchain-mistralai do not filter out invalid_tool_call blocks, causing them to be passed to Groq and Mistral APIs. These providers may reject such blocks when replaying partial or malformed tool-call history, leading to runtime errors. Other providers (OpenAI, Anthropic, Fireworks) already filter these blocks.
When configuring Turbopack rules to treat `.css?url` imports as asset type, importing from a Server Component fails with 'css client asset is not css chunk placeable'. The same configuration works from Client Components and for other asset types like SVG.
Clicking a client-side <Link> to a route that calls redirect() never navigates and spins at ~100% CPU when the route builds as fully dynamic (Æ’) under cacheComponents=true. The redirect is caught by RedirectBoundary but never commits, so router.replace is never called. Direct visits work; only production client navigations are affected.
Streaming with XMLOutputParser silently loses data when the root XML element uses a valid Unicode name (e.g., Chinese tags). The parser's start-tag detection regex only matches ASCII letters, colon, and underscore, causing it to skip Unicode roots and either return empty output or omit the root hierarchy.
Since Next.js 16.3.0, the published .d.ts files reference global type names URLPatternInput, URLPatternOptions, and URLPattern generic parameters that are only available in TypeScript 6.0+. This causes TypeScript 5.x users with skipLibCheck: false to encounter TS2304 errors in next/dist/server/web/spec-extension/url-pattern.d.ts, breaking typechecking for any project that types its next.config.ts.
langchain_mcp_adapters.sessions._create_stdio_session constructs an MCP ClientSession without a default read_timeout_seconds, so any request to a non-responsive stdio server (e.g., during initialize()/call_tool()/list_tools()) blocks indefinitely. The MCP SDK already supports per-request timeouts via read_timeout_seconds; this library simply fails to set a default.
Next.js 16.4+ strict route matching incorrectly treats a parallel slot catch-all from one route group as part of routes in sibling groups, causing valid pages to be reported as unmatched and failing dev/production webpack builds.
When a navigation clicks a Link during an in-flight prefetch, a pending segment-cache entry is passed to React as a plain promise. In partial or rejected prefetches the promise resolves to null, causing React to commit an empty segment and drop the document title.
When `outputFileTracingIncludes` is configured, the include-glob walk traverses the entire tracing root and follows symlinks without robust cycle detection. In legal pnpm workspaces where a package nested inside another declares its ancestor as dependency, this creates a self-embedding symlink chain that triggers ELOOP and fails the build.
Turbopack emits the same async-loader module ID with different factories depending on chunk availability. The runtime's first-wins installation causes order-dependent behavior, leading to intermittent dynamic import failures: 'module factory is not available'.
The merge_message_runs utility attempts to merge consecutive ChatMessage or FunctionMessage objects based solely on message class, leading to ValueError when their identifying fields (role or name) differ. This violates expected behavior and breaks common message processing pipelines.
Next.js builds produce different file hashes for the same source code, caused by non-deterministic ordering of CSS modules during webpack compilation, affecting static export reproducibility.
RunnableParallel's async execution paths (ainvoke and _atransform) do not read the `max_concurrency` configuration key, causing all branches to run concurrently and potentially violating downstream rate limits. The sync path correctly uses a thread pool with the configured limit.
The OpenAI and ChatOpenAI classes in langchain-openai default to gpt-3.5-turbo-instruct and gpt-3.5-turbo respectively. OpenAI shut down gpt-3.5-turbo-instruct on September 28, 2026, and gpt-3.5-turbo will be shut down on October 23, 2026. Users who do not explicitly pass a model will encounter API errors. The recommended replacement gpt-5.6-terra is a reasoning model and does not support the legacy completions endpoint, requiring a strategic change to defaults.
Next.js dev server leaks memory when a route handler executes an infinite async loop, eventually crashing the process. Production build and plain Node.js do not exhibit this issue.
Calling stream() or astream() on ChatPerplexity with a stop argument raises TypeError because the streaming implementation incorrectly sends stop_sequences (an Anthropic parameter) to Perplexity's Chat Completions API, which only accepts stop. The bug breaks streaming for any user passing stop sequences.
When a modal is opened via interception over a page that is itself interceptable, performing a router.refresh() or revalidatePath causes the background route refresh request to incorrectly include the Next-Url header, leading to an intercepted response and an MPA fallback, resulting in a full page load and loss of client state.
The Tee context manager in langchain-core does not close the underlying source generator if one or more child iterators are never started, causing resource leaks.
When using MapLibre GL v6 with Next.js Turbopack, the generated worker file contains an import for 'maplibre-gl-shared-dev.mjs', but the emitted file has a hash suffix, causing the worker to fail with 'Worker failed to load'.
ShellToolMiddleware.aafter_agent synchronously executes shutdown commands on the event loop, starving unrelated async tasks; delegate to run_in_executor like abefore_agent.
When prefetching the index page of an optional catch-all dynamic route, the client caches the __PAGE__ entry under a fallback slug. Subsequent navigation to a sibling dynamic path reuses this cached entry without issuing a new request, causing the wrong page content to be displayed.
The hosted Supabase transaction pooler (port 6543) reproduces dropped pipelined PostgreSQL replies when a postgres.js client with prepare:false and max_pipeline:1 sends concurrent unprepared queries. One ParseComplete/ParameterDescription reply is lost and the client promise never resolves, matching Supavisor issues #1061 and fixes #1079/#1176. The deployed pooler version may not include those fixes.
In Next.js production builds (App Router), router.refresh() fails to trigger a server round-trip when the current page was streamed and the URL contains a query string. This causes stale UI after mutations on filtered list pages, with no fetch initiated. The issue is present across multiple versions, with 16.2.12 only affected for query-string URLs, and 16.3.5+ affected for all streamed pages. A fix requires forcing cache invalidation for the current URL during refresh.
Next.js dev server (Turbopack) fails to match routes that are children of a dynamic segment nested inside route groups, returning instant 404 for the entire session. The issue is probabilistic, occurs under module graph load, and is repaired by any file event under app/. Production builds are unaffected.
InMemoryRecordManager treats an explicitly provided empty list for group_ids as if it were None because of truthiness checks. This causes update() to skip length validation and store records with group_id=None, and list_keys() to return all keys instead of an empty result when group_ids=[] is passed. The async methods have the same issue.
The on_tool_error callback does not receive the arbitrary keyword arguments (e.g., tenant, trace_id) that were passed to tool.invoke, while on_tool_start and on_tool_end do. This inconsistency causes loss of critical context during error handling.
In langchain's retry middleware, `should_retry_exception` checks `callable(retry_on)` before `isinstance`, treating exception classes as callables. Passing a single exception class (e.g. `TimeoutError`) invokes the class with the exception, returning a truthy exception instance, causing every exception to be retried regardless of the intended filter.
The helper function _get_data_content_block_types() reconstructs its result from get_args and get_type_hints on every call, even though the result is immutable at runtime. This is called repeatedly by is_data_content_block, leading to ~23ms CPU per ChatOpenAI payload for a 204-message history, blocking the event loop in async applications.
In Next.js 16.3.6 on Vercel, background cache regeneration started during streaming is not tracked by waitUntil, causing it to be aborted when the serverless function exits, resulting in failed revalidations.
LangChain, LlamaIndex, and Pydantic
Pinecone, Chroma, Weaviate, Qdrant, and neighboring stores
Next.js, Supabase, and the surrounding app stack