Skip to content

Footer update#47840

Merged
CGastrell merged 27 commits intotrunkfrom
update/footer
Apr 1, 2026
Merged

Footer update#47840
CGastrell merged 27 commits intotrunkfrom
update/footer

Conversation

@simison
Copy link
Copy Markdown
Member

@simison simison commented Mar 30, 2026

Part of JETPACK-1391
Resolves JETPACK-1503

Design internal ref p1HpG7-xRc-p2

Proposed changes

  • Update Footer visually across most pages
    • Boost still uses custom component; handled in a follow-up
    • Akismet, CRM, Stats, Blaze and WP.com Calypso pages such as Subscribers and Monetize are still separately handled as well.
  • Update footer contents to be: Products & Help
    • Note: My Jetpack & Settings add a few dev-only links.
    • Settings had "Modules" and "Debug" links, which are now removed from footer but still available via "Help":
      Screenshot 2026-03-30 at 16 58 28
  • Removes About, TOS, and Privacy links and related props (useInternalLinks, onAboutClick, onPrivacyClick, onTermsClick) and their usage around Jetpack.
  • Use new components from @wordpress/ui and design tokens, which we bundle, so everything is backwards compatible with older WP versions.
  • Does not show Products & Help links at WP.com sites since those pages are not yet available at WP.com.

Before

Newsletter

image

Social

image

Settings

image

My Jetpack

image

Mobile

image

After

Newsletter

image

Social

image

Settings

image

My Jetpack

image

Mobile

image

Focus rings

image image

Other information

  • Generate changelog entries for this PR (using AI).

Related product discussion/links

Does this pull request change what data or activity we track or use?

Testing instructions

  • Click around different Jetpack pages and check the footer
  • Test different media widths
  • Test keyboard navigation

@simison simison added [Status] Needs Review This PR is ready for review. [Plugin] Jetpack Issues about the Jetpack plugin. https://wordpress.org/plugins/jetpack/ My Jetpack labels Mar 30, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 30, 2026

Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.

  • To test on WoA, go to the Plugins menu on a WoA dev site. Click on the "Upload" button and follow the upgrade flow to be able to upload, install, and activate the Jetpack Beta plugin. Once the plugin is active, go to Jetpack > Jetpack Beta, select your plugin (Jetpack or WordPress.com Site Helper), and enable the update/footer branch.
  • To test on Simple, run the following command on your sandbox:
bin/jetpack-downloader test jetpack update/footer
bin/jetpack-downloader test jetpack-mu-wpcom-plugin update/footer

Interested in more tips and information?

  • In your local development environment, use the jetpack rsync command to sync your changes to a WoA dev blog.
  • Read more about our development workflow here: PCYsg-eg0-p2
  • Figure out when your changes will be shipped to customers here: PCYsg-eg5-p2

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 30, 2026

Thank you for your PR!

When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:

  • ✅ Include a description of your PR changes.
  • 🔴 Add a "[Status]" label (In Progress, Needs Review, ...).
  • ✅ Add testing instructions.
  • ✅ Specify whether this PR includes any changes to data or privacy.
  • ✅ Add changelog entries to affected projects

This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation 🤖


Follow this PR Review Process:

  1. Ensure all required checks appearing at the bottom of this PR are passing.
  2. Make sure to test your changes on all platforms that it applies to. You're responsible for the quality of the code you ship.
  3. You can use GitHub's Reviewers functionality to request a review.
  4. When it's reviewed and merged, you will be pinged in Slack to deploy the changes to WordPress.com simple once the build is done.

If you have questions about anything, reach out in #jetpack-developers for guidance!


Jetpack plugin:

No scheduled milestone found for this plugin.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.


Boost plugin:

No scheduled milestone found for this plugin.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.


Search plugin:

No scheduled milestone found for this plugin.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.


Starter Plugin plugin:

No scheduled milestone found for this plugin.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.


Protect plugin:

No scheduled milestone found for this plugin.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.


Classic Theme helper plugin plugin:

No scheduled milestone found for this plugin.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.

