Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
1527f48
chore: version packages
github-actions[bot] Apr 8, 2026
7172aed
Version Packages (#949)
nicholasio Apr 8, 2026
f67617f
docs: Fueled rebrand of the docs site (headstartwp.fueled.com)
jakemgold Jul 26, 2026
b0e188f
fix: node 24, remove linaria, remove storybook, minor package updates
pdavies88 Sep 5, 2026
5ca9089
fix: update to wp-vite-plugins
pdavies88 Sep 5, 2026
033ea24
feat!: upgrade to Next.js 16 and replace webpack with Turbopack
pdavies88 Sep 5, 2026
23044a7
chore: regenerate package-lock after removing @next/bundle-analyzer
pdavies88 Sep 18, 2026
b34903d
ci: require Node 24 and stop failing bundle analysis without a baseline
pdavies88 Sep 18, 2026
d8c01fa
ci: pin Node 24 for PHPUnit and drop the app-router bundle analysis
pdavies88 Sep 18, 2026
f12d5d8
ci: gate the bundle comparison on the baseline files, not the downloa…
pdavies88 Sep 18, 2026
034cda4
refactor!: remove wp/10up-theme and couple WordPress deps to their co…
pdavies88 Sep 18, 2026
1591440
ci: consolidate matrices, fix npm devEngines failures; regenerate loc…
pdavies88 Sep 20, 2026
08c7176
fix: update wp version to 7.1.1
pdavies88 Sep 20, 2026
be0d3ef
chore: revert formatter drift, add changesets, harden version script
pdavies88 Sep 20, 2026
737221f
fix: update with dep change base branch
pdavies88 Sep 21, 2026
31b2dd6
ci: re-drop app-router bundle analysis; fix pages-router baseline path
pdavies88 Sep 23, 2026
4dd9361
fix: adjust to 16.3.6
pdavies88 Sep 23, 2026
4005361
chore(release): require Next 16 / React 18.2 peers for 2.x
pdavies88 Sep 23, 2026
1c5d2be
chore(release): prepare 1.x maintenance line
pdavies88 Sep 23, 2026
e0b8ffd
Merge branch 'chore/dep-upgrade-2026-09' into chore/nextjs-16-upgrade
pdavies88 Sep 23, 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
12 changes: 7 additions & 5 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,20 @@
"access": "restricted",
"baseBranch": "trunk",
"updateInternalDependencies": "patch",
"privatePackages": { "version": true, "tag": false },
"privatePackages": {
"version": true,
"tag": false
},
"ignore": [
"@10up/wp-nextjs",
"@10up/wp-nextjs-app",
"@10up/wp-nextjs-app",
"@10up/wp-nextjs-epio",
"@10up/wp-polylang-nextjs-app",
"@10up/wp-multisite-nextjs-app",
"@10up/wp-multisite-nextjs",
"@10up/wp-multisite-i18n-nextjs",
"@headstartwp/vite-react-test",
"@10up/wp-nextjs-universal-blocks",
"@headstartwp/component-library",
"tenup-theme"
"@headstartwp/component-library"
]
}
}
15 changes: 15 additions & 0 deletions .changeset/core-primitive-param-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
'@headstartwp/core': minor
---

Fix boxed object types in `PostParams`.

`SinglePostFetchStrategy`'s `id` and `revision` params were typed as `Number`
and `Boolean` (the boxed object types) rather than `number` and `boolean`.
Passing primitives already worked, so this is a type-level fix for nearly all
consumers — but anyone who explicitly annotated a variable as `Number` will need
to switch to `number`.

Note that `params.id` of `0` is now correctly falsy in the strategy's internal
truthiness guards; `0` was never a valid post ID, so this should not change
runtime behavior in practice.
7 changes: 7 additions & 0 deletions .changeset/deprecate-linaria-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@headstartwp/next': minor
---

Deprecate the built-in linaria/wyw-in-js webpack integration in `withHeadstartWPConfig`.

The loader still runs when `@linaria/webpack-loader` or `@wyw-in-js/webpack-loader` is installed, but it now logs a deprecation warning and will be removed in the next major version. HeadstartWP no longer prescribes a styling solution — the example projects use plain CSS, and any styling approach (CSS Modules, Tailwind, CSS-in-JS) works. If you want to keep using linaria, configure the loader yourself via `nextConfig.webpack`.
5 changes: 0 additions & 5 deletions .changeset/fix-cross-domain-redirect-skip.md

This file was deleted.

6 changes: 0 additions & 6 deletions .changeset/fix-gutenberg-dollar-sign.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/fix-undefined-context-key.md

This file was deleted.

33 changes: 33 additions & 0 deletions .changeset/nextjs-16-turbopack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
'@headstartwp/next': major
'@10up/next-redis-cache-provider': major
'@headstartwp/block-primitives': major
---

Upgrade to Next.js 16 and drop webpack in favour of Turbopack.

