Worth knowing; many are deliberate or cosmetic. No visible way in ×5 · Leftover redirect ×1 · One-way section ×4 · Possibly unreachable ×1 · Only in the menus ×4 · Many choices ×15 · Busy crossroads ×4 · Too many choices on the way ×2 · Hard to discover ×1 · inconsistent-label ×1 · No way to undo ×2 · mixed-controls ×1 · mixed-verbs ×3
LowNo visible way in
The /checkout/[storeId]/success page is only reached through a generated link.
- What users experience
- No button leads here; users arrive through an address the app builds, such as a link in an email.
- Why it matters
- Fine for hand-offs. If users should also find it in the product, they cannot.
- Why low
- Often deliberate.
AIDeliberatehigh confidence
This is the payment return page: Stripe sends the buyer here after checkout (checkout-form.tsx:80). Nothing should link to it directly.
Recommended fixIf it is meant to be browsable, give it a link where users need it.
Technical details
indirect-only · /checkout/[storeId]/success · warning · confidence medium
No CTA anywhere leads to /checkout/[storeId]/success. Its address is assembled in code — a handoff link or a URL held in state — so it works, but it has no door in the interface and no back edge to whatever opened it.
If /checkout/[storeId]/success is meant to be a destination people navigate to, give it a CTA. If it is a handoff target, confirm it offers a way back.
LowNo visible way in
The /collections/[category]/[subcategory] page is only reached through a generated link.
- What users experience
- No button leads here; users arrive through an address the app builds, such as a link in an email.
- Why it matters
- Fine for hand-offs. If users should also find it in the product, they cannot.
- Why low
- Often deliberate.
AIReal problemhigh confidence
Shoppers can't browse into a subcategory because the only intended link, the subcategory items in the main menu, points at the non-existent /categories path. Only the sitemap reaches this page.
Better fix: Fix src/config/site.ts:56 to /collections/${category}/${subcategory}. Also consider adding subcategory chips on /collections/[category].
Recommended fixIf it is meant to be browsable, give it a link where users need it.
Technical details
indirect-only · /collections/[category]/[subcategory] · warning · confidence medium
No CTA anywhere leads to /collections/[category]/[subcategory]. Its address is assembled in code — a handoff link or a URL held in state — so it works, but it has no door in the interface and no back edge to whatever opened it.
If /collections/[category]/[subcategory] is meant to be a destination people navigate to, give it a CTA. If it is a handoff target, confirm it offers a way back.
LowNo visible way in
The /dashboard/account page is only reached through a generated link.
- What users experience
- No button leads here; users arrive through an address the app builds, such as a link in an email.
- Why it matters
- Fine for hand-offs. If users should also find it in the product, they cannot.
- Why low
- Often deliberate.
AIUnsurelow confidence
This catch-all may be where the auth provider's profile component routes its sub-pages, which would make it deliberate. Or it may be an account page that signed-in users simply can't find.
Better fix: Check whether /dashboard/settings hosts the profile component with path routing. If not, add an "Account" item to the account menu (auth-dropdown.tsx) linking here.
Recommended fixIf it is meant to be browsable, give it a link where users need it.
Technical details
indirect-only · /dashboard/account/[[...rest]] · warning · confidence medium
No CTA anywhere leads to /dashboard/account/[[...rest]]. Its address is assembled in code — a handoff link or a URL held in state — so it works, but it has no door in the interface and no back edge to whatever opened it.
If /dashboard/account/[[...rest]] is meant to be a destination people navigate to, give it a CTA. If it is a handoff target, confirm it offers a way back.
LowNo visible way in
The /dashboard/purchases page is only reached through a generated link.
- What users experience
- No button leads here; users arrive through an address the app builds, such as a link in an email.
- Why it matters
- Fine for hand-offs. If users should also find it in the product, they cannot.
- Why low
- Often deliberate.
AIReal problemhigh confidence
Buyers have no way to find their order history. After paying, or when they come back later, nothing in the menu or on the success page leads to their purchases.
Better fix: Add a "Purchases" item to the account menu in auth-dropdown.tsx next to Billing and Settings. Add a "View your purchase" link on /checkout/[storeId]/success.
Recommended fixIf it is meant to be browsable, give it a link where users need it.
Technical details
indirect-only · /dashboard/purchases · warning · confidence medium
No CTA anywhere leads to /dashboard/purchases. Its address is assembled in code — a handoff link or a URL held in state — so it works, but it has no door in the interface and no back edge to whatever opened it.
If /dashboard/purchases is meant to be a destination people navigate to, give it a CTA. If it is a handoff target, confirm it offers a way back.
LowNo visible way in
The /sso-callback page is only reached through a generated link.
- What users experience
- No button leads here; users arrive through an address the app builds, such as a link in an email.
- Why it matters
- Fine for hand-offs. If users should also find it in the product, they cannot.
- Why low
- Often deliberate.
AIDeliberatehigh confidence
This is the OAuth sign-in callback. The social login provider redirects here (oauth-signin.tsx:31), and users never navigate to it on purpose.
Recommended fixIf it is meant to be browsable, give it a link where users need it.
Technical details
indirect-only · /sso-callback/[[...sso-callback]] · warning · confidence medium
No CTA anywhere leads to /sso-callback/[[...sso-callback]]. Its address is assembled in code — a handoff link or a URL held in state — so it works, but it has no door in the interface and no back edge to whatever opened it.
If /sso-callback/[[...sso-callback]] is meant to be a destination people navigate to, give it a CTA. If it is a handoff target, confirm it offers a way back.
LowLeftover redirect
The old /preview/product/[productId] page still ships, only to redirect elsewhere.
- What users experience
- Users do not notice; they are sent on automatically.
- Why it matters
- Leftover code to maintain, and a sign that links elsewhere may still point at the old address.
- Why low
- Housekeeping, invisible to users.
AIDeliberatehigh confidence
This is the modal preview pattern: clicking "Preview" opens the product in a modal (the @modal intercepting route). A hard load or refresh of that URL forwards to the full product page, so it is not a leftover.
Recommended fixDelete /preview/product/[productId] and point anything still referencing it at /product/[productId].
Technical details
legacy-route-live · /preview/product/[productId] · warning · confidence medium
/preview/product/[productId] is a stub whose only job is to redirect to /product/[productId].
Delete /preview/product/[productId] and point anything still referencing it at /product/[productId].
LowOne-way section
Users can enter product from collections but not come back.
- What users experience
- Going one way takes one click; returning takes several, or the menus.
- Why it matters
- Users feel lost and use the back button or restart, which breaks their flow.
- Why low
- An annoyance rather than a blocker.
AIReal problemmedium confidence
A shopper who opens a product from a category page has no in-page way back to that category. The product page only offers "Products" filtered by store, so comparing items within a category means using the browser Back button.
Better fix: Add a category breadcrumb on /product/[productId] linking to /collections/[category], next to the existing store link.
Recommended fixAdd a direct way back where users arrive.
Technical details
one-way-cluster · collections->product · warning · confidence medium
3 CTAs cross from collections into product, and none come back. That is the shape of an ingested data source rather than a peer area of the product.
If a user working in product ever needs the collections context, add the return CTA.
LowOne-way section
Users can enter home from signin but not come back.
- What users experience
- Going one way takes one click; returning takes several, or the menus.
- Why it matters
- Users feel lost and use the back button or restart, which breaks their flow.
- Why low
- An annoyance rather than a blocker.
AIDeliberatehigh confidence
Sign-in sends users home when they finish. Home reaches sign-in through the account menu's "Sign In", which is normal auth flow.
Recommended fixAdd a direct way back where users arrive.
Technical details
one-way-cluster · signin->home · warning · confidence medium
5 CTAs cross from signin into home, and none come back. That is the shape of an ingested data source rather than a peer area of the product.
If a user working in home ever needs the signin context, add the return CTA.
LowOne-way section
Users can enter home from signup but not come back.
- What users experience
- Going one way takes one click; returning takes several, or the menus.
- Why it matters
- Users feel lost and use the back button or restart, which breaks their flow.
- Why low
- An annoyance rather than a blocker.
AIDeliberatehigh confidence
Sign-up ends by sending the user home once their email is verified. Nothing on home needs to link back into the sign-up funnel beyond the auth screens.
Recommended fixAdd a direct way back where users arrive.
Technical details
one-way-cluster · signup->home · warning · confidence medium
3 CTAs cross from signup into home, and none come back. That is the shape of an ingested data source rather than a peer area of the product.
If a user working in home ever needs the signup context, add the return CTA.
LowOne-way section
Users can enter home from store but not come back.
- What users experience
- Going one way takes one click; returning takes several, or the menus.
- Why it matters
- Users feel lost and use the back button or restart, which breaks their flow.
- Why low
- An annoyance rather than a blocker.
AIReal problemmedium confidence
The homepage's in-page route into selling, "Sell now", is broken (it points at /dashboard/stores). The only working way from home into a store is the account menu's "Dashboard" item.
Better fix: Fix "Sell now" in lobby.tsx:88 to go to /onboarding. That restores the home-to-store path.
Recommended fixAdd a direct way back where users arrive.
Technical details
one-way-cluster · store->home · warning · confidence medium
9 CTAs cross from store into home, and none come back. That is the shape of an ingested data source rather than a peer area of the product.
If a user working in home ever needs the store context, add the return CTA.
LowPossibly unreachable
The /blog/[...slug] page may be unreachable. Worth a two-minute check.
- What users experience
- No link we could read leads here, but the /blog page has a link whose address is computed while the app runs. That link is probably the way in.
- Why it matters
- If the computed link works, nothing is wrong. If not, users cannot open these pages.
- Why low
- Most likely fine; it just could not be proven from the code alone.
AIAnalysis gaphigh confidence
The blog list links to each post through post cards (post-card.tsx:17), and posts link to each other via the pager (mdx-pager.tsx:35/45). The analyzer just couldn't read those links.
Recommended fixClick through once to confirm the link opens this page.
Technical details
orphan-unconfirmed · /blog/[...slug] · warning · confidence low
No resolved CTA leads to /blog/[...slug], but /blog has 1 whose destination is computed at runtime. One of them is probably the door. Check the evidence; if it is, nothing is wrong.
LowOnly in the menus
The /dashboard/billing page can only be reached from the menus.
- What users experience
- No screen links here in context. Users have to know to look for it in the navigation.
- Why it matters
- Users who would need it in the middle of a task do not discover it.
- Why low
- Reachable, just not where users would think to look.
AIDeliberatemedium confidence
Billing is an account-level page, and the account menu (with a keyboard shortcut) is the standard place for it.
Recommended fixLink to it from the screen where users need it.
Technical details
rail-only-inbound · /dashboard/billing · warning · confidence medium
No screen links to /dashboard/billing; only the navigation rail does. Every journey to it costs a trip back to the rail.
Add an in-page CTA to /dashboard/billing from the screen a user is on when they need it.
LowOnly in the menus
The /dashboard/settings page can only be reached from the menus.
- What users experience
- No screen links here in context. Users have to know to look for it in the navigation.
- Why it matters
- Users who would need it in the middle of a task do not discover it.
- Why low
- Reachable, just not where users would think to look.
AIDeliberatemedium confidence
Account settings normally live in the account menu, and that is exactly where this one is.
Recommended fixLink to it from the screen where users need it.
Technical details
rail-only-inbound · /dashboard/settings · warning · confidence medium
No screen links to /dashboard/settings; only the navigation rail does. Every journey to it costs a trip back to the rail.
Add an in-page CTA to /dashboard/settings from the screen a user is on when they need it.
LowOnly in the menus
The /onboarding page can only be reached from the menus.
- What users experience
- No screen links here in context. Users have to know to look for it in the navigation.
- Why it matters
- Users who would need it in the middle of a task do not discover it.
- Why low
- Reachable, just not where users would think to look.
AIDeliberatemedium confidence
Onboarding is shown through the account menu's "Dashboard" item to users who don't have a store yet. It is meant to be reached that way, though the homepage "Sell now" should also lead here.
Better fix: Point "Sell now" on the homepage (lobby.tsx:88) at /onboarding so new sellers aren't limited to the account menu.
Recommended fixLink to it from the screen where users need it.
Technical details
rail-only-inbound · /onboarding · warning · confidence medium
No screen links to /onboarding; only the navigation rail does. Every journey to it costs a trip back to the rail.
Add an in-page CTA to /onboarding from the screen a user is on when they need it.
LowOnly in the menus
The /signout page can only be reached from the menus.
- What users experience
- No screen links here in context. Users have to know to look for it in the navigation.
- Why it matters
- Users who would need it in the middle of a task do not discover it.
- Why low
- Reachable, just not where users would think to look.
AIDeliberatehigh confidence
Log out belongs in the account menu, and that is the only place it needs to be.
Recommended fixLink to it from the screen where users need it.
Technical details
rail-only-inbound · /signout/[[...signout]] · warning · confidence medium
No screen links to /signout/[[...signout]]; only the navigation rail does. Every journey to it costs a trip back to the rail.
Add an in-page CTA to /signout/[[...signout]] from the screen a user is on when they need it.
LowMany choices
The home page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · / · info · confidence low
Decision time grows with the number of options. 12 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /blog/… page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /blog/[...slug] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /build-a-board page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /build-a-board · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /collections/[category] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /collections/[category] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /collections/[category]/[subcategory] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /collections/[category]/[subcategory] · info · confidence low
Decision time grows with the number of options. 10 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /dashboard/billing page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /dashboard/billing · info · confidence low
Decision time grows with the number of options. 10 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /dashboard/purchases page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /dashboard/purchases · info · confidence low
Decision time grows with the number of options. 11 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /dashboard/purchases/[purchaseId] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /dashboard/purchases/[purchaseId] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /preview/product/[productId] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /preview/product/[productId] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /product/[productId] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /product/[productId] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /store/[storeId]/customers/[customerId] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /store/[storeId]/customers/[customerId] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /store/[storeId]/orders/[orderId] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /store/[storeId]/orders/[orderId] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /store/[storeId]/products page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /store/[storeId]/products · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /store/[storeId]/products/[productId] page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /store/[storeId]/products/[productId] · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowMany choices
The /store/[storeId]/products/new page offers a lot of choices at once.
- What users experience
- Users face many competing buttons on one screen.
- Why it matters
- More choices means slower decisions and more mistakes.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixGroup or trim the options.
Technical details
choice-load · /store/[storeId]/products/new · info · confidence low
Decision time grows with the number of options. 9 competing CTAs on one screen is worth a look, though a dense hub can be correct.
LowBusy crossroads
Many journeys pass through the home page.
- What users experience
- It is a hub: users cross it on the way to much of the product.
- Why it matters
- A problem on this page affects everything behind it. Test it with extra care.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixKeep it fast and stable; consider a second route to what lies behind it.
Technical details
chokepoint · / · info · confidence medium
Most journeys between areas pass through /. Quality, performance and copy budget belong here first; a bug here breaks many flows.
LowBusy crossroads
Many journeys pass through the /cart page.
- What users experience
- It is a hub: users cross it on the way to much of the product.
- Why it matters
- A problem on this page affects everything behind it. Test it with extra care.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixKeep it fast and stable; consider a second route to what lies behind it.
Technical details
chokepoint · /cart · info · confidence medium
Most journeys between areas pass through /cart. Quality, performance and copy budget belong here first; a bug here breaks many flows.
LowBusy crossroads
Many journeys pass through the /signin page.
- What users experience
- It is a hub: users cross it on the way to much of the product.
- Why it matters
- A problem on this page affects everything behind it. Test it with extra care.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixKeep it fast and stable; consider a second route to what lies behind it.
Technical details
chokepoint · /signin/[[...signin]] · info · confidence medium
Most journeys between areas pass through /signin/[[...signin]]. Quality, performance and copy budget belong here first; a bug here breaks many flows.
LowBusy crossroads
Many journeys pass through the /store/[storeId] page.
- What users experience
- It is a hub: users cross it on the way to much of the product.
- Why it matters
- A problem on this page affects everything behind it. Test it with extra care.
- Why low
- A measurement to be aware of, not a defect.
Recommended fixKeep it fast and stable; consider a second route to what lies behind it.
Technical details
chokepoint · /store/[storeId] · info · confidence medium
Most journeys between areas pass through /store/[storeId]. Quality, performance and copy budget belong here first; a bug here breaks many flows.
LowToo many choices on the way
Getting to “Manage plan / Subscribe now” means choosing among many options at every step.
- What users experience
- The route is only 2 clicks, but each screen on the way offers a crowd of links and buttons.
- Why it matters
- Decision time grows with the number of options. Crowded screens on the way to a key action slow people down and send some elsewhere.
- Why low
- A cost on the way, not a blocker.
Recommended fixTrim or group the options on the screens before managePlan, or give it a prominent direct CTA there.
Technical details
costly-decision · managePlan · info · confidence medium
The cheapest route to managePlan takes 2 clicks, but each crosses a screen with, on average, more than 8 options (3.9 bits a click; Hick-Hyman: log2 of options + 1). Choice load, not distance, is what slows people down on the way.
Trim or group the options on the screens before managePlan, or give it a prominent direct CTA there.
LowToo many choices on the way
Getting to “Pay” means choosing among many options at every step.
- What users experience
- The route is only 3 clicks, but each screen on the way offers a crowd of links and buttons.
- Why it matters
- Decision time grows with the number of options. Crowded screens on the way to a key action slow people down and send some elsewhere.
- Why low
- A cost on the way, not a blocker.
Recommended fixTrim or group the options on the screens before stripe.confirmPayment, or give it a prominent direct CTA there.
Technical details
costly-decision · stripe.confirmPayment · info · confidence medium
The cheapest route to stripe.confirmPayment takes 3 clicks, but each crosses a screen with, on average, more than 8 options (3.3 bits a click; Hick-Hyman: log2 of options + 1). Choice load, not distance, is what slows people down on the way.
Trim or group the options on the screens before stripe.confirmPayment, or give it a prominent direct CTA there.
LowHard to discover
Users exploring the product rarely find “Pay”.
- What users experience
- People who browse without a plan are pulled towards other links and actions long before they reach it.
- Why it matters
- Key actions found only by users who already know where they are cost the product its casual conversions.
- Why low
- A model of browsing, not a measurement; use it to compare actions.
Recommended fixPut a CTA towards stripe.confirmPayment on the screens most users pass through, such as the home page.
Technical details
diluted-value · stripe.confirmPayment · info · confidence low
A user who starts at /, picks among each screen's links and actions at random, and leaves with a 15% chance at every step ends up doing stripe.confirmPayment 0.03% of the time. Competing CTAs on the way dilute it. Real users are not random, so read this as a ranking against the other actions, not a conversion rate.
Put a CTA towards stripe.confirmPayment on the screens most users pass through, such as the home page.
Lowinconsistent-label
The same action is called “Add store” and “Create store”
- What users experience
- createStore is one action, but its buttons use different words for it. Users wonder whether they do different things.
Recommended fixPick one wording, such as “Add store”, and use it everywhere this action appears.
Technical details
inconsistent-label · createStore · info · confidence high
createStore is one action, but its buttons use different words for it. Users wonder whether they do different things.
Pick one wording, such as “Add store”, and use it everywhere this action appears.
LowNo way to undo
Users can create a notification but can never delete it.
- What users experience
- No screen offers a way to remove or cancel a notification once it exists.
- Why it matters
- Mistakes become permanent, and users write to support to undo them. Sometimes that is policy; often it is an oversight.
- Why low
- Often deliberate; confirm it is.
Recommended fixIf users should be able to, add a delete or cancel action for a notification.
Technical details
missing-inverse · notification · info · confidence low
POST /api/email/newsletter creates notification records, and no reachable action deletes or cancels one; updateNotification can only change it. That can be policy; if not, mistakes are permanent.
LowNo way to undo
Users can create a store but can never delete it.
- What users experience
- No screen offers a way to remove or cancel a store once it exists.
- Why it matters
- Mistakes become permanent, and users write to support to undo them. Sometimes that is policy; often it is an oversight.
- Why low
- Often deliberate; confirm it is.
Recommended fixIf users should be able to, add a delete or cancel action for a store.
Technical details
missing-inverse · store · info · confidence low
createStore, createAccountLink create store records, and no reachable action deletes or cancels one; updateStore can only change it. That can be policy; if not, mistakes are permanent.
Lowmixed-controls
1 of 2 delete buttons does not look destructive
- What users experience
- Deletes should share one destructive style so users recognise them before pressing. These use a regular style: “Delete item” (Button (outline)).
Recommended fixUse the destructive variant for every delete button.
Technical details
mixed-controls · delete · info · confidence medium
Deletes should share one destructive style so users recognise them before pressing. These use a regular style: “Delete item” (Button (outline)).
Use the destructive variant for every delete button.
Lowmixed-verbs
“create” is written 2 ways: “add”, “create”
- What users experience
- Labels across the product use “add” (“Add Product”, “Add items to your cart to checkout”), “create” (“Create store”) for the same kind of action. One word per kind is easier to recognise.
Recommended fixChoose one word for “create” and use it on every button and link.
Technical details
mixed-verbs · create · info · confidence medium
Labels across the product use “add” (“Add Product”, “Add items to your cart to checkout”), “create” (“Create store”) for the same kind of action. One word per kind is easier to recognise.
Choose one word for “create” and use it on every button and link.
Lowmixed-verbs
“delete” is written 2 ways: “delete”, “remove”
- What users experience
- Labels across the product use “delete” (“Delete Product”, “Delete item”), “remove” (“Remove one item”) for the same kind of action. One word per kind is easier to recognise.
Recommended fixChoose one word for “delete” and use it on every button and link.
Technical details
mixed-verbs · delete · info · confidence medium
Labels across the product use “delete” (“Delete Product”, “Delete item”), “remove” (“Remove one item”) for the same kind of action. One word per kind is easier to recognise.
Choose one word for “delete” and use it on every button and link.
Lowmixed-verbs
“save” is written 2 ways: “save”, “update”
- What users experience
- Labels across the product use “save” (“Save preferences”), “update” (“Update Product”, “Update store”) for the same kind of action. One word per kind is easier to recognise.
Recommended fixChoose one word for “save” and use it on every button and link.
Technical details
mixed-verbs · save · info · confidence medium
Labels across the product use “save” (“Save preferences”), “update” (“Update Product”, “Update store”) for the same kind of action. One word per kind is easier to recognise.
Choose one word for “save” and use it on every button and link.