Product pattern

Reduce friction

Remove the steps, typing, decisions and waits that stand between a user and the thing they came to do.

Reduce friction Two checkouts for the same order. The average one asks the shopper to type 11 fields. The other has email, address and card already filled in, so paying takes one tap. 17% of shoppers quit a checkout that felt too long. Average checkout: 11 fields to type EmailPhone First nameLast name AddressApartment CityState ZIP codeCountry Card number Pay $48 17% of shoppers quit: checkout too long Baymard: 11 fields on average, 8 needed Already known: one tap to pay anna@acme.com 12 Hill Street, Leeds Visa ending 4242 Edit Edit Edit Pay $48 Prefill what you know, cut the rest
Baymard Institute: the average checkout asks for about 11 fields and 17% of shoppers quit one that felt too long. Prefilling known details turns it into one tap.

Friction is any effort a screen asks for that does not move the user toward their goal: retyping known data, leaving the page to find a setting, an extra confirmation, a form field nobody needs. NN/g calls the total of this mental and physical effort interaction cost, and notes that people tend to pick whatever path looks cheapest.

BJ Fogg's behavior model (2009) puts it plainly: a behavior happens when motivation, ability and a prompt meet at the same moment, and making a task easier (raising ability) can carry a user whose motivation is only moderate. Baymard Institute's checkout benchmark finds the average checkout still shows about 11 form fields when most sites need only 8, and that 17% of shoppers in its survey abandoned an order because checkout felt too long or complicated.

In onboarding and upsells the user's motivation is at its peak for a short window. One-tap sign-in, autofill, a saved card, or a budget preset next to the spend limit keep the action inside that window instead of sending people off to another page.

How to use it

  • Prefill anything you already know (email, name, company, current page) and let the OS autofill the rest with correct field types.
  • Put the action where the need appears: a "Buy credits" button next to the usage limit, not a link to the billing page.
  • Count the fields and steps on your signup or checkout and cut or defer every one that is not needed to deliver the first result.

Watch out

  • Removing friction from decisions users should think about (one-click upgrades with no price shown, auto-renewal enabled silently) turns convenience into a trap; that is where Positive friction belongs.
  • Hiding required information to make a flow look shorter just moves the effort to a later, more frustrating step.

Related

Reduce friction in real products 25 working · 11 not

Dazzle AI: Autofill-ready field Dazzle AI (working) Autofill-ready field The name field is typed correctly, so iOS offers the full name as a one-tap suggestion. Slack: Google Contacts shortcut Slack (working) Google Contacts shortcut No need to type addresses from memory. Cursor: Budget in one click Cursor (working) Budget in one click $50 to $200 presets mirror the settings page, so no trip to billing is needed. ChatGPT: Three easy answers ChatGPT (working) Three easy answers Yes, Somewhat, No: one tap, with a middle option for honest replies. OpenAI API: Saved card reused OpenAI API (working) Saved card reused The default Visa is preselected, so there's nothing to type. OpenAI API: Action next to the goal OpenAI API (working) Action next to the goal "Buy credits" sits right under the spend criterion. Notion: Current page as context Notion (working) Current page as context "State of Cloud (Sep'25)" is attached automatically, so a first question works on real content. Cube Cloud: Demo as an escape hatch Cube Cloud (working) Demo as an escape hatch "Curious to explore Cube Cloud without connecting your database?" keeps hesitant users moving. Bricks: Prompt before signup Bricks (working) Prompt before signup "Ask Bricks to create a..." lets you start the task right away. Bricks: Paste as the easy path Bricks (working) Paste as the easy path "Copy and paste your data from other sources" skips file handling. Snowflake: No signup form Snowflake (working) No signup form Name and email are passed to Sigma automatically; the user types nothing. Snowflake: Only two fields Snowflake (working) Only two fields Name and email came from Snowflake, so Sigma asks only about the company. Snowflake: Copy buttons per IP Snowflake (working) Copy buttons per IP Each address has its own copy icon, so the manual step is quick and typo-free. Databricks: Token handled for you Databricks (working) Token handled for you "<Autogenerated and managed>" removes the step where most people get stuck: creating and pasting a token. Count: One real input Count (working) One real input The API token is the only field left to fill, which keeps the form short. Upsolve AI: Self-serve entry price Upsolve AI (working) Self-serve entry price $500/month with "Get started" lets a startup buy without talking to anyone. Julius: Start without a file Julius (working) Start without a file "Add a file or start a conversation now and add files later" removes the first blocker. Julius: No jargon needed Julius (working) No jargon needed "Without needing extensive statistical knowledge" names the barrier and removes it. Linear: Paste many emails Linear (working) Paste many emails One field takes a comma-separated list, so bulk invites take seconds. Linear: Team is optional Linear (working) Team is optional "(optional)" removes a decision that could block the invite. Unidentified SaaS: Three fields only Unidentified SaaS (working) Three fields only Name, email, password and nothing else on the first step. Lightdash: Demo as fallback Lightdash (working) Demo as fallback "Try our demo project" keeps the user exploring instead of leaving. Grain: Bulk email invite Grain (working) Bulk email invite One field takes several addresses. PostHog: Name and email pre-filled PostHog (working) Name and email pre-filled Carried over from the previous step, so only the org name is new. Perplexity: Shortcut in the tooltip Perplexity (working) Shortcut in the tooltip The keyboard shortcut is shown for power users. Dazzle AI: Phone number up front Dazzle AI (not working) Phone number up front A phone number on screen two, with no reason given, is a big ask for an app nobody has tried yet. Dazzle AI: No Sign in with Apple Dazzle AI (not working) No Sign in with Apple Only a manual form and an arrow, no one-tap account option. Dazzle AI: Another data ask Dazzle AI (not working) Another data ask Name, phone, photos and now email, all before the first suggestion. Gamma: Category for a compliment Gamma (not working) Category for a compliment A "Select a category" dropdown is extra work for someone who just wants to say thanks. Databricks: Still a new password Databricks (not working) Still a new password After a token-based hand-off you still create and confirm a password; SSO from the partner would skip this. Peliqan: Paste JSON in a one-line box Peliqan (not working) Paste JSON in a one-line box "Open the file, copy the full json and paste it here" into a single-line input instead of offering a file upload. Canva: Blank box, no reasons Canva (not working) Blank box, no reasons Only an open text field and no reason chips, so most people will skip it and churn reasons go uncounted. Linear: Marketing step in setup Linear (not working) Marketing step in setup A newsletter ask at step 7 of 8 adds length without helping you get started. Unidentified SaaS: Google sign-up comes second Unidentified SaaS (not working) Google sign-up comes second The one-click path sits below the form, after users have started typing. Rows: Covers the navigation Rows (not working) Covers the navigation The toast sits on the main nav and hides links like Integrations until it is handled. Holistics: A whole step for one toggle Holistics (not working) A whole step for one toggle Flipping a switch the user must enable anyway could be done for them.