Jump to content


  • Posts

  • Joined

  • Last visited

About Chris7777

Contact Methods

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Chris7777's Achievements

  1. I just wanted to loop back with a little more info in case someone hits something similar. On the latest MacOS + Safari Tech Preview the jank is less noticeable. Chrome, Safari and FF it's still apparent. Some reading suggests it's related to MacOS' implementation of Promotion (adaptive refresh rate). I've tried setting the monitor to a fixed 60hz with not much luck. But some comments are suggesting that the browsers need to apply a fix, as its a software issue potentially related to browsers not using Promotion correctly. Threejs has an issue that is almost the same as mine as far as description: https://github.com/mrdoob/three.js/issues/21088 That user has the same occasional, but regular jump. There is a related Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1164435 (linked from the threejs issue) I do feel its some combination of OS + refresh rate, and hopefully it naturally resolves itself in a couple of versions of the browser 🤷‍♂️
  2. Thanks Jack. I figured it would be a tricky one but thought it wouldn't hurt to throw it out there just in case someone else had hit something similar in the past. Cheers
  3. I have a bit of a stutter problem. I would say its subtle but its noticeable. See video (from 2s to 5s is probably most apparent). Obviously hard to capture on video esp. with YouTubes compression, but I think the horizontal stutter is clear Testing devices: It appears only on Mac devices from my testing so far. I have tested two Macbooks: - a 2021 Macbook Pro M1 32GB and a 2016 Macbook Pro Intel 16GB. It occurs on all browsers including Chrome, FF and Safari. PC seems fine. Tested on both an external monitor and laptop retina. Someone suggested a vsync issue, but I see no obvious issues on https://www.vsynctester.com/ (warning that link is intense for anyone with sensitivity to color change/movement) Profiling Profile performance doesn't show anything too obvious, GPU is mostly idle. https://drive.google.com/file/d/1JGSr6V88uxXO2a2HhVAMtPE4TCqrGRQ_/view?usp=sharing Alternatives: I have tried forcing the element on to its own composite layer and other various tricks available like "transform: translateZ(0)", "will-change: transform;", etc Other frameworks: Out of interest, I have also tested a few other frameworks: - Phaser3 + physics movement (canvas): Does show similar stutter - Phaser3 + non-physics movement (canvas): Does not show stutter - Pixi (canvas): Does not show stutter - Godot web export (canvas): Shows stutter unless I enable a fixed target FPS of 60fps Obviously hard to really compare because they are canvas. However I found it interesting that Phaser sometimes showed it, making me think its some kind of delta step issue? Am I misusing the delta in my example above? Summary: Apologies about the wall of text, I just wanted to show I have tried exploring as many options as possible and have exhausted my ideas. I think there is a fair chance this isn't a specific GSAP issue, but I have been knocking my head trying to narrow it down the root cause and hoping someone here may know, being you are much closer to the performance side of browser behavior.
  4. Cheers Jack! No worries about the typo's, 90% of my bgus bugs are spelling mistakes... Thanks for the extra approaches there, makes sense. I'll adjust my snippet to match up - always good to know of some alternatives. My pleasure, easily the most "bang for buck" paid software that I use.
  5. Thanks again @Visual-Q . I had a play with that approach and got something going that works in my particular use case: https://codepen.io/chrisk7777/pen/xxgdRbM?editors=0010 const DevTools = (() => { let instance = null; return { scrubber: (animation) => { if (instance) { instance.kill(); } instance = GSDevTools.create({ animation }); } }; })(); // Usage const t = gsap.fromTo(".grey", { rotate: 0 }, { duration: 1, rotate: 360 }); DevTools.scrubber(t); // Or an id
  6. Nice one Visual-Q. I'll have a poke around and get back with an update using that approach
  7. Hi, Two queries about the GSDevTools. Query 1: Easy one to start with. When using the CodePen linked on the GSDevTools page (with the 3x sliding boxes). https://codepen.io/GreenSock/pen/MEYdxr?editors=0010 I experience two issues - the dropdown doesn't show the currently selected tween and when selecting "grey" it actually shows the orange tween. Is this normal / expected? I'm probably just misunderstanding something... See video attachment Query 2: What is best approach to using dynamically generated tweens with GSDevTools. I have boiled it down to a very basic case here: https://codepen.io/chrisk7777/pen/rNjyvwp?editors=1010 `updateList` is undocumented, and I don't think I'm using it correctly. I tried recreating the GSDevTools after each button click, but that also errors out with _.dur is not defined. Is there a preferred way to using GSDevTools with tweens that are built on the fly? Thanks! Screenshot-20210402-173950.mp4
  8. Thanks @ZachSaucier ! I just wanted to double check before going down the wrong track. Makes sense regarding performance, something I had not* considered. Cheers! Chris
  9. Hi all, This is a minor question, so no urgency. Is there a way with the GSDevTools to alter tween values without refreshing? For example, in this demo GSAP CodePen if I wanted to see the impact of .grey completing at `x:300` instead of `x:700` I would need to alter the code, refresh, and (potentially) loose any other state such as the playhead position. Context: I need to construct an animation with lots of small finicky deltas. About a dozen separate parts with lots of minor movements (almost like skeletal animation). Alternatively, I'm thinking I could possibly rig up dat.gui (https://web.archive.org/web/20200227175632/http://workshop.chromeexperiments.com:80/examples/gui/#1--Basic-Usage) to expose particular variables and feed that back in to gsap but if there is a built in solution that would be much preferred and probably less fiddly that dat.gui. Cheers!
  10. Hi @GreenSock - I'm not the OP but this helped me track down an identical issue (production only issue with React). I'm going to jot down some notes in case others hit something similar. My setup: React + TypeScript + Webpack4 using ts-loader with default settings. gsap 3.0.5 Like most things Webpack its really difficult knowing what is going on under the hood, even after reading the documentation (https://webpack.js.org/guides/tree-shaking/) I can't confidently say if Webpack4 does tree shaking or not. By following the advice by Jack in my app's entry file, I was able to force CSSPlugin to remain available: import { gsap } from 'gsap' import { CSSPlugin } from 'gsap/CSSPlugin' // Force CSSPlugin to not get dropped during build gsap.registerPlugin(CSSPlugin) This was done just once (in my entry file) and then all child modules/components were able to successfully use it without issue.
  11. Chris7777

    React and GSAP

    @axe-z - not sure if you mean my example when you say "the previous example". It's a shame they are you driving you nuts, I simply put them up to try to help other people correctly set up React with Greensock. Regardless - I updated my codepen with a R16 version: It should be noted I did nothing but update the cdn links - no code changed for it to work with R16. You might be talking about different examples, in which case, it might help to outline what isn't working? Its worth noting you don't need react-transition-group to use greensock - in fact, I would say you should probably pick one library or another.
  12. Chris7777

    React and GSAP

    @Cristiano very nice example. Just be mindful of doing anything in render. You are better off leveraging the lifecycle methods for components. If you get a tic, check out my previous posts, and in particular this codepen If you have a specific question, please ask, and I can do my best to answer.
  13. Chris7777

    React and GSAP

    I've yet to actually play with React Native, always leaning towards responsive sites instead. Was there a particular problem you were hitting? Btw - agree on the default transition / animation solutions for React. That's why I was so happy when I found it so simply to use React with Greensock - best of both worlds.
  14. Double post - but just read your excellent article "will-change" as well the corresponding chrome bug tracker. So disappointing - as you said, the agent sniffing thing, man, it feels like a huge step back. For all the hate Flash got, god I miss it and its consistency
  15. I definitely see blur when I don't round off my numbers - so for example, I will always do: TweenLite.to(foo, 1, { x: Math.round(e.target.x) }); And yeah, this has been happening for a while. It just seems with the most recent update, all the little work arounds and fixes no longer work, like: transform: translate3d(0, 0, 0) scale(1); font-smoothing: antialiased; backface-visibility: hidden; It's also the first time I have seen the blur on the gsap site. I have a feeling that Google really sees the web in a very specific way - believing that it should only be text and images for a good user experience. And they're probably right for the majority of sites, as you don't want every last site spinning, and shaking, and grooving - but they need to understand there are exceptions. Movie promotion sites, game sites, etc probably have the right to be a bit more flashy. I'm working in the elearning space, and sometime it makes sense to have things animate around to demonstrate an idea or concept. Anyway, at least they aren't rewrapping entire sites in a cut down frame (cough AMP, cough AMP https://www.ampproject.org/)