`@headstartwp/next` now requires Next.js >= 16 and React >= 18.2 (Next.js 16's own floor), and
`@headstartwp/block-primitives` requires React >= 18.2. React 18 remains supported, so the Pages
Router continues to work.

The 1.x line stays available for projects that can't move yet: `@headstartwp/next@1.x` supports
Next.js 15 and receives bug and security fixes, published under the `v1` npm dist-tag.

**Breaking changes**

- The webpack `ModifySourcePlugin` has been removed. The headstartwp config is now injected
through a Turbopack loader rule (`turbopack.rules`) emitted by `withHeadstartWPConfig`,
because Next.js 16 builds with Turbopack by default and fails when a webpack config is
present. Building with `--webpack` is no longer supported.
- The built-in linaria / wyw-in-js integration has been removed along with the webpack config.
- `withHeadstartWPConfig` always emits `images.remotePatterns`; the Next.js < 14
`images.domains` fallback is gone.
- The `middleware` convention is deprecated in Next.js 16 — rename `middleware.ts` to
`proxy.ts` and rename the exported `middleware` function to `proxy`. Note that `proxy` always
runs on the Node.js runtime.
- The `eslint` option was removed from the Next.js config; `next build` no longer lints.

**Fixes**

- The injected config bootstrap is now inserted after the directive prologue, so a
`'use client'` / `'use server'` directive at the top of a layout or route is preserved.
14 changes: 14 additions & 0 deletions .changeset/wordpress-7-1-1-and-php-82.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
'@headstartwp/headstartwp': minor
---

Raise the PHP floor to 8.2 and pin the test environment to WordPress 7.1.1.

`composer.json` now requires `php >=8.2` (was `>=8`), and the plugin header
declares `Requires PHP: 8.2` so WordPress blocks activation on older PHP rather
than fataling. PHPUnit runs against PHP 8.2 and 8.4.

`.wp-env.json` pins `core` to `WordPress/WordPress#7.1.1`. It previously
tracked whatever the latest WordPress release happened to be, which meant core
changes could break CI on unrelated PRs. **After pulling this branch, run
`wp-env destroy` once** so your local container picks up the pinned version.
16 changes: 16 additions & 0 deletions .changeset/wordpress-7-baseline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
'@headstartwp/block-primitives': major
---

Target the WordPress 7 package generation.

`@wordpress/*` peer dependencies move to the WP 7 line (`block-editor@^15.13.2`,
`data@^10.40.1`, `components@^32.2.1`, `blob@^4.40.1`). Consumers on the WP 6.5
generation will need to upgrade alongside this release.

The `@types/wordpress__block-editor` and `@types/wordpress__block-library`
dependencies are removed — the WP 7 packages ship their own types, and the
DefinitelyTyped packages pulled a conflicting older `@wordpress/components` into
the tree. `DropdownProps` is now derived from the public `Dropdown` component
rather than a deep `build-types/` import, which `@wordpress/components@32` no
longer exposes through its `exports` map.
5 changes: 0 additions & 5 deletions .eslintignore

This file was deleted.

40 changes: 0 additions & 40 deletions .eslintrc.js

This file was deleted.

42 changes: 21 additions & 21 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,21 @@ permissions:

on: [pull_request]

concurrency:
group: build-test-${{ github.ref }}
cancel-in-progress: true

jobs:
build-test:
name: build-test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
# This ensures only one combination runs at a time to avoid rate limiting
max-parallel: 1
# One leg failing should not cancel the other - we want both results.
fail-fast: false
matrix:
# Node 24 only: workspace packages declare engines.node >=24.0.0
# and the repo runs with engineStrict, so older majors cannot install.
os: [ubuntu-latest, windows-latest]
node-version: [18, 20, 22]
exclude:
- os: windows-latest
node-version: 18
- os: windows-latest
node-version: 20

steps:
- name: Configure Git line endings
Expand All @@ -28,25 +29,24 @@ jobs:
git config --global core.eol lf

- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Setup Node ${{ matrix.node-version }}
uses: actions/setup-node@v3
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
node-version: 24
cache: npm

- name: Ensure npm satisfies devEngines (>=11.6.0)
run: npm i -g npm@11

- name: Setup npm cache
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: npm install
run: npm ci

- name: Build Projects (Windows)
if: matrix.os == 'windows-latest'
run: npm run build:wpnextjs:app && npm run build:wpnextjs

- name: Build Projects
if: matrix.os != 'windows-latest'
run: npm run build
run: npm run build
2 changes: 1 addition & 1 deletion .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 20
node-version: 24
cache: npm
- name: Install dependencies
run: npm install
Expand Down
35 changes: 0 additions & 35 deletions .github/workflows/eslint.yml

This file was deleted.

34 changes: 34 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: lint

permissions:
contents: read

on: [pull_request]

concurrency:
group: lint-${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
name: lint
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm

- name: Ensure npm satisfies devEngines (>=11.6.0)
run: npm i -g npm@11

- name: Install dependencies
run: npm ci && npm run build:packages

- name: Run oxlint (vp lint)
run: npm run lint
Loading
Loading