9.33.3
- Shader preprocessor: #if !X is #if !defined(X) - by enriqxxx (#19098)
- Flow Graph Editor: add sound reactions and diagnostics - [New Feature] by RaananW (#19102)
- WebGPU: invalidate cached draws when vertex buffers change - [Bug Fix] by Popov72 (#19051)
- WebGPU: createRenderPipelineAsync prewarms the front face the draws of the mesh use - by enriqxxx (#19108)
- Add bent-normal reflection occlusion - by sebavan (#19069)
- WebGPU: createRenderPipelineAsync can prewarm the pipeline of draws that bind depth or unfilterable float textures - by enriqxxx (#19107)
- WebGPU: maxFramesInFlight, a limit on the frames the GPU has in flight (opt-in) - by enriqxxx (#19093)
- Skip zero-count Buffer.updateDirectly uploads - by RizgarOzan (#19100)
- Copy assigned by-value parameters when inlining shader functions - [Bug Fix] by bkaradzic-microsoft (#19077)
- Fix DirectionalLight fixed-frustum shadows under reverse depth - by christabone (#19056)
- Fix HDR texture support in volumetric light scattering - by BarthPaleologue (#19036)
- Fix duplicate depth texture entry in the WebGPU MRT texture cache - by Bboissen (#19045)
- Preserve direct draws without native command batching - by Popov72 (#19076)
- Fix FBX animation refinement growing across bones - [Bug Fix] by Popov72 (#19050)
- Load glTF Gaussian splats compressed with KHR_gaussian_splatting_compression_spz - by CedricGuillemet (#19106)
v16.5.0-canary.41
- feat(next/image): add internal image redirects (to match existing external image redirects): #98271
- Turbopack: show the source-mapped file in issue headers: #101161
- Add Request Insights filters and pause controls: #96924
- Avoid instrumenting Next.js telemetry requests: #97182
- Classify framework request activity: #96914
- Move optional lockfile parameters into options object: #101132
- Record Instant Insights validation worker spans: #98677
- Share local tracing across development runtimes: #98676
- [image-optimizer] Replace handleDevOutput with an 'optimized' flag in ImageOptimizerResult, make the caller responsible for blur svg placeholder generation: #101167
- [image-optimizer] Move previous cache entry reuse out of
next/image-optimizer-transform: #101126 - Deeply freeze the loaded config in test mode: #99943
- fix: do not run onStage listeners for stages that were aborted: #95684
- Update font data: #101129
- Remove the experimental.lockDistDir opt-out option: #100747
- Keep loaded config from sharing objects with defaults and callers: #99942
- Fix effects applying when they didn't need to because expression was replaced: #101166
- fix: server actions entrypoint erroring build with
type: commonjs: #101164 - skills: improve cache-aware navigation workflows: #101169
- docs: document experimental flags removed in Next.js 16: #101165
- docs: useServerInsertedHTML: #98671
- Turbopack: narrow async-module emptiness dependencies: #101154
- eval: measure Next Dev Loop on Pokédex: #100962
- Turbopack: internalize evaluation pool plumbing: #101143
- Turbopack: generate require.context as a synthetic module: #100526
- turbopack-node: linear IPC frame parsing with eager UTF-8 decoding: #99968
- turbo-tasks-backend: keep recorded GC roots until their TTL expires: #100279
- Turbopack: only read conditionally needed values where they are used: #101072
Huge thanks to @styfle, @lukesandberg, @DavidIlie, @bgw, @jimmyhmiller, @lubieowoce, @aurorascharff, @icyJoseph, @jamiboym, and @mischnic for helping!
ui v0.13.1
- Bumped
@remix-run/*dependencies:
session v1.0.1
-
Fix
createFsSessionStoragecorrupting a session file when overlapping requests save the same session. A corrupted file made every later request for that session throw. Saves now write a temporary file and rename it over the session file, so reads always see a complete session. Replaced session files keep their existing permissions. (#12148)On Windows, where replacing a file can fail while another program such as a virus scanner has it open, a save retries for about a second before failing.
-
createFsSessionStoragenow starts a new session when a session file isn't valid JSON, as it does when the file is missing, instead of throwing on every request that sends that session's cookie. Visitors whose session files were corrupted by overlapping saves in earlier versions, or by a crash during a save, get a fresh session instead of an error until their cookie expires. (#12148)
session-middleware v1.0.2
- Bumped
@remix-run/*dependencies:
session-storage-memcache v1.0.1
- Bumped
@remix-run/*dependencies:
spa v1.0.2
- Bumped
@remix-run/*dependencies:
test v1.1.0
-
Add new APIs to the mock function context for both
mockandt.mock: (#12097)mockImplementation(implementation)changes the default implementation.mockImplementationOnce(implementation, onCall?)replaces one call at a zero-based index, defaulting to the next call.resetCalls()clears the call history.callCount()returns the number of recorded invocations, including calls still executing.restore()restores a standalone mock's original implementation.
Replacement controls preserve generic and overloaded function signatures. Test context mocks restore in registration order alongside cleanup callbacks, even after failures. Cleanup errors retain their original stack traces and are reported alongside test failures.
-
Fix syntax errors in browser tests that dynamically import modules by preserving quotes around rewritten module URLs. (#12102)
-
Fix browser test runs in WebKit stalling until the progress timeout once earlier files' results fill the runner page. The running file was placed below those results, out of view, where WebKit throttles its timers. It now runs at the top of the page. (#12162)
session-storage-redis v1.0.1
- Bumped
@remix-run/*dependencies:
static-middleware v1.0.2
- Bumped
@remix-run/*dependencies: