chore(deps): take next 16, eslint-config-next 16 and the tailwind plugin - #9
Merged
Conversation
Four of Dependabot's eight open pull requests, verified together against the current tree rather than merged one at a time. Their own CI results were not all trustworthy: three of them are still based on a commit from before the monorepo was split, so a green check there says nothing about the repo as it stands. **next 16 and eslint-config-next 16.** These land together. Next 16 also rewrote the app tsconfigs on first build, which is its own migration: `jsx` moves to `react-jsx` and the dev type directory joins `include`. The eslint config is now composed directly instead of through FlatCompat. eslint-config-next 16 exports flat config arrays from its subpaths, and the old wrapper does not merely become unnecessary, it breaks: `@eslint/eslintrc` throws "Converting circular structure to JSON" when handed the v16 config. That package is now unused and removed. **prettier-plugin-tailwindcss 0.8.1** is pure class-order churn, no behaviour change: `uppercase` sorts after `tracking-[]`, `top-4` before `left-4`. Fourteen files reformatted. **GitHub Actions** move to checkout v7, setup-node v7 and action-setup v6, applied here rather than by merging three pull requests built on a twenty-commit-old base. Also fixes a bug of ours that next 16 surfaced. The documentation loader found its content directory by walking up looking for a marker, which the bundler cannot analyse, so it concluded any file in the project might be read and traced the entire tree, source included, into the server output. A statically scoped path traces `content/` and nothing else. The build now emits no warnings at all.
This was referenced Aug 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves Dependabot #1 through #7, verified together against the current tree.
Why not just merge them
Their CI results were not all trustworthy. #1, #2 and #3 are still based on a commit from before the monorepo was split into two apps and a UI package, so a green check there says nothing about the repo as it stands.
The eslint pair was coupled
#8 failed with
Failed to patch ESLint because the calling module was not recognized: eslint-config-next 15 patches ESLint internals that v10 moved.#7 failed separately with
Converting circular structure to JSONfrom@eslint/eslintrc, because our config wrapped the legacy config inFlatCompat.eslint-config-next 16 exports flat config arrays from its subpaths, so the wrapper is gone:
@eslint/eslintrcis now unused and removed.#8 is blocked upstream, not by us
With the config fixed, eslint 10 still fails, one layer deeper:
eslint-plugin-react@7.37.5, pulled in transitively by eslint-config-next, callscontext.getFilename(), which ESLint 10 removed. Nothing on our side fixes that. Confirmed by testing: eslint 9 + eslint-config-next 16 lints clean. #8 should stay open until eslint-plugin-react ships ESLint 10 support.#5 rejected on purpose
CI and Railway both run Node 20.20.2, and
enginessays>=20.11.0.@types/node@26is six majors ahead of the runtime: it would lettscaccept APIs that do not exist in production. Types belong near the runtime.The real fix is a separate decision: pin the types to the runtime major, or move the runtime to a newer LTS. Worth doing, but not inside a dependency bump.
A bug of ours that next 16 found
The documentation loader located its content directory by walking up looking for a marker. The bundler cannot analyse that, so it concluded any file in the project might be read:
That would have shipped the entire source tree as server code. A statically scoped path traces
content/and nothing else. The build now emits zero warnings.Verification
format:check,lint,typecheck,test(88) andbuildall pass locally on both apps and both packages, from a clean.next.Note:
next buildwhile anext devserver is running on the same app clobbers its.nextand produces module-not-found errors that look like a real failure. That is what the first build attempt here was.