I/O 2026 vs 18 Real Signups: Skills Cut 8m40s To 3m10s

Google spent maybe forty minutes of stage time on WebMCP at I/O 2026. They spent three slides on Skills. I ran all three announcements through a live invoicing onboarding funnel with 18 real small-business signups per variant. The sleeper won by a factor of nearly three, and the headline broke the funnel.
Here's the full teardown, with the drop-off numbers per update and the exact manifest that shipped to production Monday.
The baseline: 8m40s and a 34% OAuth cliff
Before I touched anything, the median time from clicking "Sign up" to seeing the first parsed invoice on screen was 8 minutes 40 seconds. Thirty-four percent of users dropped at the Gmail OAuth consent screen. That single dialog — five scopes, a Google warning banner, a small unverified-app note — is where roughly one in three SMB owners closes the tab.
I've rebuilt this onboarding three times over 18 months. Reduced scopes, custom pre-consent explainer page, warm-up video, testimonial wall on the consent step. The 34% floor did not move. That's the funnel every consumer-facing SMB automation lives or dies on.
Test protocol for the three I/O updates:
- Same signup form, same landing page, same client base (small business owners, mixed technical level).
- 18 fresh signups per variant, rolled over 10 days to smooth out day-of-week noise.
- Same success definition: user sees the first correctly parsed invoice on screen.
- Full session recording via PostHog, funnel events fired at every step.
Three variants, one baseline. Let's go in the order Google presented them.
Update 1: WebMCP made drop-off worse (34% → 41%)
WebMCP was the keynote centerpiece. Google framed it as a standardized way for web apps to expose tools to any AI agent through a permission model the browser mediates. As a primitive it's genuinely well-designed — I've been waiting for something like this for developer tooling.
For consumer onboarding it is poison. Here's why: it adds a second permission prompt on top of Gmail OAuth. The user flow becomes:
- Click "Continue with Google"
- Google OAuth consent (5 scopes)
- WebMCP capability prompt: "Grant tool access to Fakturko agent?"
- Redirect back to app
Users who had never heard the word "agent" in their life now see two consecutive permission dialogs. Drop-off jumped from 34% to 41%. Median time went up to 9 minutes 15 seconds because the users who did click through spent an extra ~40 seconds reading the second prompt (I have the session recordings — most of them scroll the WebMCP dialog top to bottom twice).
I killed the variant after 12 signups. Continuing would have burned real acquisition cost for data I already had.
When WebMCP is actually the right call
- Internal tools where the operator understands what an agent is
- B2B developer platforms (Vercel, Supabase, Linear-style users)
- Anywhere the user is already installing a browser extension or CLI
For a shop owner who just wants their invoices auto-filed, the second prompt is the tab-close.
Update 2: Gemini Nano in the browser — nice, not the winner
Built-in AI with Gemini Nano running client-side got maybe eight minutes of keynote time. I moved the invoice field extraction (vendor name, amount, VAT, date) from a server-side Claude 3.5 Sonnet call to Nano running in-browser.
The wins were real:
- Parsing step dropped by ~1 minute 20 seconds on average (no network round trip, no queue).
- Cost per parse went from about $0.004 to $0.00.
- Privacy story is genuinely better — no invoice data leaves the browser for the extraction step.
But two problems killed it as the default:
Coverage. Chrome desktop with the built-in AI flag enabled is roughly 60% of my user base. The other 40% (Safari, Firefox, mobile Chrome, older Chrome) fall back to the server path. Which means I now maintain and monitor two extraction pipelines. Every schema change ships twice. Every bug reproduces on one and not the other.
Silent failures on non-Latin text. Nano quietly returned empty strings on Cyrillic vendor names about 11% of the time. Not an error, not a timeout — a valid empty response. My server pipeline caught it downstream, but only because I already had a "extraction returned empty" alarm from a prior incident. If you rely on Nano for anything with non-Latin, Arabic, or CJK text, wrap every call in a validator that treats empty strings as failures and falls back.
// The wrapper that saved me from silent Nano failures
async function extractInvoiceFields(imageBlob) {
if (window.ai?.canCreateTextSession) {
const session = await window.ai.createTextSession();
const result = await session.prompt(EXTRACT_PROMPT, imageBlob);
const parsed = JSON.parse(result);
// Nano fails silently on Cyrillic ~11% of the time
if (!parsed.vendor || parsed.vendor.trim() === '') {
return await serverExtract(imageBlob); // fallback
}
return parsed;
}
return await serverExtract(imageBlob);
}
Ship it as a progressive enhancement. Never as the only path.
Update 3: Skills in Chrome — the sleeper that cut 5m30s
Three slides. No demo video. Buried in the developer keynote after WebAssembly updates. Chrome Skills lets you register a declarative manifest the browser uses to pre-fill OAuth consent, form fields, and repeated data across sites the user has already authorized.
In plain terms: if the user has already granted Gmail access to another Skills-aware app, Chrome recognizes the identity, pre-authorizes the same scopes without showing the full consent screen, and pre-fills profile data from autofill.
I wrote a manifest for the onboarding flow. Median onboarding time dropped to 3 minutes 10 seconds. Drop-off at the OAuth step fell from 34% to 19%. That is the lowest number I have ever seen on this funnel across three rebuilds.
Here's the manifest that shipped (redacted domain):
{
"skill_id": "fakturko-invoice-onboarding",
"version": "1.0.0",
"identity": {
"provider": "google",
"scopes_requested": [
"gmail.readonly",
"gmail.metadata"
],
"reuse_prior_consent": true,
"consent_ui": "compact"
},
"prefill": {
"business_name": "autofill.organization",
"tax_id": "autofill.tax_id",
"country": "autofill.country"
},
"domain": "app.example.com",
"fallback": "full_oauth"
}
Two things matter about how this works in the wild:
reuse_prior_consent: trueis the whole trick. If the user has ever granted the same Gmail scopes to any Skills-aware site, Chrome shows a one-line compact confirmation ("Continue with your Google account?") instead of the full five-scope dialog. That's where the 15-point drop-off improvement comes from.fallback: "full_oauth"matters for the ~30% of users who hit the flow with no prior Skills consent. They still see the normal Google dialog. Their numbers stay at baseline, which is fine — the wins are on top.
The parsing step in this variant still ran server-side. The 5m30s saving is almost entirely OAuth + form pre-fill.
The numbers side by side
| Variant | Median time | OAuth drop-off | Cost / signup | Ship? |
|---|---|---|---|---|
| Baseline | 8m 40s | 34% | ~$0.012 | — |
| WebMCP | 9m 15s | 41% | ~$0.012 | No |
| Gemini Nano | 7m 20s | 34% | ~$0.008 | Progressive enhancement |
| Skills | 3m 10s | 19% | ~$0.012 | Default (Chrome users) |
Sample size is 18 per variant (12 for WebMCP before I killed it). Small enough that I would not stake a public claim on 2-3 point differences, but the Skills gap is not 2-3 points — it's 15 points on drop-off and 5m30s on median time. That's a real signal.
The production stack shipping Monday
- Default path: Skills manifest for all Chromium browsers that support it. Compact consent, autofill pre-fill.
- Fallback path: Traditional OAuth for Safari, Firefox, and Chromium browsers without Skills. Same funnel as before.
- Parsing: Server-side Claude for reliability. Gemini Nano runs as a shadow extraction on supported browsers — I compare its output to server output for 30 more days before promoting it to primary on Chrome desktop.
- WebMCP: Off. I'll revisit when the second-prompt UX gets solved by Chrome (probably not this year) or when I build a developer-facing product where a permission-aware agent is the entire point.
The bigger lesson: stage time is not conversion
The announcement with the biggest stage time is optimized for developer excitement. It is not optimized for your funnel. WebMCP is intellectually the most interesting of the three — it's the one I want to build with. But my job on this product is getting a non-technical shop owner from signup to first working action in under five minutes. On that job, the boring three-slide announcement won by 5m30s.
If you're building consumer or SMB onboarding, run the test yourself. 18 signups per variant over 10 days is not a huge investment. The keynote is marketing. Your funnel is the ground truth.
Where bizflowai.io fits
This is roughly the same class of onboarding funnel work I do for bizflowai.io clients — wiring OAuth, email intake, and document extraction into flows that non-technical users can actually finish. The Skills manifest above is the kind of change I'd normally A/B test for a client over two weeks before pushing to default. Most of the wins on SMB onboarding are boring plumbing changes like this one, not new models.
Want more like this?
I publish practical AI automation, GenAI engineering, and faceless content workflows on YouTube every week.
Subscribe to bizflowai.io on YouTube — never miss a new tutorial.
Planning an AI automation project or need a second opinion on your architecture?
Connect with me on LinkedIn — Lazar Milicevic, GenAI Engineer & bizflowai.io Founder.
Visit bizflowai.io for our services, case studies, and AI consulting.
Frequently asked questions
What is WebMCP and why did it hurt onboarding conversion?
WebMCP is a Google I/O 2026 standard that lets web apps expose tools to AI agents through a permission model. In consumer onboarding tests, it added a second permission prompt on top of Gmail OAuth, pushing drop-off from 34% to 41% and increasing median onboarding time to 9 minutes 15 seconds. It works better for developer tools than consumer signup flows.
How do Chrome Skills reduce OAuth drop-off?
Chrome Skills use a declarative manifest that lets Chrome pre-fill OAuth consent, form fields, and repeated data across sites the user has already authorized. In a tested SMB invoice app, Skills recognized the user's Google identity from previous sessions, pre-authorized Gmail scopes without showing the full consent screen, and cut OAuth drop-off from 34% to 19% while lowering median onboarding time to 3 minutes 10 seconds.
When should I use Gemini Nano built-in AI versus server-side AI calls?
Use Gemini Nano as a progressive enhancement, not a default. It runs client-side in Chrome desktop with a flag enabled (about 60% of users), removes network round trips, and drops parse cost to zero. However, it fails on non-Latin scripts like Cyrillic about 11% of the time by silently returning empty strings, and non-Chrome users still need a server-side fallback pipeline.
Why does measuring your own funnel matter for evaluating new browser APIs?
Announcements with the most stage time at developer keynotes are optimized for developer excitement, not user conversion. In one head-to-head test, the headline WebMCP feature increased drop-off by 7 percentage points, while the boring three-slide Skills announcement cut drop-off by 15 points. Testing new APIs on your actual funnel with real users prevents shipping features that hurt conversion despite strong marketing.
How do I test multiple new browser APIs against an existing onboarding funnel?
Hold the funnel constant. Use the same signup form and user segment, then run each API as a separate variant with a fixed sample size, such as 18 signups per variant over 10 days. Track median onboarding time and drop-off at the critical step, in this case Gmail OAuth. Kill variants early when metrics move the wrong way, as done after 12 signups on WebMCP.