├── .gitignore ├── README.md ├── app ├── BufferDetector.js ├── app-router │ ├── (route-groups) │ │ ├── layout.js │ │ ├── route-group-1 │ │ │ ├── layout.js │ │ │ └── page.js │ │ ├── route-group-2 │ │ │ ├── layout.js │ │ │ └── page.js │ │ └── route-groups │ │ │ ├── layout.js │ │ │ └── page.js │ ├── dynamic-routes │ │ ├── [id] │ │ │ └── page.js │ │ ├── layout.js │ │ └── page.js │ ├── layout.js │ ├── nested │ │ ├── layout.js │ │ └── routing │ │ │ ├── deeper │ │ │ └── page.js │ │ │ ├── layout.js │ │ │ └── page.js │ ├── page.js │ ├── parallel-routes │ │ ├── @route1 │ │ │ ├── page.js │ │ │ ├── sharedsubroute │ │ │ │ └── page.js │ │ │ └── subroute │ │ │ │ └── page.js │ │ ├── @route2 │ │ │ ├── page.js │ │ │ ├── sharedsubroute │ │ │ │ └── page.js │ │ │ └── subroute2 │ │ │ │ └── page.js │ │ ├── layout.js │ │ └── page.js │ └── router-refresh │ │ ├── layout.js │ │ └── page.js ├── client-components │ ├── ClientComponent.js │ ├── details │ │ ├── ClientComponent.js │ │ ├── ClientComponentSSRWrapper.js │ │ └── page.js │ ├── hydration-failed │ │ ├── ClientComponent.js │ │ └── page.js │ ├── next-dynamic │ │ ├── ClientComponent.js │ │ ├── ClientComponentSSRWrapper.js │ │ └── page.js │ ├── no-ssr │ │ ├── ClientComponent.js │ │ └── page.js │ ├── page.js │ ├── server-children │ │ ├── ClientComponent.js │ │ ├── ServerComponent.js │ │ └── page.js │ └── server-import │ │ ├── ClientComponent.js │ │ ├── ClientComponentImportServerOnly.js │ │ ├── ServerComponent.js │ │ ├── ServerOnlyComponent.js │ │ └── page.js ├── favicon.ico ├── layout.js ├── not-found.js ├── notes │ └── page.js ├── opengraph-image.png ├── page.js ├── server-components │ ├── Delay.js │ ├── async │ │ ├── Delays.js │ │ └── page.js │ └── streaming │ │ ├── StreamWatcher.js │ │ └── page.js ├── static-content │ ├── 2 │ │ └── page.js │ └── page.js ├── style.css ├── suspense-test │ └── page.js ├── test │ └── math-random │ │ ├── 1 │ │ └── page.js │ │ └── 2 │ │ └── page.js └── view-source │ └── [...path] │ └── route.js ├── components ├── FileSource.js ├── PageInfo.js ├── RouterRefresh.js ├── Timer.js ├── ViewSource.js ├── next │ └── Link.js ├── observer │ ├── RSCObserver.css │ └── RSCObserver.js └── utils.js ├── jsconfig.json ├── next.config.js ├── package.json └── public ├── RSCObserver.js ├── import-error.png ├── mental-model-1.png ├── mental-model-2.png ├── mental-model-3.png ├── mental-model-4.png ├── mental-model-client-1.png ├── mental-model-client-2.png ├── mental-model.vsdx ├── opengraph.psd └── rsc.png /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/README.md -------------------------------------------------------------------------------- /app/BufferDetector.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/BufferDetector.js -------------------------------------------------------------------------------- /app/app-router/(route-groups)/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/(route-groups)/layout.js -------------------------------------------------------------------------------- /app/app-router/(route-groups)/route-group-1/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/(route-groups)/route-group-1/layout.js -------------------------------------------------------------------------------- /app/app-router/(route-groups)/route-group-1/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/(route-groups)/route-group-1/page.js -------------------------------------------------------------------------------- /app/app-router/(route-groups)/route-group-2/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/(route-groups)/route-group-2/layout.js -------------------------------------------------------------------------------- /app/app-router/(route-groups)/route-group-2/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/(route-groups)/route-group-2/page.js -------------------------------------------------------------------------------- /app/app-router/(route-groups)/route-groups/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/(route-groups)/route-groups/layout.js -------------------------------------------------------------------------------- /app/app-router/(route-groups)/route-groups/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/(route-groups)/route-groups/page.js -------------------------------------------------------------------------------- /app/app-router/dynamic-routes/[id]/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/dynamic-routes/[id]/page.js -------------------------------------------------------------------------------- /app/app-router/dynamic-routes/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/dynamic-routes/layout.js -------------------------------------------------------------------------------- /app/app-router/dynamic-routes/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/dynamic-routes/page.js -------------------------------------------------------------------------------- /app/app-router/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/layout.js -------------------------------------------------------------------------------- /app/app-router/nested/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/nested/layout.js -------------------------------------------------------------------------------- /app/app-router/nested/routing/deeper/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/nested/routing/deeper/page.js -------------------------------------------------------------------------------- /app/app-router/nested/routing/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/nested/routing/layout.js -------------------------------------------------------------------------------- /app/app-router/nested/routing/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/nested/routing/page.js -------------------------------------------------------------------------------- /app/app-router/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/page.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/@route1/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/@route1/page.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/@route1/sharedsubroute/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/@route1/sharedsubroute/page.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/@route1/subroute/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/@route1/subroute/page.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/@route2/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/@route2/page.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/@route2/sharedsubroute/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/@route2/sharedsubroute/page.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/@route2/subroute2/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/@route2/subroute2/page.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/layout.js -------------------------------------------------------------------------------- /app/app-router/parallel-routes/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/parallel-routes/page.js -------------------------------------------------------------------------------- /app/app-router/router-refresh/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/router-refresh/layout.js -------------------------------------------------------------------------------- /app/app-router/router-refresh/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/app-router/router-refresh/page.js -------------------------------------------------------------------------------- /app/client-components/ClientComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/ClientComponent.js -------------------------------------------------------------------------------- /app/client-components/details/ClientComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/details/ClientComponent.js -------------------------------------------------------------------------------- /app/client-components/details/ClientComponentSSRWrapper.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/details/ClientComponentSSRWrapper.js -------------------------------------------------------------------------------- /app/client-components/details/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/details/page.js -------------------------------------------------------------------------------- /app/client-components/hydration-failed/ClientComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/hydration-failed/ClientComponent.js -------------------------------------------------------------------------------- /app/client-components/hydration-failed/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/hydration-failed/page.js -------------------------------------------------------------------------------- /app/client-components/next-dynamic/ClientComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/next-dynamic/ClientComponent.js -------------------------------------------------------------------------------- /app/client-components/next-dynamic/ClientComponentSSRWrapper.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/next-dynamic/ClientComponentSSRWrapper.js -------------------------------------------------------------------------------- /app/client-components/next-dynamic/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/next-dynamic/page.js -------------------------------------------------------------------------------- /app/client-components/no-ssr/ClientComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/no-ssr/ClientComponent.js -------------------------------------------------------------------------------- /app/client-components/no-ssr/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/no-ssr/page.js -------------------------------------------------------------------------------- /app/client-components/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/page.js -------------------------------------------------------------------------------- /app/client-components/server-children/ClientComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-children/ClientComponent.js -------------------------------------------------------------------------------- /app/client-components/server-children/ServerComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-children/ServerComponent.js -------------------------------------------------------------------------------- /app/client-components/server-children/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-children/page.js -------------------------------------------------------------------------------- /app/client-components/server-import/ClientComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-import/ClientComponent.js -------------------------------------------------------------------------------- /app/client-components/server-import/ClientComponentImportServerOnly.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-import/ClientComponentImportServerOnly.js -------------------------------------------------------------------------------- /app/client-components/server-import/ServerComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-import/ServerComponent.js -------------------------------------------------------------------------------- /app/client-components/server-import/ServerOnlyComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-import/ServerOnlyComponent.js -------------------------------------------------------------------------------- /app/client-components/server-import/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/client-components/server-import/page.js -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /app/layout.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/layout.js -------------------------------------------------------------------------------- /app/not-found.js: -------------------------------------------------------------------------------- 1 | export default ()=><>404 2 | -------------------------------------------------------------------------------- /app/notes/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/notes/page.js -------------------------------------------------------------------------------- /app/opengraph-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/opengraph-image.png -------------------------------------------------------------------------------- /app/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/page.js -------------------------------------------------------------------------------- /app/server-components/Delay.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/server-components/Delay.js -------------------------------------------------------------------------------- /app/server-components/async/Delays.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/server-components/async/Delays.js -------------------------------------------------------------------------------- /app/server-components/async/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/server-components/async/page.js -------------------------------------------------------------------------------- /app/server-components/streaming/StreamWatcher.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/server-components/streaming/StreamWatcher.js -------------------------------------------------------------------------------- /app/server-components/streaming/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/server-components/streaming/page.js -------------------------------------------------------------------------------- /app/static-content/2/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/static-content/2/page.js -------------------------------------------------------------------------------- /app/static-content/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/static-content/page.js -------------------------------------------------------------------------------- /app/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/style.css -------------------------------------------------------------------------------- /app/suspense-test/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/suspense-test/page.js -------------------------------------------------------------------------------- /app/test/math-random/1/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/test/math-random/1/page.js -------------------------------------------------------------------------------- /app/test/math-random/2/page.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/test/math-random/2/page.js -------------------------------------------------------------------------------- /app/view-source/[...path]/route.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/app/view-source/[...path]/route.js -------------------------------------------------------------------------------- /components/FileSource.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/FileSource.js -------------------------------------------------------------------------------- /components/PageInfo.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/PageInfo.js -------------------------------------------------------------------------------- /components/RouterRefresh.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/RouterRefresh.js -------------------------------------------------------------------------------- /components/Timer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/Timer.js -------------------------------------------------------------------------------- /components/ViewSource.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/ViewSource.js -------------------------------------------------------------------------------- /components/next/Link.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/next/Link.js -------------------------------------------------------------------------------- /components/observer/RSCObserver.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/observer/RSCObserver.css -------------------------------------------------------------------------------- /components/observer/RSCObserver.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/observer/RSCObserver.js -------------------------------------------------------------------------------- /components/utils.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/components/utils.js -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/jsconfig.json -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/next.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/package.json -------------------------------------------------------------------------------- /public/RSCObserver.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/RSCObserver.js -------------------------------------------------------------------------------- /public/import-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/import-error.png -------------------------------------------------------------------------------- /public/mental-model-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/mental-model-1.png -------------------------------------------------------------------------------- /public/mental-model-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/mental-model-2.png -------------------------------------------------------------------------------- /public/mental-model-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/mental-model-3.png -------------------------------------------------------------------------------- /public/mental-model-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/mental-model-4.png -------------------------------------------------------------------------------- /public/mental-model-client-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/mental-model-client-1.png -------------------------------------------------------------------------------- /public/mental-model-client-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/mental-model-client-2.png -------------------------------------------------------------------------------- /public/mental-model.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/mental-model.vsdx -------------------------------------------------------------------------------- /public/opengraph.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/opengraph.psd -------------------------------------------------------------------------------- /public/rsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matt-kruse/demystifying-rsc/HEAD/public/rsc.png --------------------------------------------------------------------------------