@github-actions github-actions Bot added [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. and removed [Status] Needs Review This PR is ready for review. labels Mar 30, 2026
@jp-launch-control
Copy link
Copy Markdown

jp-launch-control Bot commented Mar 30, 2026

Code Coverage Summary

Coverage changed in 9 files. Only the first 5 are listed here.

File Coverage Δ% Δ Uncovered
projects/js-packages/components/components/layout/use-breakpoint-match/index.ts 13/23 (56.52%) -43.48% 10 💔
projects/js-packages/components/tools/get-site-admin-url/index.ts 0/1 (0.00%) -100.00% 1 ❤️‍🩹
projects/js-packages/components/components/jetpack-footer/index.tsx 9/9 (100.00%) 0.00% 0 💚
projects/packages/publicize/_inc/components/admin-page/index.tsx 19/19 (100.00%) 0.00% 0 💚
projects/js-packages/components/components/admin-page/index.tsx 1/14 (7.14%) 0.48% -1 💚

Full summary · PHP report · JS report

If appropriate, add one of these labels to override the failing coverage check: Covered by non-unit tests Use to ignore the Code coverage requirement check when E2Es or other non-unit tests cover the code Coverage tests to be added later Use to ignore the Code coverage requirement check when tests will be added in a follow-up PR I don't care about code coverage for this PR Use this label to ignore the check for insufficient code coveage.

@keoshi
Copy link
Copy Markdown
Contributor

keoshi commented Mar 30, 2026

It looks oh so much better now! Thank you for this, @simison.

I noticed the devs links in Settings and My Jetpack. Any change we could keep the footer exactly the same for all by moving those links elsewhere? The Useful links in My Jetpack → Help seems like a good place.

image

@CGastrell
Copy link
Copy Markdown
Contributor

Nice cleanup! The consolidation to a unified footer with @wordpress/ui components looks solid. A couple things I noticed:

Snapshot looks stale

The snapshot at jetpack-footer/test/__snapshots__/component.tsx.snap still references jp-dashboard-footer__jp-item, but the component now renders jetpack-footer__logo (via Stack). This will likely fail the snapshot test in CI — needs a --updateSnapshot run.

Commented-out focus styles in style.scss

The :focus / :focus-visible block is wrapped in /* ... */ rather than removed. If @wordpress/ui Link handles focus rings (which the screenshots suggest it does), this dead code should be deleted. If it's still needed, it should be uncommented.

Dead siteAdminUrl prop in types

JetpackFooterProps still declares siteAdminUrl?: string but the component no longer uses it (replaced by getAdminUrl()). Should be removed.

Stale docstring in types

types.ts still says:

additional className of the wrapper, `jp-dashboard-footer` always included.

But the component now uses jetpack-footer as the class name.

Minor: tracking coverage

The Jetpack Settings footer previously tracked clicks on About, Privacy, Terms, Modules, Debug, and Version links via analytics.tracks.recordJetpackClick. The new Products/Help links don't have tracking. Intentional? Just flagging in case it matters for analytics continuity.

@simison
Copy link
Copy Markdown
Member Author

simison commented Mar 30, 2026

I noticed the devs links in Settings and My Jetpack. Any change we could keep the footer exactly the same for all by moving those links elsewhere? The Useful links in My Jetpack → Help seems like a good place.

Yeah, I think there can be better place but in a separate PR to keep this one focused.

I left only links at Settings which show up only when running JP locally. The customer facing extra links I'm removing already in this PR (debug and modules) as they're indeed already at that Help page.

@github-actions github-actions Bot added [Feature] Contact Form [Package] Forms [Package] Newsletter [Package] Subscribers Dashboard [Plugin] Boost A feature to speed up the site and improve performance. [Plugin] CRM Issues about the Jetpack CRM plugin [Plugin] Protect A plugin with features to protect a site: brute force protection, security scanning, and a WAF. labels Mar 31, 2026
@anomiex
Copy link
Copy Markdown
Contributor

anomiex commented Mar 31, 2026

Following up from p1774956551856089-slack-C05Q5HSS013

  • 11d0801 should fix the i18n stuff.
  • Storybook is because vite (at least as currently configured) doesn't recognize that pkg: prefix in @include meta.load-css("pkg:@wordpress/theme/design-tokens.css");, but removing it breaks Forms because wp-build doesn't recognize not having it.

Also, failing JS tests look to be because you removed footer content they were looking for in the PR.

@anomiex
Copy link
Copy Markdown
Contributor

anomiex commented Mar 31, 2026

Search E2E failure also looks like it'll need fixing. It's looking for .jp-dashboard-footer to be visible, but that class is removed in this PR.

The footer component no longer accepts a `moduleName` prop — it always
renders "Jetpack". Update tests that were asserting the old per-plugin
module names (`Jetpack Social <version>`, `Jetpack Starter Plugin`).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@CGastrell
Copy link
Copy Markdown
Contributor

Following up from p1774956551856089-slack-C05Q5HSS013

  • 11d0801 should fix the i18n stuff.

  • Storybook is because vite (at least as currently configured) doesn't recognize that pkg: prefix in @include meta.load-css("pkg:@wordpress/theme/design-tokens.css");, but removing it breaks Forms because wp-build doesn't recognize not having it.

Also, failing JS tests look to be because you removed footer content they were looking for in the PR.

Just to get this right, I asked Claude to dig a bit on what it would take to port pkg prefix usage to "everything":

The current state

  • Only 3 files in the monorepo use pkg: — the new footer style.scss introduced in this PR, and the forms dashboard _design-tokens.scss
  • ~97 files import @wordpress/* in SCSS without the pkg: prefix (using @use or @import with loadPaths/includePaths pointing at node_modules)
  • Only 1 webpack config has NodePackageImporter set up: forms/tools/webpack.config.dashboard.js
  • Storybook's Vite config has no NodePackageImporter — it only has a custom $css/ alias importer

The conflict

  • Webpack (with NodePackageImporter): resolves pkg:@wordpress/theme/... fine
  • Storybook/Vite: doesn't recognize pkg:, so the footer SCSS fails in Storybook
  • Without pkg:: the plain @wordpress/theme/... path works in Storybook (via loadPaths: ['node_modules']) but breaks in wp-build (esbuild) which expects the pkg: convention

So, the suggested solution would be to:

  1. Add NodePackageImporter to the shared webpack-config CssRule() (so all 27 packages get it, not just forms)
  2. Add NodePackageImporter to Storybook's Vite SCSS config
  3. Then all SCSS files across the monorepo could use pkg: consistently, and both build tools would understand it

This would be a broader infrastructure fix — right now the footer SCSS works in webpack but breaks Storybook, and removing pkg: would fix Storybook but break wp-build. The proper fix would be making both tools support pkg:? Meaning, in the meantime we wouldn't be able to ship the footer changes (this PR)?

@CGastrell
Copy link
Copy Markdown
Contributor

CGastrell commented Mar 31, 2026

Search E2E failure also looks like it'll need fixing. It's looking for .jp-dashboard-footer to be visible, but that class is removed in this PR.

Is there a way to create a preemptive e2e fix? Or once this is out we should mute it while we work on it? I usually run tests against backend, but whenever I try to sandbox to run against a branch I get into a credentials/certificates nightmare.

EDIT: I was thinking on wp-calypso e2e, now I'm seeing these are monorepo tests, sorry.

- Search e2e test: update locator from `.jp-dashboard-footer` to `.jetpack-footer`
- My Jetpack: remove dead `.jp-dashboard-footer__jetpack-symbol` style override
- Backup: remove dead `.jp-dashboard-footer` padding override

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added [Plugin] Search A plugin to add an instant search modal to your site to help visitors find content faster. E2E Tests labels Mar 31, 2026
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@anomiex
Copy link
Copy Markdown
Contributor

anomiex commented Mar 31, 2026

Add NodePackageImporter to the shared webpack-config CssRule() (so all 27 packages get it, not just forms)

Looks like sass-loader already handles it, since v14.1.1.

Since none of the webpack stuff was blowing up, this doesn't surprise me. 🙂

Add NodePackageImporter to Storybook's Vite SCSS config

This seems to be the only thing actually needed for this PR, but leaves the tech debt of "all the things don't use pkg: except the few Forms's use of wp-build ran into".

now I'm seeing these are monorepo tests

Yes, that. 😀

CGastrell and others added 2 commits April 1, 2026 10:59
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@CGastrell CGastrell merged commit d742dd0 into trunk Apr 1, 2026
90 of 91 checks passed
@CGastrell CGastrell deleted the update/footer branch April 1, 2026 14:36
@github-actions github-actions Bot removed the [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. label Apr 1, 2026
@simison simison mentioned this pull request Apr 3, 2026
dognose24 added a commit to Automattic/wp-calypso that referenced this pull request Apr 10, 2026
…Stats

Add menu item support to the shared JetpackFooter component so it can
render navigation links between the Jetpack logo and the Automattic
byline, matching the Jetpack monorepo footer (Automattic/jetpack#47840).

In StatsMain, pass Products and Help links when running inside WP Admin
(Odyssey Stats) so the footer is consistent with other Jetpack pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
dognose24 added a commit to Automattic/wp-calypso that referenced this pull request Apr 13, 2026
* Stats: Replace JetpackColophon with centralized JetpackFooter in StatsMain

Move footer rendering from 10 individual stats pages into the shared
StatsMain component, replacing the old "Powered by Jetpack" colophon
with the unified JetpackFooter (Jetpack logo + Automattic byline).

This makes the footer consistent between Calypso and Odyssey Stats,
so the odyssey-stats webpack NormalModuleReplacementPlugin entry for
jetpack-colophon is no longer needed and is removed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* JetpackFooter: Add menu prop and show Products/Help links in Odyssey Stats

Add menu item support to the shared JetpackFooter component so it can
render navigation links between the Jetpack logo and the Automattic
byline, matching the Jetpack monorepo footer (Automattic/jetpack#47840).

In StatsMain, pass Products and Help links when running inside WP Admin
(Odyssey Stats) so the footer is consistent with other Jetpack pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Stats: Add margin-bottom to stats-feedback-container above JetpackFooter

Prevents the feedback widget from visually colliding with the new
JetpackFooter by adding standard vertical spacing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Admin Page React-powered dashboard under the Jetpack menu Docs E2E Tests [Feature] Contact Form [Feature] Publicize Now Jetpack Social, auto-sharing [JS Package] Components [JS Package] Storybook [JS Package] Webpack Config My Jetpack [Package] Backup [Package] Forms [Package] My Jetpack [Package] Newsletter [Package] Publicize [Package] Search Contains core Search functionality for Jetpack and Search plugins [Package] Subscribers Dashboard [Package] VideoPress [Plugin] Boost A feature to speed up the site and improve performance. [Plugin] Classic Theme Helper Plugin [Plugin] CRM Issues about the Jetpack CRM plugin [Plugin] Jetpack Issues about the Jetpack plugin. https://wordpress.org/plugins/jetpack/ [Plugin] Protect A plugin with features to protect a site: brute force protection, security scanning, and a WAF. [Plugin] Search A plugin to add an instant search modal to your site to help visitors find content faster. [Plugin] Starter Plugin RNA [Tests] Includes Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants