Redesign site list and Add Site flow with richer sync metadata#3161
Redesign site list and Add Site flow with richer sync metadata#3161katinthehatsite merged 38 commits intotrunkfrom
Conversation
Reconcile only flagged sites deleted when they appeared in the fetched page, so any connected site beyond page 1 of /me/sites was getting marked deleted. Now we verify each missing connected site with an individual GET and only mark it deleted on a confirmed 404. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the three-step stepper with a single entry screen offering Build/Connect/Import paths, a dedicated blueprint picker, and a Connect screen that reuses the Sync site list. The modal chrome is now an X button and a floating action row — no full-width header/footer bars — so the Screen's height is constant across steps and content centers without shifting when navigating between paths. Backup imports preflight the dropped file before advancing, so invalid archives are caught on the entry screen. SitesListContent and related helpers from the Sync modal are extracted so both surfaces render the same grouped site list. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Trunk removed the BlueprintValidationWarning type and related hook state as unused. Strip matching references from the redesigned add-site flow (upload-blueprint-button, index.tsx) so file uploads no longer try to forward warnings. Also tighten the pagination-reconciliation code: the /me/sites response schema now returns each site as `unknown`, so parse each entry with the site schema before extracting IDs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
katinthehatsite
left a comment
There was a problem hiding this comment.
One other comment is that I found this Preview link slightly strange because I expecred that once I am done with the preview and made my modifications, I could somehow port them into Studio. Instead, I was somewhat in the dead end because it looked like something I could edit but was meant to be serving as preview.
Also, the description of the WordPress.com option was sort of confusing. Once I created a site, it looked like a regular Studio site:
This should be now addressed ✅ |
I removed this functionality for now and will move it to the Linear issue to make sure we think through this flow. We could potentially rename this as something like "Experiment" or "Try out" so that the user does not have an expectation that they will be able to activate it in Studio from Playground and that it is a circular process. |
I no longer saw this so I left this as is for now. |
|
@Automattic/yolo I would appreciate the review. For now, I gated these changes behind |
📊 Performance Test ResultsComparing 52bd1d4 vs trunk app-size
site-editor
site-startup
Results are median values from multiple test runs. Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff) |
sejas
left a comment
There was a problem hiding this comment.
Shaun, Kat, Thanks for creating the PR. I like the new designs ✨.
A few things I found:
- We remove the whitelist of domains in
apps/studio/index.htmlandapps/studio/src/index.ts - The PR description says:
Backup imports preflight the dropped file (preflightBackup IPC) before advancing — invalid archives are caught on the entry screen., but that seems not implemented. I suggest updating the description and maybe creating a Linear issue for that. - The Studio window started at ~900x600 which cut the import from a backup button. Why not showing the three buttons in the same row?
- The scroll bar is not at the border and it conflicts with the close X.
- The Add site modal cannot be dragged by clicking in the background or the header. It shows an animation instead(Not sure if that is an issue on trunk).
- When clicking Build a new site, an error appears in the console.
- The Blueprint descriptions at the bottom are a bit blurred.
- The left sidebar hides if the window width is smaller than 1100, not sure if that's intentional.
left-sidebar.mp4
The PR is quite large, so I might have missed something.
Happy to have a second pass when E2E pass.
There is already an issue for it in https://linear.app/a8c/issue/STU-1644/blueprints-gallery-library-consider-preflight-validation-for-import 😄 I removed the logic from this PR as it was getting too complex |
…into enrich-site-list-data
I see it as well but I think this is the design question rather than the implementation question. I will move it to the new issue and we can discuss with Shaun there. |
I rebased trunk and I don't see this overlap anymore in this PR:
Are you still seeing it @sejas ? |
It can be dragged by the header: Screen.Recording.2026-04-28.at.12.22.40.PM.movWhich works the same as on trunk: Screen.Recording.2026-04-28.at.12.23.23.PM.movI think we can leave it as is with this PR as it replicates the existing behaviour. |
I was testing this but not seeing this specific error. I am adding below the video of testing, am I taking different steps from you? Screen.Recording.2026-04-28.at.12.26.16.PM.mov |
I also retested this and can not see it on my end: Screen.Recording.2026-04-28.at.1.10.49.PM.movWould you be able to check this with the most recent changes? |
I dropped the gradient height for bluriness. I think it should be better now. Let me know if it still seems too blurry. |
katinthehatsite
left a comment
There was a problem hiding this comment.
I am approving the changes, they are behind the feature flag so I think we are good to go.



This PR redesigns the flow for adding and connecting a site in WordPress Studio.
Existing Design
The existing flow for adding a site is needlessly complicated, with 4 different branches—and some useless steps around blueprint details and importing a site.
Blueprints are jargon, and never very well explained, and include a mostly empty step around the blueprint details.
Pulling (more jargon) a site uses a boring list, forcing users to read titles and urls to discern which site they want. It also shows options mixed, making it hard to understand which options are viable. Importing goes to a needless new screen.
Once a site is created, you can choose to "connect" it to a site (confusing language, with pulling in the other flow) which uses a narrow modal and the same boring list.
Changes
I gated these changes behind
enableBlueprintsGalleryflag so without the flag, the trunk should look the same.--
New Design
This PR redesigns the flow for adding a new site, reducing branches down to three: Build, Connect, or Import.
Choosing to build a new site shows the option for an empty site, along with the blueprints.
Connecting a site shows a much larger, visual grid of sites split into groups depending on viability with those that need hosting features or a plan shows with more helpful messaging.
How AI was used in this PR
Used Claude Code throughout as a pair for the larger refactors — the Add Site redesign, the pagination-safe reconcile logic, and the layout or centering plumbing. Reviewed all diffs manually; the branch was rebased on trunk and reconciled by hand.
Detailed Changes
Site list (Sync tab + sync metadata)
appdata-v1.json).Add Site flow
preflightBackupIPC) before advancing — invalid archives are caught on the entry screen.img-srcto allow site icons from any HTTPS domain.Testing Instructions
Pre-merge Checklist
🤖 Generated with Claude Code