Navigation Timing API Viewer - Online Page Load Breakdown
See your current page load broken down into DNS, TLS, request, and DOM phases. Understand where time is spent.
UD5 Toolkit
Experience smooth, native page-state transitions — no heavy libraries required.
Checking support...Click the purple circle or any dashed zone to morph the shape across the stage. Each move uses view-transition-name for seamless element-level animation.
Each card has a unique view-transition-name. Click any card — it smoothly morphs to fill the row while siblings reflow around it.
Launch
Deploy your project with confidence using our streamlined launch pipeline. Built for speed and reliability.
Design
Craft beautiful interfaces with precision. Our design system ensures consistency across every touchpoint.
Optimize
Boost performance with intelligent caching and lazy loading strategies that scale effortlessly.
Secure
Enterprise-grade security with end-to-end encryption and continuous vulnerability scanning.
Analytics
Real-time dashboards with actionable insights. Understand your users like never before.
Scale
Global CDN with edge computing. Serve millions of users without breaking a sweat.
Select a thumbnail to smoothly transition the preview. Each thumbnail maps to an element with its own view-transition-name.
Toggle between grid and list layouts. Items reflow smoothly — the entire layout transition is captured by the API.
The JavaScript behind these transitions is surprisingly simple:
| Browser | Version | Support | Notes |
|---|---|---|---|
| Chrome | 111+ | Full | Full support for multi-page & SPA transitions |
| Edge | 111+ | Full | Same engine as Chrome; full feature parity |
| Opera | 97+ | Full | Chromium-based, supports all features |
| Safari | 18+ | Partial | SPA transitions supported; multi-page in development |
| Firefox | — | Not yet | Under active development; expected in future release |
| Chrome Android | 111+ | Full | Mobile-optimized transitions work smoothly |
| Safari iOS | 18+ | Partial | SPA mode supported; improving rapidly |
document.startViewTransition() and can customize it via CSS pseudo-elements like ::view-transition-old and ::view-transition-new.view-transition-name work? view-transition-name CSS property tags an element so the browser can track it across states. When two elements (old and new) share the same name, the browser morphs between them — animating position, size, and shape changes seamlessly. Each name must be unique on the page at any given moment. This enables impressive effects like cards expanding, images moving between galleries, or buttons transforming into modals.::view-transition-old(root) and ::view-transition-new(root) for the page-level cross-fade, or use the element's view-transition-name like ::view-transition-old(my-element). Set animation-duration, animation-timing-function, and even animation-delay. You can also use CSS custom properties to dynamically control these values from JavaScript, as demonstrated in this tool's controls above.if (document.startViewTransition) before using.document.startViewTransition(). Unlike CSS transitions which require predefined start/end states, the View Transitions API automatically handles the animation between any two states. This dramatically simplifies transition logic in frameworks — no more complex animation libraries for basic page transitions.<meta name="view-transition" content="same-origin"> tag to both pages. The browser will then automatically cross-fade between them. For more control, you can use CSS to customize the transition or add view-transition-name to elements on both pages for element-level morphing. This works without any JavaScript.view-transition-name, there can be a slight memory overhead. Best practice: only assign view-transition-name to elements that actually need to morph (typically 1-10 elements per transition), and keep transitions under 500ms for the best user experience.if (typeof document.startViewTransition === 'function') { /* supported */ }. This returns true for browsers with SPA transition support. For multi-page support detection, check if the @view-transition CSS at-rule is recognized. Always wrap your transition code with this check and provide a direct DOM update as fallback for unsupported browsers.document.startViewTransition() method returns a ViewTransition object with a skipTransition() method. Call transition.skipTransition() to immediately finish the transition without animation. The object also has ready, finished, and updateCallbackDone promises for fine-grained control over the transition lifecycle. This is useful for handling rapid successive transitions or user interruptions.See your current page load broken down into DNS, TLS, request, and DOM phases. Understand where time is spent.
See your current page load broken down into DNS, TLS, request, and DOM phases. Understand where time is spent.
Write JavaScript using element.animate() and see the result in a live preview. Compare with CSS keyframes. Debugger included.
Create an animation that advances with scroll using animation‑timeline: scroll(). See the visual timeline editor. Modern CSS.
Create a 'drawing' effect for any SVG path. Adjust speed and delay. Copy the CSS and SVG code. No JS needed.
Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Compare all CSS easing presets side by side on a bouncing ball. See which curve fits your UI animation.
Query the permission state of camera, microphone, geolocation, and more. See the response and learn the API.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Toggle a screen wake lock to prevent the device from dimming or sleeping. See the lock state and learn the API.
Decode an image progressively using the ImageDecoder API. See partial results and metadata. Modern alternative to <img>.
Decode individual video frames from a local file using the VideoDecoder API. Step through frames. Cutting‑edge browser feature.
Experiment with the Federated Credential Management API. Simulate a sign‑in flow without third‑party cookies. Privacy‑first.
Request HID devices and list them. Read input reports and send output. For custom hardware and controllers.
Demonstrate how the Web OTP API automatically reads one‑time codes from SMS (mobile). Simulation with a fake SMS input.
Acquire and release locks across tabs. Prevent race conditions in IndexedDB or localStorage. Visual queue and lock state.
Connect a gamepad and see all button presses and axis movements visually. Check that every input is detected correctly.
Trigger different vibration patterns on mobile devices. Test if your phone supports haptic feedback. Simple demo.
See your device's battery level, charging status, and discharge time using the Battery Status API. Fun utility.
Check current screen orientation and test the lock API. Useful for mobile web apps. Demo with code.
Test the Fullscreen API: request fullscreen on a colored div, detect changes, and copy the JavaScript boilerplate.
Test the new HTML popover attribute for creating accessible tooltips, menus, and dialogs without JavaScript. Copy code snippets.
Experiment with the Async Clipboard API: read/write text and images from the clipboard. Verify permissions and see demo code.
Test the Web Share API by sharing text, links, and files directly from the browser. Check compatibility and see example code.
Enter an API URL and quickly check its HTTP status code and response time. See response headers and body. Browser fetch.
Pick a method, URL, headers, and body, then send an HTTP request directly from your browser. Debug APIs easily.
Create a pure CSS countdown timer with a flipping number effect. Adjust duration and style. No JavaScript needed for display.
Create a glowing or rotating border animation around an element. Copy the CSS keyframes. Pure CSS magic.
Paste a Kanji and watch it drawn stroke by stroke with numbered sequence. Excellent for learners. Static data set.