Тёмный
No video :(

How To Add Page Transitions To NextJS 14 (including Exit Animations) 

Tom Is Loading
Подписаться 22 тыс.
Просмотров 36 тыс.
50% 1

Опубликовано:

 

4 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 94   
@youssefkhaled2113
@youssefkhaled2113 2 месяца назад
i guess this should work with any react application not just next js amazing work
@thearmbandit7645
@thearmbandit7645 2 месяца назад
This is absolutely an amazing guide with an upload that is PERFECTLY timed. I've spent the last 2 days banging my head against the wall with these page transitions and now I can finally move forward and focus on working with framer motion on smaller things You are a true hero.
@StormKittenMeow
@StormKittenMeow 2 месяца назад
I was thinking about this and you just uploaded
@tomisloading
@tomisloading 2 месяца назад
Love when that happens 😁
@SanthoshKumar-dev
@SanthoshKumar-dev 2 месяца назад
me too i just think like 5 hours before... man ru really witch or something... KUDOS TO THE GOOD WORK !!!!!! PLEASE DONT STOP POSTING VIDEOS !!!!!!! i will sponsor u if u want (i am broke)
@richardlepeuriancross5193
@richardlepeuriancross5193 2 месяца назад
Eyyy. This cheered me up as was almost exactly the approach i took. Rather than remove the class via TransitionLink, consider an effect hook (useEfrect) which reacts to the pathname changing (usePathname). That was you ensure the page has loaded before you show it.
@tomisloading
@tomisloading 2 месяца назад
Great idea!
@vaggelis_best
@vaggelis_best 2 месяца назад
I my god this is probably the best solution I have seen in tackling this problem. Well, it might also be the only complete one I have seen! Thank you very much
@tomisloading
@tomisloading 2 месяца назад
Happy to help!! 😁
@ritikjangir718
@ritikjangir718 Месяц назад
This is what I was looking for. This is golden.
@aymenbachiri-yh2hd
@aymenbachiri-yh2hd Месяц назад
Thank you so much Tom, please keep posting videos like this
@user-nb7sk4go9e
@user-nb7sk4go9e 2 месяца назад
Bro literally upload video as soon as I needed it. Subscribed :)
@tomisloading
@tomisloading 2 месяца назад
Haha thank you!! 😁
@reubence_
@reubence_ 2 месяца назад
Did something similar using the web transitions api - but was disappointed after I realised it doesn’t work on safari yet. This seems like a better approach. Heck it’s so easy I’m almost dumbfounded at myself for not figuring it out on my own.
@k0wal454
@k0wal454 Месяц назад
it is nice to support people like u. keep up the good work
@visheshjhadi1930
@visheshjhadi1930 Месяц назад
There are few issues with this approach 1. SEO as all the links will be on client side then server side 2. The back and forward button will not trigger the transition 3. If you go to network tab and slow the throttling then you will notice that the transition starts and end on the same page. If anyone have the solution to this please let me know
@BooksWeCanRead
@BooksWeCanRead 2 месяца назад
That was awesome! So well explained! 🙌👏👏
@tomisloading
@tomisloading 2 месяца назад
Thank you! 😁
@neociber24
@neociber24 2 месяца назад
Great tutorial. A correction "use client" just means the element may be interactive on the client, in NextJS all elements are rendered on the server.
@VitorVelosoSA
@VitorVelosoSA Месяц назад
Correct. And I believe this one of the most confusing things among the community in NextJS.
@ProLactationNation
@ProLactationNation Месяц назад
Man.. If i would have the authority, I would give you a medal!
@MortezaPorabdolahi
@MortezaPorabdolahi Месяц назад
Amazing stuff, Thanks ♥
@RobbPage
@RobbPage 2 месяца назад
animate presence has always given me issues. will give this method a try. thanks!
@tomisloading
@tomisloading 2 месяца назад
Same here!! Happy to help 🙂
@trejohnson7677
@trejohnson7677 Месяц назад
Interesting, have you ever thought about making the sleep function and transition handler a generator? Think making the animations dependent on e.g. TTP, network parameters? So if you're on a crap network you could procedurally generate an interesting animation to distract them from DNS issues.
@xphstos_
@xphstos_ Месяц назад
Great idea! Thanks! Quick question, since we're preventing the default event and using the router hook to navigate the user is there a reason we used specificaly the Link component? Couldn't that work also with a normal ancor element or a button or even a simple div?
@caczus
@caczus Месяц назад
You should try the next-view-transitions library from shuding
@M1a2n3o43
@M1a2n3o43 2 месяца назад
Could you add some of these popular transition animations to your website? Great video!
@tomisloading
@tomisloading 2 месяца назад
Potentially, yea! A bit tough to do though given different routers will require different solutions
@ayannagorimsn
@ayannagorimsn 2 месяца назад
@@tomisloading Please make one of the animation free(I would love to buy it but I cant afford it). And others paid if you want
@Deus-lo-Vuilt
@Deus-lo-Vuilt 2 месяца назад
Wow , Thanks for video
@nothing-tj9eh
@nothing-tj9eh 2 месяца назад
thankss for the tutorail can you give us small example how to set it up with framer motion cause i couldn't get it to work with app router
@tomisloading
@tomisloading 2 месяца назад
I’ve personally just stopped using Framer Motion for page transitions with the app router, at least with animate presence. If you wanted to use something like useAnimate, you could add a ref to the body element then pass it down through context or something I suppose 😁
@KarnakOvy8
@KarnakOvy8 2 месяца назад
you can also use the template.tsx component, which is like a layout, but re-render every time
@JacquesOP
@JacquesOP 2 месяца назад
Amazing work !
@Smartercow
@Smartercow Месяц назад
Instead of the sleep function there's this: *import { setTimeout } from "node:timers/promises";* - It does the same and it's async
@habibthephantom7040
@habibthephantom7040 Месяц назад
But this is client component not server one
@bozzhik
@bozzhik 2 месяца назад
yooo dog. i was waiting for this. thx
@temitopedavid9508
@temitopedavid9508 2 месяца назад
thank you tom
@ikirbz
@ikirbz 2 месяца назад
2 things "Auto Rename Tag" plugin "trigger suggest" keyboard shortcut (usually ctrl + space)
@moodyhamoudi
@moodyhamoudi 2 месяца назад
Really smart solution. Question though, would the fixed sleep times cause issues for slow connections?
@tomisloading
@tomisloading 2 месяца назад
It could! Another solution could be to have your links handle only exit animations, then have each individual page handle their own entrance animations
@moodyhamoudi
@moodyhamoudi 2 месяца назад
@@tomisloading ur cooking bro
@KillerPhantom123
@KillerPhantom123 2 месяца назад
This is gold!
@chopsueey
@chopsueey 2 месяца назад
awesome! but couldn't you just use a button element instead of the nextjs link-component, because you are essentially using a programmatical approach for page-navigation (useRouter)? or is next/link still beneficial or necessary?
@ayannagorimsn
@ayannagorimsn 2 месяца назад
I dont think it is needed We can use a button or a tag as well I did it with button only
@chopsueey
@chopsueey 2 месяца назад
@@ayannagorimsn ah, good to know, thx the docs say that the Link-component provide prefetching for the route in nextjs, so probably better to use it
@MauricioAndrian
@MauricioAndrian 2 месяца назад
Using buttons for page navigation breaks a11y. Try Ctrl/Cmd + Left Click in both and you'll see.
@amansarma417
@amansarma417 2 месяца назад
Would this approach work if the user clicks back button after navigating to the page made by custom link component?
@MauricioAndrian
@MauricioAndrian 2 месяца назад
No, this only run 'onClick'ing the component. Anything else, won't work.
@amansarma417
@amansarma417 2 месяца назад
@@MauricioAndrian I've implemented my own solution using a custom hook which runs on every page navigation via useEffect and ads a layer of transition.
@aliventurous
@aliventurous Месяц назад
@@amansarma417please share
@abdrahmanoladimeji4698
@abdrahmanoladimeji4698 Месяц назад
Hi, pls if I want to use this to create a kind of preloader, different from default Next Loading file whereby it'll override everything and get displayed first, how do I go about it?
@inderjotsingh5868
@inderjotsingh5868 Месяц назад
i have seen people doing page transitions using template.ts file in next , do we have any performance implications using that ?
@tomascaetano4270
@tomascaetano4270 Месяц назад
This is done.
@sahilverma_dev
@sahilverma_dev 2 месяца назад
Finally
@tomisloading
@tomisloading 2 месяца назад
😎
@alexg7282
@alexg7282 2 месяца назад
Thanks !
@jou3883
@jou3883 Месяц назад
Hi Tom! I implemented this in my current nextjs project. Somehow if I call the sleep function before removing the 'page-transition' class, it doesnt navigate to the page I clicked on immediately (which is what its supposed to do since we setTimeout to 500ms), but the previous page is still being displayed by like 2s before the page that is clicked on shows. But when I removed the sleep function after router pushes to clicked href, it worked. could this be a nextjs bug? or I'm doing something wrong? This only happens when I refresh the page and quickly navigates to other pages.
@ibnurasikh
@ibnurasikh 2 месяца назад
I was also thinking about this, but there's a potential issue. The method might exhibit strange behavior if the content doesn't prefetch. This could cause a noticeable pause after the animation finishes, as the new page content has to be fetched and rendered, right?
@tomisloading
@tomisloading 2 месяца назад
True, that was the idea with additional wait after redirecting to a new page. If you DID see this becoming an issue, I would just have each page define their own entrance animations so that they only occur once the page actually loads.
@ibnurasikh
@ibnurasikh 2 месяца назад
​@@tomisloading Hmm, I think you should prefetch before the exit animation starts. In your code, fetching seems to happen after the animation ends, i.e., after `sleep(500)` finishes. Is there a reason you’re not implementing prefetch first using `router.prefetch(url, as, options)`?
@alishakhatri6919
@alishakhatri6919 Месяц назад
hey, can you make a video about Opposite Scroll Content ?
@nandanchoudhary9798
@nandanchoudhary9798 2 месяца назад
to explain the idea it's good But, No real world application uses such approach. it's not necessary that new page would load within 500ms
@null_spacex
@null_spacex Месяц назад
There's a difference between applications and websites.
@tretiakdev
@tretiakdev Месяц назад
Cool ❤
@MauricioAndrian
@MauricioAndrian 2 месяца назад
What about the new native page transitions animations? Do they work?
@TutoDS2014
@TutoDS2014 2 месяца назад
Do you know a good tutorial to do animations on solid (using solid start)?
@felipefregginrules
@felipefregginrules 2 месяца назад
This obvi works on the pages router too right?
@tomisloading
@tomisloading 2 месяца назад
It does!
@TrungNguyen-fi5ls
@TrungNguyen-fi5ls Месяц назад
I thought we couldn't manipulate DOM ??? 8:23
@user-fr9we8vq7x
@user-fr9we8vq7x 2 месяца назад
This can really hurt the seo, as you are removing all of the links from server side rendering. I would do some king of a nested client component inside a server component, so that the link is actually rendered on the server, and then the client adds transition logic on top of it. Great tutorial!
@MauricioAndrian
@MauricioAndrian 2 месяца назад
You are already breaking SEO (adding "use client") if you try to style the links based on current pathname which is required in 90% of all designs.
@PrinzEugen39
@PrinzEugen39 Месяц назад
SEO this SEO that
@DouglasSouza-te9bt
@DouglasSouza-te9bt 2 месяца назад
Theme pls
@zlatkoiliev8927
@zlatkoiliev8927 2 месяца назад
Aaand this is really bad practice, because we loose all good features of the next link, like pre-fetching, and caching. Only because we want to have cool transition animations…
@richardlepeuriancross5193
@richardlepeuriancross5193 2 месяца назад
Use the next link inside Transition link?
@youhabbo01
@youhabbo01 2 месяца назад
@@richardlepeuriancross5193 e.preventDefault ?
@fathinfadhil
@fathinfadhil 2 месяца назад
he literally pass down the props to next's Link component, it'll work fineee
@waleedbukhari8988
@waleedbukhari8988 Месяц назад
​@@richardlepeuriancross5193at some point he is right, link works fine as a server component while transition link is a custom client component, you do loose preloading and some next features i guess. Use it wisely. Even if it is a nextlink. But it has a client wrapper on it.
@sebastiancasal8589
@sebastiancasal8589 Месяц назад
But he is using next link, he is just adding a momentary modification of the pre rendered dom, the main component still are pre rendered in the server. It shouldn’t impact in the performance of the site
@alex_maltsev_k2fx
@alex_maltsev_k2fx 3 дня назад
IMO, this solution will not work when the user uses the browser back button.
@nicolasmayorga8288
@nicolasmayorga8288 2 месяца назад
I mean, it's good but not recommended cause in this way you're not getting pre-fetching and caching data in each link.
@ashishkumawat6110
@ashishkumawat6110 Месяц назад
That's just vanilla JS stuff
@null_spacex
@null_spacex Месяц назад
But it's the way to do it in Next App Router right now..
@uditnagar7905
@uditnagar7905 2 месяца назад
ezsnippet copied today's insta reel from here 🤣🤣🤣
@znkdev
@znkdev 2 месяца назад
pretty dope! but way too much work.
@RegalWK
@RegalWK Месяц назад
Does this new TransitionLink component support prefetching? I assume yes since its native Link component with use client directive
Далее
How to Add Page Transitions in NextJs 14
9:13
Просмотров 52 тыс.
I DONT USE NEXT JS
54:01
Просмотров 353 тыс.
Аруси Точики ❤️❤️❤️
00:13
Просмотров 92 тыс.
Fetching Data Doesn't Get Better Than This
6:58
Просмотров 113 тыс.
TailwindCSS Is Ugly. Here's How To Deal With It.
10:32
My Top 5 Techniques for Web Animation
9:58
Просмотров 83 тыс.
I can’t believe they built this in React
16:08
Просмотров 125 тыс.
The Most Overlooked Framer Motion Hook is DOPE
9:55
Просмотров 3,8 тыс.
Cool Tools I’ve Been Using Lately
23:11
Просмотров 294 тыс.