Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Yes. A missing root app/default.tsx can make a Next.js App Router page return a 404 on a direct load or refresh—not just leave one parallel-route slot empty. The reason is that children is an implicit slot, and on a hard navigation Next.js cannot restore unmatched slot state from an earlier client-side visit. Add an intentional fallback for the affected slot, then check the requirements for your installed Next.js version.

Why can a missing default cause a page-wide 404?

Parallel Routes let a layout render multiple route segments or UI regions at the same time. Named slots are represented by folders such as @team or @analytics; the @ folder name does not become part of the URL. Next.js passes each slot’s content to the layout as a prop.

The layout’s children prop is also a slot, even though it does not have an @children folder. In this convention, app/page.tsx supplies the implicit children slot. A root app/default.tsx provides that slot with fallback UI when Next.js cannot determine its active page. The official default.js reference warns that without a default for children, Next.js can return a 404 when it cannot recover the parent page’s active state.

Why can a route work with a Link but fail on refresh?

Soft client navigation and hard navigation have different behavior. During soft navigation, Next.js can preserve the active subpage in a parallel slot, even when that subpage does not match the new URL. A full load—such as entering a URL directly or refreshing the browser—does not have that earlier client state to restore. For unmatched slots, Next.js uses the slot’s default.js fallback; without suitable fallback behavior, the hard load can return a 404.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

This difference explains a common symptom: clicking through the app appears to work, but opening the same route in a new tab or refreshing it fails. The Parallel Routes documentation describes the soft-navigation state retention and hard-navigation fallback behavior.

Which default file should you add?

Use a fallback in the directory for the slot named by the failing route or build error. The implicit children slot uses the root-level file; a named slot uses its own directory.

Slot Fallback location What it covers
Implicit children app/default.tsx Fallback for the main route content when Next.js cannot recover its active state.
Named slot such as @analytics app/@analytics/default.tsx Fallback for that named slot.

The current documentation commonly shows the default.js filename. Its missing-default error guidance accepts the TypeScript extension as well, so default.tsx is the TypeScript form of the same convention. See the missing required default.js error guidance for examples.

How to repair and verify the route

  1. Find the failing segment or slot. Read the build error or reproduce the route failure. Remember that a root app/default.tsx handles implicit children, while a named slot such as app/@analytics needs a fallback in that slot’s directory.
  2. Add the matching fallback. Render an intentional empty state, such as return null, or provide a real fallback page. If the intended behavior for the slot is a 404, the official guidance also shows calling notFound().
  3. Test both navigation paths. Navigate to the route from inside the app, then test a direct URL entry and a browser refresh. The second test checks the hard-navigation case that cannot reuse prior slot state.
  4. Check your installed Next.js version. The Next.js 16 upgrade guide says every parallel route slot now requires an explicit default.js file and that builds fail without them. Check the project’s dependency manifest or lockfile rather than assuming older-version behavior applies.

What should the fallback render?

Choose based on what the slot represents. Returning null is appropriate when an unmatched slot should intentionally display nothing. A fallback page is better when users need context or navigation. Use notFound() when the route should remain a 404 rather than silently rendering content in that slot. Next.js documents these options in its missing-default error guidance.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What the 404 is protecting

Next.js does not always render an unmatched parallel route as if it belonged to the current URL. Its documentation explains that the 404 for unmatched routes helps prevent a parallel route from appearing on a page where it was not intended. The fallback is therefore both a recovery mechanism for hard loads and an explicit choice about what an unmatched slot should show.

The relevant official documentation pages were updated February 27, 2026. The version 16 guide establishes the all-slots build requirement for that release; the available guidance does not establish identical build-time behavior across every earlier Next.js version.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.