[HN Gopher] Show HN: Motion One - New animation library, built o... ___________________________________________________________________ Show HN: Motion One - New animation library, built on the Web Animations API Author : SirHound Score : 231 points Date : 2021-09-22 13:27 UTC (9 hours ago) (HTM) web link (motion.dev) (TXT) w3m dump (motion.dev) | yunusabd wrote: | Very nice! I recently updated my website traveldays.com with an | SVG path animation. The effect is bound to the scroll progress. | It looks like you don't support scroll animations (yet)? | | I looked into anime.js and GSAP, but in the end I went with the | naive approach of just updating the animation in js. It works | well on mobile, but when scrolling with a mouse the animation | could be smoother. | SwiftyBug wrote: | Here's a HN thread on traveldays.com: | https://news.ycombinator.com/item?id=28617541 | SirHound wrote: | Yet indeed! As someone who has always built animation libraries | based on rAF, this project has been a nice change of pace to | limit myself to WAAPI. And I want to continue that with making | other browser APIs easier to use, which will include the | upcoming ScrollTimeline. Doing this should solve the smoothness | you describe, it's not great with sync JS in some browsers. | beebeepka wrote: | Last time I had to deal with lots of animations, I used tweenjs. | Granted, that was a long time ago. Didn't even know about the Web | Animations API. Thanks. | | Bookmarked | [deleted] | jansan wrote: | The "pay to source" is an interesting approach. I am not sure | what my opinion is, but I will follow closely if this model will | get used more often in future. Also, I would actually consider | paying for this if I was in need of an animation framework at the | moment (so maybe I do have an opinion?). | andrewnc wrote: | The website hijacked the "back" functionality of my browser. Not | a fan of that. | SirHound wrote: | That's not intended at all - which page were you on when you | tried to go back? What did you use to go back (back button/key | shortcut)? I can't imagine what is doing it but will fix. | | Another poster has pointed out the play button in examples | (which reloads the sandbox iframes) is pushing pages to the | browser history. I'll take a look. | gugagore wrote: | Could it be used with Theatre.js | (https://github.com/ariaminaei/theatre) posted a few days ago? | ex3ndr wrote: | Very cool! But can you add more examples with blocking JS or | layout threads? I am asking because I have been testing to | achieve this and performance really depends on the browser and | not all browsers are performant when using WAAPI. | cdubzzz wrote: | Looks very interesting -- it would be nice to have more | playground/demos. Both of the front page and in the documentation | (like what is on the Quick Start page, essentially). | benatkin wrote: | Here's the contents of the npm module: | https://unpkg.com/browse/motion@10.0.1/dist/ | | Given that the repo is private, I wondered if only the compiled | version would be available. Looks like the published source is | split up into multiple files, so this is a bit different from | Mattermost, where the MIT license only applies to the compiled | version: https://github.com/mattermost/mattermost- | server/blob/master/... | SirHound wrote: | That's an interesting approach but no the MIT license applies | to everything and I don't want to stop anyone from knowing what | they're installing and distributing. Github access is more of a | convenience perk for sponsors at this early stage. | SirHound wrote: | Hi HN! | | I'm Matt, author of Framer Motion and Popmotion. Today I'm | launching my new side-project, Motion One. | | It's a new animation library built on the Web Animations API | (WAAPI). I actually started this project as a book, but | repeatedly found myself explaining some odd concepts (like fill | mode) that I felt quite strongly that users shouldn't have to | care about. I also discovered the state of WAAPI's implementation | is very inconsistent across browsers despite green lights across | caniuse [1]. | | Motion One smooths over these inconsistencies and adds an | opinionated API that makes it easier to use [2]. In addition, it | adds all the features you'd want from a modern animation library, | like a timeline, independent transform animations, and soon, | springs. | | Being built on WAAPI means you also get hardware accelerated | animations in a bundlesize thats around half that of Anime.js and | a fifth of Greensock [3]. | | Feedback and suggestions are welcome! | | [1] https://caniuse.com/web-animation [2] | https://motion.dev/guides/waapi-improvements [3] | https://motion.dev/guides/feature-comparison | neolander wrote: | What's the difference between this and something like Framer | Motion? | SirHound wrote: | Framer Motion is very high level, declarative API. It works | out when to fire animations based on state and gesture | changes. It also has a very advanced layout animations | engine. | | This is more of a classic JS library like Greensock or | Popmotion where you say when you want to fire animations. I | do want to move into declarative animations too but this is | just the first release. | lbotos wrote: | You mention here and on the homepage you are the author of | Framer Motion and Popmotion but in neither place are there | links to those projects. I'd love to check them out so if they | still exist it may be worth making that text on the homepage a | link? | oefrha wrote: | To be fair, Framer Motion and Popmotion are really big names | in the web animation space, so it is probably safe to assume | most people with even a passing interest in the past few | years will have heard of them. | hezag wrote: | 1 - https://www.framer.com/motion/ | | 2 - https://popmotion.io/ | SirHound wrote: | Ah apologises I just wanted to reduce the number of "off | ramps" and as the other comment says, I am sort of assuming | that people might be familiar with them but indeed they might | be more fitting to your project (Popmotion if you want very | low-level JS animations that just outputs values and Framer | Motion if you want a high level React library that handles | gestures and layout animations) | | But hezags comment below has kindly provided the links. | seph-reed wrote: | I'm confused about what this does above & beyond css | animations/transitions. | cyral wrote: | https://css-tricks.com/css-animations-vs-web-animations-api/ | SirHound wrote: | Imperative JS libraries are more convenient to schedule and | dynamically generate animations, but above and beyond that | this offers timeline sequencing for long animation | orchestration, independent transform animations, and will | soon offer spring animations. | | Edit: And that CSS Tricks article covers more stuff well. | wcarss wrote: | This looks _really_ nice! | | 2 bits of feedback: | | - hitting 'play' on your site's demo animations is adding | pageviews to my history, which made getting back here to leave | feedback unusually tough :) | | - for some reason, even the basic demo animations on your site | have BIG delays/stutter -- every one of them, every time I play | them. For context, I'm running Chrome 93.0.4577.63 (Official | Build) (x86_64) on macOS Mojave 10.14.6 on a 2018 MBP, and have | ~60 tabs open. | SirHound wrote: | 1. Thanks for pointing out the play button bug - I'll look | into how I can stop that. | | 2. That is really odd. I'm on a similar machine with no | problems. Are these the same demos with the iframe or do you | also have problems with the homepage? | wcarss wrote: | oh interesting! I didn't realize they are iframes -- the | homepage ones (e.g. the hero animation, the scale | animation, the hardware-accel one) all seem fine, even | right after pageload. It's the iframe demos that have the | stutter/jump issues. | | I also just noticed my mac is a bit slow across the board | right now, so it may be my own issue, a bad case of | "uptime-itis" that can only be solved by a restart. | SirHound wrote: | Just pushed a fix to the browser history bug, thanks | again for pointing it out. | Guidii wrote: | Hi there Matt - this looks like an amazing library - thanks for | posting. | | I'm part of the Blink Animations team that work on WAAPI (along | with a bunch of folks from other browsers), and wanted to touch | base on a few of the issues you raised. | | First, I agree that fill behavior[1] is messy, and should | probably be considered to be a spec bug. Moving web | specifications forward often involves "compromises" to ensure | that new functionality works alongside existing work, and this | is a good example of that. There's a discussion on this at | github.com/w3c/csswg-drafts/issues/5394. | | You raise a few issues with the current | implementation/compliance/interop. Getting compliant and | consistent implementations of the spec is critically important, | so appreciate your feedback on this. I'm seeing two items that | (might) relate to chromium here: individual transforms[2] - | agree that this is important - currently working on it - see | crbug.com/696374. Note: You can already get some of this | working using composite:add. .finished Promise[3] - mostly | working in chromium AFAIK, with one minor glitch - | crbug.com/1141935 If there are other chromium issues we'd love | for you to file them (use Blink>Animation component so they | land on our triage). Other browsers look for feedback as well - | there's a good guide/walkthrough at https://web.dev/how-to- | file-a-good-bug/ | | On the topic of browser compliance, you cited caniuse.com, | which is a good starting point. More detailed tracking can be | found at https://wpt.fyi/results/web-animations - might be more | detailed than you're looking for, but this is what our team | measures against. | | Some of your suggestions relate to the spec. Durations as | seconds[4], and Simplifying cubic bezier definitions seem | fairly straightforward, while others like cancelling and | interrupting might be a little more complicated. In any case | you can file issues against the spec if you want to move those | forward - https://github.com/w3c/csswg-drafts/issues, tag with | [web-animations-2]. | | To reduce the challenges of adopting the new API, there's a | published polyfill that you seem to be using already. You noted | that there's some inconsistency with keyframing across browsers | - perhaps you could file an issue against the polyfill? | | Cheers! | | [1] https://www.w3.org/TR/web-animations-1/#fill-behavior [2] | https://motion.dev/guides/waapi-improvements#individual-tran... | [3] https://motion.dev/guides/waapi-improvements#finished- | promis... [4] https://motion.dev/guides/waapi- | improvements#durations-as-se... - this might already be | addressed through CSSOM? [5] https://github.com/web- | animations/web-animations-js [6] https://github.com/web- | animations/web-animations-js/issues | SirHound wrote: | Hi Guidii! | | I think it's fair enough that there's "spec bugs" and | understand the constraints you/they were working in trying to | cover both CSS transitions/animations. I prefer browser APIs | low level enough to build opinionated libraries around! | | Individual transforms for me doesn't go far enough, I haven't | been involved in spec discussions but I'm surprised they | stopped at transforms and not axes. Think throwing an element | - x/y would want different animations based on the gesture | velocity. I'm not sure composite works well with transform as | its order-dependent, the behaviour is itself not well | supported cross browser, though maybe composite+individual | transform offers promise in the future. | | On the state of implementation in general, I am using this | project to file bugs to help get some eyes on WAAPI and so | far I've opened 4 in Webkit and none in Blink so there's no | worries there :) | | Thanks for wpt.fyi - I have bumped into it but I should use | it to pre-empt some of these bugs. | | The polyfill is just for running tests in Jest. It's actually | a little beaten up in terms of implementation and this has | worked quite nicely as Chrome even in modern phones seems to | not support finished so its helped my polyfill(er)s target | those bits too. | | Thanks for reaching out, I appreciate it. | RobLach wrote: | Nice website. | tartoran wrote: | What Im getting is: | | Application error: a client-side exception has occurred | (developer guidance). | SirHound wrote: | That's weird, what browser/device are you on? | tartoran wrote: | Safari on IOs | [deleted] | flixic wrote: | In many cases, "animations on the web" has become Lottie | animations. Or, at least, Lottie raises the bar for animation | expectations. | | I'd love to see two things: | | - A decent free or one-time payment editor for Lottie (don't make | me use AfterEffects) | | - Perhaps a Lottie implementation using Web Animations API, if | that is even possible. | swlkr wrote: | I think sponsorship to access the github repo is smart. | | This is similar to what the alpinejs creator did with his | "sponsorware" approach. | | The animations api looks very simple as well, will definitely try | it out! | jaredchung wrote: | How exactly does that work with the MIT license? If someone | sponsors and gains access to the repo, they're permitted to | fork and redistribute the code, right? | jamestanderson wrote: | Nothing in the MIT license prevents you from doing that. But | the author could disable your access to the repo any time, | and once that happens, your fork would be forever out of date | I'd expect. | | Of course, doing so would make me question why the author | released this under a permissive license to begin with. | SirHound wrote: | I'm not looking to block anyone. I want this to be open. | And I don't want a confusing license. The code is pretty | unobscured on npm so its less convenient but the source is | free for anyone who can be bothered to go that route. | | My reasoning is more that this is my side project, and I | have limited time, and this seems like a good experiment to | see if I can make OSS sustainable for once and also allow | me to target help (my free time) towards users who are most | invested in the project. | | In the future I would like to open the repo but it might be | tied to hitting a sponsorship amount or perhaps an extra | service/product on top for those that want it. | SirHound wrote: | Yeah that's fine. But repo access is more a convenience | upsell, you can always get the source code (or pretty close | transpiled code) from the npm distribution. | mritchie712 wrote: | Also, once I npm install, what prevents me from using that | code? | SirHound wrote: | Nothing, its MIT, go wild :) ___________________________________________________________________ (page generated 2021-09-22 23:01 UTC)