Skip to content

v15.3.canary-0 with viewTransitions enabled breaks re-ordering components #79069

Closed as not planned
@mhornbacher

Description

@mhornbacher

Link to the code that reproduces this issue

https://github.com/mhornbacher/nextjs-view-transitions-bug

To Reproduce

  1. Start the application in dev mode (next dev)
  2. Visit the application at localhost:3000 (or whatever port it starts up on
  3. Press on any header row to change the sorting order (either the column or descending)
  4. See the error (see below for details)
  5. Change experimental.viewTransition to false in next.config.ts
  6. Try again and see the behavior is gone

Current vs. Expected behavior

It should sort the list correctly like it does with viewTransition disabled.

Currently it throws the following exception since the 15.3.0-canary.0 release (here is the commit diff of the breaking version)

error-boundary-callbacks.js:85 Uncaught TypeError: parentInstance.moveBefore is not a function
    at appendChild (react-dom-client.development.js:23281:26)
    at insertOrAppendPlacementNode (react-dom-client.development.js:13478:13)
    at insertOrAppendPlacementNode (react-dom-client.development.js:13491:11)
    at commitPlacement (react-dom-client.development.js:13549:11)
    at runWithFiberInDEV (react-dom-client.development.js:885:30)
    at commitReconciliationEffects (react-dom-client.development.js:15477:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14939:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15152:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15239:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15152:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:15441:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14954:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
    at commitMutationEffectsOnFiber (react-dom-client.development.js:14938:11)
    at recursivelyTraverseMutationEffects (react-dom-client.development.js:14924:11)
appendChild @ react-dom-client.development.js:23281
insertOrAppendPlacementNode @ react-dom-client.development.js:13478
insertOrAppendPlacementNode @ react-dom-client.development.js:13491
commitPlacement @ react-dom-client.development.js:13549
runWithFiberInDEV @ react-dom-client.development.js:885
commitReconciliationEffects @ react-dom-client.development.js:15477
commitMutationEffectsOnFiber @ react-dom-client.development.js:14939
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15152
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15239
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15152
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14954
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14954
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14954
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15137
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15137
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14954
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14954
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14954
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14954
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:14938
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15441
recursivelyTraverseMutationEffects @ react-dom-client.development.js:14924
commitMutationEffectsOnFiber @ react-dom-client.development.js:15212
flushMutationEffects @ react-dom-client.development.js:18822
commitRoot @ react-dom-client.development.js:18779
commitRootWhenReady @ react-dom-client.development.js:17815
performWorkOnRoot @ react-dom-client.development.js:17714
performSyncWorkOnRoot @ react-dom-client.development.js:19951
flushSyncWorkAcrossRoots_impl @ react-dom-client.development.js:19791
processRootScheduleInMicrotask @ react-dom-client.development.js:19834
eval @ react-dom-client.development.js:19970

Provide environment information

Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 24.4.0: Fri Apr 11 18:32:50 PDT 2025; root:xnu-11417.101.15~117/RELEASE_ARM64_T6041
  Available memory (MB): 49152
  Available CPU cores: 14
Binaries:
  Node: 23.11.0
  npm: 10.9.2
  Yarn: N/A
  pnpm: 10.10.0
Relevant Packages:
  next: 15.4.0-canary.31 // Latest available version is detected (15.4.0-canary.31).
  eslint-config-next: N/A
  react: 19.1.0
  react-dom: 19.1.0
  typescript: 5.8.3
Next.js Config:
  output: N/A

Which area(s) are affected? (Select all that apply)

Not sure

Which stage(s) are affected? (Select all that apply)

next dev (local), next build (local), next start (local)

Additional context

I am using the react-aria-components library as an easy example as the nested way to trigger this is most evident using this library. But it can be anything that re-organizes the elements on the page based on complex state logic.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions