惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News | PayPal Newsroom
IT之家
IT之家
Jina AI
Jina AI
博客园 - 司徒正美
GbyAI
GbyAI
WordPress大学
WordPress大学
B
Blog
大猫的无限游戏
大猫的无限游戏
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recorded Future
Recorded Future
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
Latest news
Latest news
宝玉的分享
宝玉的分享
小众软件
小众软件
NISL@THU
NISL@THU
C
CERT Recently Published Vulnerability Notes
The GitHub Blog
The GitHub Blog
P
Privacy & Cybersecurity Law Blog
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
Last Week in AI
Last Week in AI
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Proofpoint News Feed
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位
博客园_首页
T
The Exploit Database - CXSecurity.com
The Cloudflare Blog
M
MIT News - Artificial intelligence
H
Help Net Security
Security Archives - TechRepublic
Security Archives - TechRepublic
V2EX - 技术
V2EX - 技术
I
InfoQ
D
Darknet – Hacking Tools, Hacker News & Cyber Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
O
OpenAI News
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Privacy International News Feed
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
H
Hacker News: Front Page
W
WeLiveSecurity
N
News and Events Feed by Topic

Vercel News

Vercel Open Source Program: Winter 2026 cohort How Notion Workers run untrusted code at scale with Vercel Sandbox How we run Vercel's CDN in front of Discourse From idea to secure checkout in minutes with Stripe Building Slack agents can be easy Scaling redirects to infinity on Vercel Advancing Python typing Gamma builds design-first agents with Vercel How Avalara turns pipe dreams into patent-pending with v0 Keeping community human while scaling with agents How OpenEvidence built a healthcare AI that physicians actually trust Security boundaries in agentic architectures Skills Night: 69,000+ ways agents are getting smarter Video Generation with AI Gateway We Ralph Wiggumed WebStreams to make them 10x faster How Stably ships AI testing agents in hours, not weeks How we built AEO tracking for coding agents Anyone can build agents, but it takes a platform to run them Introducing Geist Pixel The Vercel AI Accelerator is back with $6m in credits Making agent-friendly pages with content negotiation The Vercel OSS Bug Bounty program is now available Introducing the new v0 Run untrusted code with Vercel Sandbox, now generally available How Stripe built a game-changing app in a single flight with v0 How Sensay went from zero to product in six weeks AGENTS.md outperforms skills in our agent evals Agent skills explained: An FAQ Testing if "bash is all you need" AWS databases are now live on the Vercel Marketplace and v0 Use Perplexity Web Search with Vercel AI Gateway Introducing: React Best Practices Nick Bogaty joins Vercel as Chief Revenue Officer How Mux shipped durable video workflows with their @mux/ai SDK How to build agents with filesystems and bash How we made v0 an effective coding agent Stopping the slow death of internal tools Building AI-Generated Pixel Trading Cards with Vercel AI Gateway We removed 80% of our agent’s tools AI SDK 6 Our $1 million hacker challenge for React2Shell Cline now runs on Vercel AI Gateway How to prompt v0 Build smarter workflows with Notion and v0 Vercel launches partner certification Inside Workflow DevKit: How framework integrations work React2Shell Security Bulletin | Vercel Knowledge Base Billions of requests: Black Friday-Cyber Monday 2025 Investing in the Python ecosystem AWS Databases coming to the Vercel Marketplace How we built the v0 iOS app Workflow Builder: Build your own workflow automation platform Vercel Open Source Program: Fall 2025 cohort Self-driving infrastructure Vercel collaborates with Google for Gemini 3 Pro Preview launch Vercel: The anti-vendor-lock-in cloud How Nous Research used BotID to block automated abuse at scale How AI Gateway runs on Fluid compute What we learned building agents at Vercel Build and deploy data applications on Snowflake with v0 BotID Deep Analysis catches a sophisticated bot network in real-time Vercel achieves TISAX AL2 compliance to serve automotive partners Bun runtime on Vercel Functions David Totten Joins Vercel to Lead Global Field Engineering Vercel Ship AI 2025 recap You can just ship agents AI agents and services on the Vercel Marketplace Built-in durability: Introducing Workflow Development Kit Zero-config backends on Vercel AI Cloud Introducing Vercel Agent: Your new Vercel teammate Update regarding Vercel service disruption on October 20, 2025 Agents at work, a partnership with Salesforce and Slack Running Next.js in ChatGPT: How to Build ChatGPT Apps Talha Tariq joins Vercel as CTO of Security Just another (Black) Friday Server rendering benchmarks: Fluid Compute and Cloudflare Workers Towards the AI Cloud: Our Series F Collaborating with Anthropic on Claude Sonnet 4.5 to power intelligent coding agents Preventing the stampede: Request collapsing in the Vercel CDN BotID uncovers hidden SEO poisoning How we made global routing faster with Bloom filters What you need to know about vibe coding Scale to one: How Fluid solves cold starts Addressing security & quality issues with MCP tools - Vercel AI agents at scale: Rox’s Vercel-powered revenue operating system Agentic Infrastructure Zero Data Retention on AI Gateway Optimizing Vercel Sandbox snapshots How Waldium made a blog platform work for humans and AI alike How FLORA shipped a creative agent on Vercel's AI stack Agent responsibly Making Turborepo 96% faster with agents, sandboxes, and humans Unified reporting for all AI Gateway usage new.website joins forces with v0 SERHANT.'s playbook for rapid AI iteration Two startups at global scale without DevOps Chat SDK brings agents to your users 360 billion tokens, 3 million customers, 6 engineers Meet the 2026 Vercel AI Accelerator Cohort Build knowledge agents without embeddings
How to build an engaging virtual product tour - Vercel – Vercel
2023-06-02 · via Vercel News

8 min read

How we addressed the need for an interactive, no-commitment experience of our toolkit.

If you've tried a new tech tool recently, this experience might sound familiar: you visit the website, skim the homepage content, but still struggle to understand what the tool will do for you.

The Vercel virtual product tour is a key resource for prospective teams to interactively understand what Vercel can offer. It takes the breadth of information about Vercel and breaks the product down into the most relevant parts.

First, we’ll talk about why we designed the tour the way we did. Then, for the technically curious, we’ll walk through some of the most interesting hows.

See for yourself.

Experience the frontend platform customers and developers love.

Take the Tour

Link to headingThe need

The virtual product tour addresses several challenges we encountered in our marketing funnel. At the core, we were after a digital experience that allows users to interact with the Vercel product before creating an account or talking to our sales team. We wanted users, with minimal effort on their end, to have the next-best-thing to full engagement with our product.

Additionally, we needed the tour to offer insight into some behind-the-scenes product magic that might otherwise go unnoticed on the backend. Certain paid features also needed highlighting. The tour organizes Vercel's product offering into a self-driven tutorial, which prepares users for efficient product adoption.

Above all, we wanted teams to experience the "aha" moment that can inspire them to incorporate Vercel into their workflow.

Link to headingThe design

With these needs in mind, we aimed to create an interactive experience that excites users about Vercel's offerings and familiarizes them with the platform.

The product tour unfolds as an interactive slideshow that allows users to take their time on each slide while maintaining an overall sense of progress. The slides contain real Vercel UI/UX usually only available to logged-in users. If the user is signed in, the slides are personalized, displaying their avatar and username.

A dynamic tooltip focuses the user on the most relevant information in each slide. This was crucial: Vercel has a lot to offer, and we needed a way to show off a huge chunk of it without information overload. The tooltip also offers more interaction than a static button, since it needs to be moved to and clicked to progress. It even lets users engage directly with parts of the product, such as comments on Preview Deployments.

Finally, we added a "contact sales" feature throughout the tour so users can get their questions answered easily. This lets potential buyers convert whenever they’re sold on Vercel, instead of waiting until the end of the tour.

Link to headingThe mobile experience

Initially, we faced a challenge on how to make our product tour mobile-friendly. We knew mobile accounted for most of our new user traffic, so we couldn’t afford to overlook it. We attempted to scale down the desktop experience, but it proved too long and inconvenient to use.

We ultimately decided to emulate a social media experience: cards that users can easily tap through. This approach was familiar to users and helped them get excited about the product even on a smaller screen.

Our primary goal is to provide an introduction to the full Vercel product. Building an application on Vercel generally happens on desktop, so our mobile tour needed to drive account creation and sales contacts. From there, users could fully enable themselves to create the applications they want.

Link to headingAccessibility from the outset

Accessibility isn’t something you tack on to the end of your application. Especially when designing a complex experience, where there’s often no predefined Accessible Rich Internet Applications (ARIA) standards, we needed to consider how we were going to keep the experience usable for all.

There’s no defined aria-role for “product tour” or “demo.” Instead, we decided that the experience was most similar to a carousel. Carousels generally carry an aria-live attribute, which indicates that an element’s contents may change without the element itself reloading. We placed this on a hidden div in combination with role="status" to notify screen readers each time the user changes to a different slide.

Keyboard navigation needed to equal the usability of a mouse. We added a “Get Started” button, so that the user isn’t thrown abruptly into Step 1 upon page navigation. We replaced the “Skip to Content” button with “Skip to Tooltip,” allowing users to directly navigate to the tooltip instead of the main content. This is particularly useful for screen readers, as most buttons were disabled and user only needs to press the tooltip dot.

We also solved race conditions with lodash.delay() to ensure that the focus remained on the tooltip as users navigated from slide to slide or up and down a single slide. We’ll address race conditions more in the animation section below.

While there’s definitely a lot more to be done to ensure an accessible experience for all, we felt this gave a solid foundation for the vast majority of use cases.

We’re committed to building accessible designs. Please let us know if a Vercel experience needs to be more accessible for you.

Link to headingTechnical details

Now, we’ll jump into the details about the technical implementation. If you’d like to learn more about how Vercel can enable your own virtual experiences, feel free to skip to the end of the article.

Link to headingData

A DemoContext serves as the single source of truth for the data in the product tour. This Context provides our Product Tour components with everything they need to handle navigation, animations, and changing content, including:

  • An index state, for tracking the current slide / tour progression

  • A subIndex state, for further tracking progression of steps within each slide

  • The current tooltipRef , used to position the product tour tooltip

  • Data and components to render for each slide

  • States for the modal and tour survey

Link to headingNavigation

As the slides change, we sync the current slide index (zero-based) with a URL query parameter i . We set these URL parameters with Next.js’s useRouter hook, which allows us not only to update the param upon the index change, but also allows for direct linking to any given slide. Thus, /product-tour?i=6 will always display the fourth slide of the tour. Try it out.

Link to headingThe tooltip data

Throughout the tour, you’re accompanied by a Tooltip that provides carefully positioned information about the product.

Each slide has its own TooltipContent object (show below), which gives the Tooltip its text, position, and styling. TooltipContent derives its data from a clean tooltipContentMap, where developers can set properties for each slide or sub-slide. DemoContext, meanwhile, tells the Map exactly which properties to send to the TooltipContent.

export interface TooltipContent {

// Data populated from tooltipContentMap, based on current DemoContext index

// Tooltip text

title?: string;

description?: string;

// Tooltip style and position

color?: 'white' | 'black';

dotAlignX?: 'left' | 'center' | 'right';

dotAlignY?: 'top' | 'center' | 'bottom';

transform?: string;

tooltipAlign?: 'top' | 'left' | 'right' | 'bottom';

// Custom TS type check

type: 'TooltipContent';

}

The options for the TooltipContent interface.

Link to headingRepositioning the tooltip

Since the Tooltip position changes by slide and by resizing the screen, we created a repositionTooltip function to handle all conditions.

With each new slide or transition within the same slide, the tooltipRef updates, which forces the tour to “scroll” to the new ref and reposition the Tooltip via the repositionTooltip function.

The repositionTooltip function also listens for window resizing, via a ResizeObserver. This means repositionTooltip gets called very frequently and needs to be throttled. Instead of invoking the function every millisecond during a user event, we used timeouts to ensure a reasonable rate of update.

The function also handles the Tooltip size to avoid overflowing the viewport. After calculating the Tooltip description’s size and position, we pass the dimensions to a function called isOutofViewport (credit to Chris Ferdinandi). If the Tooltip and its description go out of the viewport, we adjust its alignment by changing values held in

This function handles more than just the tooltip’s position, but also is cognizant of the tooltip’s size so as to avoid overflowing the viewport. After calculating the estimated projection of the tooltip description’s size and position, we pass the dimensions to a function called tooltipAlign, dotAlignX, dotAlignY , and transform to bring the element fully inside bounds.

Link to headingAnimating the tooltip

We designed our animations to retain user attention. A product tour like this one could have meant over-the-top transitions and lots of bells and whistles to keep the user engaged, but we wanted the user to focus on the Vercel experience, and not the one of the product tour.

Upon transition of each slide, we use CSS transitions to smoothly interpolate the tooltip from its previous to current position, as defined by the tooltipRef.

The dot indicator/button pulses through a simple CSS keyframe animation of the element’s scale. If the user clicks outside the button or the current tooltipRef element, a click event handler on the tour window triggers a separate attention-getting animation that makes the dot pulse more intensely, guiding the user’s interactions back to the tooltip.

Building the tooltip’s actual animations wasn’t too complicated, but timing those animations required a lot more work. At first, the tooltip description would unpredictably flicker as varying race conditions with repositionTooltip and the dot’s moving animation resolved.

Ideally, we wanted only the dot to move and for the tooltip description to appear after the dot stopped moving. We solved this with a transitionEnd event listener (credit to Programming Bytes). By targeting the propertyName of the transition event, we were able to ensure that only after the top property of the dot was finished transitioning, the tooltip description would appear.

We also used lodash.delay() throughout the code, to dictate a sort of timeline between all animations and transitions. It’s crucial that no matter the sequence the user takes through the tour, the animations always play in the correct order.

Link to headingReimagine your user experience

Giving the best buying experience is essential to us. We understand that purchasing software can be tedious and not everyone is ready to dive into a trial or have a conversation with sales. That's why the interactive Vercel product tour exists—to give you a comprehensive preview of the platform, minimizing the effort to see the potential results.

Through the development of the Vercel virtual product tour, we successfully addressed key challenges in our marketing funnel and enhanced our user journey. The potent combination of Next.js and Vercel deployments, which we use for all our public-facing products, enable us to transform everyday digital interfaces into impactful experiences.

To get a sense of what you can build with Vercel, we invite you to explore projects such as last year's Next.js Conf landing page and our recent Ship Week experience.

We created the Vercel virtual product tour keeping you, our customers, at the heart of the process. It's all about empowering you to build the best user experience possible, whatever your project might be.

You can bring your own vision to life with one of our 200+ templates, or deploy a new repo in just a few clicks.

Ready to redefine your digital experiences with Vercel?

If you're curious about how Vercel can uplift your team's specific use case, our experts are ready for a conversation.

Let's Talk