Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
e0f0095
chore: upgrade to Next.js 16.3 and React 19.2
aurorascharff Jun 22, 2026
96c103e
refactor: migrate to App Router and enable Cache Components
aurorascharff Jun 22, 2026
85879bd
review: address PR feedback
aurorascharff Jun 22, 2026
b459abc
chore: pin to stable Next.js 16.2.9
aurorascharff Jun 22, 2026
98417e2
perf: move 'use cache' to the data layer with cacheLife('max')
aurorascharff Jun 23, 2026
17d89a9
perf: lazy-load HomeContent so only the home route ships it
aurorascharff Jun 23, 2026
79d988f
perf: prerender the markdown (.md) route handler statically
aurorascharff Jun 23, 2026
155e4ac
fix: return 404 (not 500) for catch-all paths with no content file
aurorascharff Jun 23, 2026
4efe72d
docs: explain the Turbopack opt-out in next.config.js
aurorascharff Jun 23, 2026
423ff30
chore: restore secondary copyright banners
aurorascharff Jun 23, 2026
0b67363
fix: auto-expand deep-linked DeepDive/Example after hydration
aurorascharff Jul 2, 2026
11d5287
Merge remote-tracking branch 'upstream/main' into upgrade-next-16
aurorascharff Jul 9, 2026
171c159
Wire per-page OG images into App Router metadata
aurorascharff Jul 9, 2026
f8733aa
Remove accidentally committed launch.json
aurorascharff Jul 9, 2026
8a242fe
Merge branch 'reactjs:main' into upgrade-next-16
aurorascharff Jul 17, 2026
f415106
format
aurorascharff Jul 17, 2026
b16527d
Merge branch 'upgrade-next-16' of github.com:aurorascharff/react.dev …
aurorascharff Jul 17, 2026
5a4f07b
Force webpack for next.js build to ensure compatibility with Next 16
aurorascharff Jul 17, 2026
18f0169
Update Tailwind CSS content paths for Next.js compatibility
aurorascharff Jul 17, 2026
a1e82f7
Add App Router-aware bundle size analysis script and update workflow
aurorascharff Jul 17, 2026
d50cbcd
Refactor section rendering to use renderSectionContent and add layout…
aurorascharff Jul 17, 2026
91d0864
Enhance Toc component with optimistic scrolling and transition handling
aurorascharff Jul 17, 2026
24638c6
Revert sidebar fix
aurorascharff Jul 17, 2026
6f68601
Add not found boundaries
aurorascharff Jul 17, 2026
37804ab
Restructure components
aurorascharff Jul 17, 2026
5f9a142
Upgrade react-collapse and fix design of scoped not found pages
aurorascharff Jul 17, 2026
b3f3af0
add footer to notfoundpage
aurorascharff Jul 17, 2026
1daeb92
fix notfound layout
aurorascharff Jul 17, 2026
bf050e6
Update Google Analytics configuration to prevent automatic page view …
aurorascharff Jul 17, 2026
5bc9a7c
[og images] Resize long og image text (#8543)
aurorascharff Jul 20, 2026
c1baf23
Upgrade Next.js to 16.3.0
aurorascharff Aug 12, 2026
869a7f1
fix: prerender homepage content
aurorascharff Aug 12, 2026
e7796da
fix: initialize theme before paint
aurorascharff Aug 12, 2026
7fb4c81
fix: preserve browser history across Learn routes
aurorascharff Aug 12, 2026
ba6bca4
fix: route fragment links through Next Link
aurorascharff Aug 12, 2026
b4ca46a
fix: route fragment links through Next Link
aurorascharff Aug 12, 2026
9268da5
fix: restore Learn anchors on history navigation
aurorascharff Aug 12, 2026
5cc0005
fix: preserve docs layout while content loads
aurorascharff Aug 12, 2026
0557aba
Handle MDX better and use turbopack
aurorascharff Aug 13, 2026
228feeb
fix: restore inline code font size
aurorascharff Aug 13, 2026
008c465
use proper components
aurorascharff Aug 13, 2026
0546673
fix preview fonts and dev-only routes
aurorascharff Aug 13, 2026
9f720f5
Upgrade eslint
aurorascharff Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .eslintignore

This file was deleted.

38 changes: 0 additions & 38 deletions .eslintrc

This file was deleted.

35 changes: 15 additions & 20 deletions .github/workflows/analyze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,18 @@ jobs:
key: ${{ runner.os }}-build-${{ env.cache-name }}

- name: Build next.js app
# change this if your site requires a custom build command
run: ./node_modules/.bin/next build

# Here's the first place where next-bundle-analysis' own script is used
# This step pulls the raw bundle stats for the current bundle
# This project pins the webpack pipeline (see next.config.js): the custom
# webpack config and Sandpack's raw-loader imports aren't Turbopack-ready,
# and Next 16's `next build` defaults to Turbopack. Match the `build`/`analyze`
# npm scripts by forcing `--webpack`.
run: ./node_modules/.bin/next build --webpack

# Measure the current build's bundle sizes (App Router-aware).
# See scripts/analyzeBundle.mjs — reads build-manifest.json + .next/static
# and sums gzipped sizes, since nextjs-bundle-analysis only understands the
# Pages Router and reports 0 B for the App Router.
- name: Analyze bundle
run: npx -p nextjs-bundle-analysis@0.5.0 report
run: node scripts/analyzeBundle.mjs report

- name: Upload bundle
uses: actions/upload-artifact@v4
Expand All @@ -65,22 +70,12 @@ jobs:
name: bundle_analysis.json
path: .next/analyze/base/bundle

# And here's the second place - this runs after we have both the current and
# base branch bundle stats, and will compare them to determine what changed.
# There are two configurable arguments that come from package.json:
#
# - budget: optional, set a budget (bytes) against which size changes are measured
# it's set to 350kb here by default, as informed by the following piece:
# https://infrequently.org/2021/03/the-performance-inequality-gap/
#
# - red-status-percentage: sets the percent size increase where you get a red
# status indicator, defaults to 20%
#
# Either of these arguments can be changed or removed by editing the `nextBundleAnalysis`
# entry in your package.json file.
# Compare the current build against the base-branch stats downloaded above
# and write the Markdown comment body. Degrades gracefully when the base
# branch has no stats yet (or still has the old format).
- name: Compare with base branch bundle
if: success() && github.event.number
run: ls -laR .next/analyze/base && npx -p nextjs-bundle-analysis compare
run: node scripts/analyzeBundle.mjs compare

- name: Upload analysis comment
uses: actions/upload-artifact@v4
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,13 @@ public/rss.xml
# claude local settings
.claude/*.local.*
.claude/react/
.claude/launch.json

# worktrees
.worktrees/

# Generated OG images (scripts/generateOgImages.mjs)
public/images/og/

# Generated Sandpack RSC runtime sources (scripts/buildRscWorker.mjs)
public/sandpack-rsc/
13 changes: 12 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ src/
│ ├── reference/ # API reference docs
│ ├── blog/ # Blog posts
│ └── community/ # Community pages
├── app/ # Next.js App Router routes
├── components/ # React components
├── pages/ # Next.js pages
├── lib/ # Server-only helpers (MDX loading, metadata)
├── hooks/ # Custom React hooks
├── utils/ # Utility functions
└── styles/ # CSS/Tailwind styles
Expand All @@ -50,3 +51,13 @@ For Sandpack code examples, invoke `/docs-sandpack`.
See `.claude/docs/react-docs-patterns.md` for comprehensive style guidelines.

Prettier is used for formatting (config in `.prettierrc`).

<!-- BEGIN:nextjs-agent-rules -->

# This is NOT the Next.js you know

This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.

This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.

<!-- END:nextjs-agent-rules -->
56 changes: 23 additions & 33 deletions eslint-local-rules/__tests__/lint-markdown-code-blocks.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,32 +10,30 @@ const fs = require('fs');
const path = require('path');
const {ESLint} = require('eslint');
const plugin = require('..');
const parser = require('../parser');

const FIXTURES_DIR = path.join(
__dirname,
'fixtures',
'src',
'content'
);
const PARSER_PATH = path.join(__dirname, '..', 'parser.js');

const FIXTURES_DIR = path.join(__dirname, 'fixtures', 'src', 'content');
function createESLint({fix = false} = {}) {
return new ESLint({
useEslintrc: false,
overrideConfigFile: true,
fix,
plugins: {
'local-rules': plugin,
},
overrideConfig: {
parser: PARSER_PATH,
plugins: ['local-rules'],
rules: {
'local-rules/lint-markdown-code-blocks': 'error',
},
parserOptions: {
sourceType: 'module',
overrideConfig: [
{
files: ['**/*.md'],
languageOptions: {
parser,
parserOptions: {
sourceType: 'module',
},
},
plugins: {
'local-rules': plugin,
},
rules: {
'local-rules/lint-markdown-code-blocks': 'error',
},
},
},
],
});
}

