Whimsical Animations

15 min read Original article ↗

Learn how to create charming interactions and delightful touches using the magic of CSS, JavaScript, SVG, and Canvas.

I’m sharing all my tricks in this one!

Join the waitlist to learn more. I’ll share sneak peeks, and you’ll be able to register for the course early:

No spam, no nonsense. Unsubscribe at any point.

Creating top-tier web animations is not easy.

I remember being frustrated by this. I would see these incredible animations online that seemed like . They were so far beyond the basic CSS transitions I understood. I didn’t even know where to start.

Over the course of many years, I built the missing skills I needed, piece by piece. I learned how to use SVG and Canvas to create dynamic illustrations not otherwise possible with HTML. I figured out the dozens of niche techniques needed to do the really cool stuff. And I learned how to design animations and interactions so that they actually the user experience.

And now, I want to teach you how to do all of that stuff too. 😄

Whimsical Animations is an online course. It’s not a typical video course; you’ll build practical skills by experimenting, solving problems, and creating your own delightful animations. It’s not like any other course you’ve taken before (unless you’ve taken one of my other courses, in which case, it’s the same sort of deal).

Animations are surprisingly importantsurprisingly important. It may seem a bit superfluous, but there’s a reason why companies like Apple and Stripe put so much effort into this stuff. In this course, I’ll teach you a set of skills that very few web developers have and that tons of companies need.

If you’ve ever wondered how I built something, there’s a very good chance we cover it in this course. I’ve picked up so many spectacular tricks and powerful techniques over the years, and I can’t wait to share them with you! ✨

Josh’s courses have helped developers from

TheCCuurrrriiccuulluumm

Part IParticle Effects

Particle effects are like a cheat code. They add so much charm to our products, and you don’t need to be an expert designer in order to make effects that feel lush and polished. ✨

In the first part of this course, you’ll learn how to create dynamic, procedural particle effects like this:

(TapClick the heart to generate some particles!)

I love particle effects, but this module is about so much more. I’ll show you a dozen core techniques I use in just about every animation/interaction I create.

To truly create next-level animations, we’ll need to go far beyond basic CSS transitions, borrowing techniques from game development and graphics programming. I’ll show you how to use things like linear interpolation and trigonometry to unlock new capabilities, and share the tricks I’ve come up with on my own over almost two decades of experience, things I’ve never seen anyone else talk about. 😮

We’ll also look at:

  • Evaluating the performance of our animations, and how to diagnose/fix framerate issues.

  • Building accessible experiences that don’t trigger motion sensitivities, while still building top-tier experiences for everyone.

  • The little details that take basic animations to the next level.

  • How to port our vanilla CSS/JS particle implementation to component-based frameworks like React.

Part 2The Magic of SVG

SVG is such a cool technology. It’s like an alternate-reality version of HTML, but focused on illustration instead of documentation. SVGs are first-class citizens in the DOM, which means we can select and modify individual shapes using JavaScript and CSS!

One of my favourite things to do with SVG is to create animated icons with micro-interactions, like these:

(Click each icon to view the effect.)(Press and hold the icons.)Focus each icon, then press and hold “Enter”.

I’ll show you everything you need to know to build these sorts of effects, but that’s really only the tip of the iceberg. You’ll also learn how to create:

  • using SVG strokes.

    There are a bunch of examples of this on this page!

  • Lovely data visualizations without any graphing libraries.

  • Big, splashy “tech startup” effects, as seen on landing pages from companies like Stripe and Vercel.

  • Ridiculously smooth motion using spring physics.

In addition to the vanilla CSS/JS we use throughout this course, I’ll also show you how to use SVG in a React context, using my two favourite React animation libraries.

Part 3Advanced Interactions

My blog features a “Like” button that keeps a close eye on the user’s cursor. 👀

Instead of a typical :hover state, we track the user’s mouse position and compare it to the icon’s on-screen position. The heart tilts towards the cursor while the eyes slide over, as though it was curious about our cursor. This is the sort of advanced interaction that we cover in this part of the course. ✨

This sort of pattern isn’t just useful for googly-eyed personified icons. We can do all sorts of cool stuff in response to user input, based on their cursor position, scroll position, press duration, and more. There are several examples on this very page!

In this part of the course, we cover:

  • How to add

    dynamic cursor interactions

    with getBoundingClientRect.

  • How to respond to scroll events using modern CSS and JS (Scrollytelling!).

  • Animating on route change with the

    View Transitions API.

This part of the course is also jam packed full of neat tricks. I’ve figured out a lot of cool interaction techniques throughout my career, and I’m assembling them all here! It’s a treasure trove of novel mechanisms you can start using in your own work.

