Learn how to build
modern user interfaces
for the web
High-quality videos, a private Discord server, and enough reference code to help you make the web what you always dreamed it could be.
Welcome to Build UI.
Framer Motion Recipes
Add beautiful animations to your React apps using Framer Motion.
Learn the basics of state-based animation with Framer Motion.
Add animation to unmounting elements using the versatile AnimatePresence component.
Use scroll-based animation to smoothly grow and shrink a fixed header.
Add a fading nav and a blurred background effect by extracting a reusable Hook.
Learn how to use the `x` shorthand property to smoothly animate an image container.
Use an animated aspect ratio to create a navigation bar inspired by iOS Photos.
Use measured height to resize a panel with dynamic content.
Data fetching with React Server Components
See how this exciting new primitive simplifies your data-fetching code.
Use Prisma to fetch data directly inside of a server component.
Use query params to paginate the list of users.
Use Prisma's count function to build out the pagination area.
Adding client-side interactivity
Use a Client Component to respond to a user typing in the search field.
My first Remix app
Learn the essentials of this popular React framework by building a personal work journal app.
Create a brand new Remix project and add tooling for TypeScript, Tailwind and Prettier.
Build the frontend form and define an action for our first user flow.
Set up Prisma and SQLite to persist our dynamic data.
Improve our form's UX with validations, default values, and a styled pending state.
Use our homepage's loader to render dynamic entries from our backend.
Map and reduce our dynamic entries into weekly groups using the date-fns library.
Create a reusable form component that can be used for both adding and editing entries.
Learn Tailwind CSS from scratch by building a pixel-perfect Discord clone.
Get acquainted with Tailwind's utility-first approach by building a custom message component.
Use Tailwind's Flexbox utilities to make an application layout with fixed and flexible panels.
Choose which Flexbox panels should scroll when their contents overflow their container.
Learn best practices for overriding and extending Tailwind's default colors with your brand’s palette.
Override the default typeface used by Tailwind with an imported font.
See how to maintain a utility-first workflow when styling icons by working with inline SVG elements.
Generate a one-off corner transition using the Just-In-Time engine.
Conditionally apply classes to target different application states.
Use groups to style child elements based on an ancestor's pseudostate.
See how a reusable component removes duplicate classes without the need for a CSS architecture.
Customize Tailwind's shadows to recreate Discord's floating header.
Learn how to use spacing and group utilities to style a list of dynamic items.
Map over JSON data to dynamically build up the channel list.
Use nested router segments to build an active channel link.
Style a channel's unread state using a simple pattern to improve readability.
Use React state and Tailwind transitions to animate a collapsed category's icon.
Use the truncate utility to control which panel grows or shrinks based on the available space.
Learn how to work with @tailwindcss/forms to recreate Discord's search box.
Extract two versions of our component from Lesson 1 to render each channel's messages.
Round out the app by replacing the remaining static text and links with dynamic data.
Use Tailwind's mobile-first responsive utilities to customize the interface on small screens.
4 months ago15:47
See how to make truly reusable UI components with forwardRef and prop forwarding.
5 months ago16:37
Learn how to use `react-hooks-global-state` to maintain ephemeral application state.
5 months ago26:30
Use the screen width to seed some React state in a way that's robust to server-side rendering.
Watch us on
Buy a lifetime membership
Get all current and future premium Build UI courses, forever.
We create courses for developers obsessed with pixel-perfect details and modern user interface engineering.
If you've ever cracked open the devtools to inspect Stripe's hero section, implemented a live buffered timeline like Twitter, or recreated your favorite iOS animation in React, Build UI was made for you.
Watch everything, forever.
What you'll get when you join
Full access to all Build UI videos
Get full access to all of our current and future premium video content.
Ask questions and get answers from Sam, Ryan and other pro members.
Video summaries with code snippets
Easily reference videos with text summaries and copyable code snippets.
View the source code for every video right on GitHub.
Invoices and receipts
Get reimbursed from your employer for becoming a better coder!
Meet the team
Hey! We're Sam Selikoff and Ryan Toronto, and together we've been teaching frontend development for over eight years through our podcast, in-person trainings and conference talks, videos on Egghead and EmberMap, and more recently on our YouTube channels.
Check out our existing resources if you're hungry for more frontend content!
Frontend First Podcast