Expand All @@ -53,11 +51,7 @@ async function lintFixture(name, {fix = false} = {}) {

async function run() {
const basicResult = await lintFixture('basic-error.md');
assert.strictEqual(
basicResult.messages.length,
1,
'expected one diagnostic'
);
assert.strictEqual(basicResult.messages.length, 1, 'expected one diagnostic');
assert(
basicResult.messages[0].message.includes('Calling setState during render'),
'expected message to mention setState during render'
Expand Down Expand Up @@ -91,9 +85,7 @@ async function run() {
fix: true,
});
assert(
duplicateFixed.output.includes(
"{expectedErrors: {'react-compiler': [4]}}"
),
duplicateFixed.output.includes("{expectedErrors: {'react-compiler': [4]}}"),
'expected duplicates to be rewritten to a single canonical block'
);
assert(
Expand All @@ -118,14 +110,12 @@ async function run() {
fix: true,
});
assert(
malformedFixed.output.includes(
"{expectedErrors: {'react-compiler': [4]}}"
),
malformedFixed.output.includes("{expectedErrors: {'react-compiler': [4]}}"),
'expected malformed metadata to be replaced with canonical form'
);
}

run().catch(error => {
run().catch((error) => {
console.error(error);
process.exitCode = 1;
});
2 changes: 1 addition & 1 deletion eslint-local-rules/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"test": "node __tests__/lint-markdown-code-blocks.test.js"
},
"devDependencies": {
"eslint-mdx": "^2"
"eslint-mdx": "^3.8.1"
}
}
Loading
Loading