Part 4Working with HTML Canvas

On my blog’s homepage (opens in new tab), I have this big interactive rainbow:

For stuff like this, SVG isn’t quite up to the task; there are too many things moving at the same time. This is a job for .

Canvas is a great tool for maximalist, over-the-top animations with hundreds of moving parts. Instead of npm installing the same boring confetti effect that everyone else uses, I’ll show you how we can create your own totally unique celebratory effects, from interactive rainbows to procedural fireworks and beyond.

We’ll also cover:

  • When to use Canvas and when to use SVG.

  • How to optimize performance with Web Workers and OffscreenCanvas.

  • The magic of immediate mode rendering and the cool tricks we can do as a result.

  • Using physics libraries to make our animations feel organic and tactile.

  • How to use and Perlin noise to enhance our animations.

A big poofy pufferfish, swimming along

BonusAnimation Design

Learning how to implement animations is only half of the battle. Unless you have the rare privilege of working with a motion designer, you also need to know how to design animations.

We cover animation design principles throughout the main course, but in this special bonus module, we go even deeper. I’ll show you how I come up with animation concepts from scratch, and teach you the principles I follow to make sure that my animations feel good.

With great power comes great responsibility. I share a ton of animation techniques in this course, and in this bonus module, I’ll show you how to avoid making obnoxious animations that annoy the end user.

We’ll also cover a bunch of other stuff, including:

  • How to create swoops and abstract shapes in vector design software.

  • How to orchestrate animations so that they make sense in sequence.

  • Advanced animation design concepts, like animating based on the user’s action rather than the current state.

BonusAnimation Challenges

In addition to the dozens of exercises scattered throughout the course, this special bonus module includes a bunch of extra challenges. I’ll show you a clip of a super-cool animation, and your job is to use the concepts taught in the course to build it!

For example: using the particle skills you learned in Part 1 of the course, you’ll be asked to implement this Kirby-inspired particle effect:

Each challenge includes my own solution, so you can see exactly how I’d do it and compare it to your own approach. Some of the challenges will be open-ended, with an emphasis on curiosity and experimentation!

Becoming truly proficient at animation requires a lot of practice, and my goal with this course is to provide a ton of practice opportunities. ✨

Whimsical Animations will be released sometime in 2026. If you’d like to be notified when registration opens, you can join the email waitlist!

In addition to being informed when registration opens, I also plan on sending some free goodies leading up to the launch, including some bonus animation content. 😄

You can sign up here:

No spam, no nonsense. Unsubscribe at any point.

I’ve spent my career working as a software engineer at organizations like Khan Academy, DigitalOcean, Unsplash, and many others. I also spent years teaching web development fundamentals at Concordia University, here in Montreal. In 2020, I left my job as a Staff Software Engineer to focus on developer education full-time.

This is my third course, after CSS for JavaScript Developers (opens in new tab) and The Joy of React (opens in new tab). I’m proud of both of those courses, but this one is really special. This is the course I’ve been waiting to make. ✨

In Whimsical Animations, I’m opening up my war chest and sharing all of the tricks and techniques I’ve built over nearly two decades of building websites and web applications. This stuff isn’t part of the typical front-end developer’s toolkit, and you won’t find in any other course.

Here are some fun facts about me:

I’ve been obsessed with creative web animations since I started tinkering with web development back in 2007. I’m so excited to finally be sharing how all this stuff works with you!

What happened to the registration? I thought this course was launched!

In late September, 2025, I did an “early access” launch. For a week, registration was open, with the understanding that the course was only half completed. This early cohort will be providing feedback about the course as it develops, ensuring that it’s polished and ready to go for the full launch.

Unfortunately, I’m not currently accepting any new registrations. The next opportunity to sign up will be when the course launches in full, sometime in 2026.

How much experience do I need to take this course? What are the prerequisites?

This course assumes that you’re comfortable with the basics of HTML/CSS/JS. You definitely don’t need to be an expert, but you should understand how to style an HTML element using CSS classes, how to use setTimeout in JavaScript, stuff like that.

You don’t need any experience with JavaScript frameworks like React. This course focuses on fundamental animation techniques in a vanilla context. There are some extra lessons that show how to apply these techniques in a component-based context like React, but they’re entirely optional and separate from the main course content.

Is this a video course or a text-based course?

My courses use a mix of different content types, developed using my own custom course platform. There are interactive articles (similar to what you’d find on my blog), bite-sized videos, challenging exercises, and even a couple of mini-games. 😄

Different formats have different strengths. For example, videos are great for sharing processes or demonstrating visual things, but you don’t really build lasting skills by just watching videos, so they need to be paired with opportunities for experimentation and practice.

Also, I think this format is great because it keeps things fresh and engaging. I’ve found that it’s so easy to zone out after 10-15 minutes of a video, so I try to keep the videos short and interspersed with other content.

What if I’m not happy with the course? Can I get a refund?

Absolutely! I have an unconditional 30-day refund policy. If you register for this course and discover that it’s not a good fit for you, for whatever reason, just shoot me an email and I’ll refund your purchase in full, including credit card transaction fees and sales tax. Every cent you paid.

Do you support Purchasing Power Parity (PPP)?

Yes! If you reside in a country with significantly lower purchasing power like India or Brazil, you'll be given the option to purchase a “regional license” at a discount.

To see what the available rate is in your country, please check out one of my other courses, like The Joy of React (opens in new tab). You should see a yellow box under the “Register Now” button.

Is there a time limit? How long do I have access to the course for?

There’s no time limit! It’s a one-time purchase, not a subscription. When you register for one of my courses, you’ll have access to it for many years to come, and you’ll even receive all future updates for free! 😄

Is this course still relevant in the age of AI?

LLMs are undeniably powerful tools, but I remain extremely skeptical that they’re on the verge of making human developers redundant. I make the case for this belief in my blog post, The Post-Developer Era (opens in new tab).

In my own work, I use Cursor along with a variety of AI models, and there are definitely times where it feels like magic, with the AI reading my mind and generating exactly what I was hoping for. But this doesn’t really happen with animations. 😅

It can handle basic CSS transitions, sure. But for the stuff I like to build, the bespoke and novel details like the ones scattered across this page, AI really struggles. Unless you tell it exactly what to do, almost line by line, you’ll wind up with a super generic and underwhelming animation, if it works at all.

I don’t really think you need to worry about AI taking your job as a front-end developer, but if you are worried about that, I think it makes a lot of sense to specialize in something like animations.

Can I purchase multiple licenses, for my team or group?

Certainly! I have a special team checkout flow you can use to easily purchase and distribute licenses to your team.

I also provide a bulk discount, depending on the number of licenses, of up to 20%.

Is there a student discount?

There is indeed! We can offer a 20% discount for students who can show proof of enrollment. This discount can be combined with regional licenses, as well as with sales and launches.

To qualify, you must be enrolled in a full-time or part-time educational institution. We accept students from high school, college, university, trade school, and coding bootcamps. The main restriction is that you must be currently enrolled, it can't be something you've already graduated from. And it can’t be a self-paced online course.

When the course is available for purchase, you can send proof of active enrollment to support@joshwcomeau.com. This can be anything from a student ID card, to registration paperwork. If you have an email address from an academic institution (eg. an .edu domain), sending us an email from that address is sufficient proof.

Can I purchase a bundle that includes Whimsical Animations and your other courses?
Are the videos captioned?

Yes! All videos are captioned in English, by a human who makes sure they’re clear and accurate.

Can I pay in installments?

I’m afraid this isn’t something I currently support, sorry! It’s something I do hope to offer at some point, but there are a variety of technical and bureaucratic reasons that make it much more difficult than I expected.

If you check out with PayPal, it may be possible to split your payment in 3 or 4 installments, but this feature is only offered in certain regions, and based on the whims of PayPal’s inscrutable logic.

What if I get stuck? Can I ask questions?

Yes! We use a private Discord for our online community, and you’ll be able to join after you register for the course. It's a very vibrant place — thousands of students have joined. During the Early Access launch, I plan on spending a few hours each day in Discord, answering your questions and hanging out. So you’ll definitely be able to get some help!

The community is moderated according to our Code of Conduct (opens in new tab).

Do you offer a certificate of completion?
Will I receive a receipt or invoice? Can it be customized?

Yep! After purchasing, you’ll receive an email with a link to both a receipt and an invoice. They can both be edited to include any information you need for reimbursement (eg. company name / address, VAT info…).

If your employer requires an invoice or price quote before a purchase is made, please reach out (opens in new tab) and we’ll do our best to accommodate your request.

Is the course available in “light mode”?

Yes! The course is available in both light and dark mode.

I think I’ve gotten this question a few times because the landing pages for my course, like this page, are all dark. But please rest assured, the course itself has a light mode.

Can I gift the course to somebody else?

Yep! When the course is released, you can use the "team checkout" flow to purchase a single license and assign it to the recipient.

I have a question not listed here!