When to use server actions in Next JS 14

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ธ.ค. 2024

ความคิดเห็น • 29

  • @WebDevEducation
    @WebDevEducation  10 หลายเดือนก่อน +1

    Let me know if I've forgotten any scenarios!

    • @dailydose7772
      @dailydose7772 4 วันที่ผ่านมา

      Nice video, thank you for posting it. Authentication id use a route handler. Not sure what you think?

  • @nikodunk
    @nikodunk 28 วันที่ผ่านมา +1

    This thumbnail cracked me up. The sweating guy accurately described me when faced with this decision.

  • @AlexanderBelov-y8o
    @AlexanderBelov-y8o 10 หลายเดือนก่อน +2

    Thank you for the amounts of valuable knowledge you put out for free!

    • @WebDevEducation
      @WebDevEducation  10 หลายเดือนก่อน

      You're welcome 😊🙏

  • @glengal6490
    @glengal6490 4 หลายเดือนก่อน

    Concise and proper. Just as I wanted. Thanks a bunch

  • @omarkraidie
    @omarkraidie 3 หลายเดือนก่อน +2

    can you should you use server actions with tanstack query for reladiating and handling caching / loading and errors?

  • @nasko235679
    @nasko235679 5 หลายเดือนก่อน +2

    Here's the confusing part. For me the most difficult thing about fetching data is being able to SECURELY fetch data from a client component and by securely I mean authenticating/authorizing the user first. With Server Actions that becomes extremely easy because you can do the authentication check inside the server action itself. HOWEVER in nextjs docs they've explicitly said that server actions are meant for data mutations and they are all POST requests, also AFAIK they get queued so you can't execute them asynchronously (?). That's why I've been using route handlers for fetching from client components, and when I need to fetch in server components I just use helper functions without the "use server" directive and I execute those at the top of the server component. Thoughts?

    • @zedquach
      @zedquach 5 หลายเดือนก่อน

      You can use useTransition for calling server action that fetch. But generally I would use server component for data fetching

  • @liangfamily
    @liangfamily 10 หลายเดือนก่อน +1

    Awesome! It’d be great if you follow up with code examples in the future

  • @donaminos
    @donaminos 2 หลายเดือนก่อน +1

    Thanks a lot for your insights. I am trying to wrap my head around server actions, and I have a question related to the scenario of fetching data in a client component.
    From my understanding server actions always use the "POST" method for the request sent to the backend. And using a "POST" request to fetch data, feels wrong to me. It should be a GET.
    Using a server action in this scenario goes against the initial intent of this feature (data mutation) I guess, doesn't it ?

    • @WebDevEducation
      @WebDevEducation  2 หลายเดือนก่อน +2

      Yes you're right, altho I'd be fetching data in a server component before doing that, and passing it down to the client component if it needed to be passed down rather than directly fetching from the client component.

  • @Skillthrive
    @Skillthrive 7 หลายเดือนก่อน +1

    Another one I came across is when the payload would be over 1MB because that's what server actions are limited to.

  • @jovanjevtic1620
    @jovanjevtic1620 10 หลายเดือนก่อน +1

    So, if I already created a website with nextjs and server actions and want to build a mobile app, I should then create api routes for all those server actions to cover same functionality in mobile app? (or whole another express server)

    • @WebDevEducation
      @WebDevEducation  10 หลายเดือนก่อน +1

      Yes that's correct 👍

    • @dreamsachiever212
      @dreamsachiever212 10 หลายเดือนก่อน

      ​@@WebDevEducation I had the same question. I am building a listing directory web app with nextjs and would like to build the mobile version of it using expo. Is it a best practice to use route handlers for the webapp and tanstack query for instance for the mobile app?

    • @WebDevEducation
      @WebDevEducation  10 หลายเดือนก่อน +1

      Yes it sounds like you'd want to use route handlers for this scenario which can be called from anywhere (within your next app or from an external web / mobile app). Thinking about it though, I might still use server actions for the next app (because a lot of the time server actions tend to be a bit more granular and less RESTful), and create a more RESTful API using route handlers for the mobile app (or any other external app). That way you could fully optimise your next app rather than being tied into a more RESTful API which might not be optimised for the way your next app needs to fetch its data. TLDR; I'd use server actions for the next app, and create separate API endpoints / route handlers for any external apps.

    • @dreamsachiever212
      @dreamsachiever212 10 หลายเดือนก่อน

      @@WebDevEducation Thanks for the insights. Really appreciate. I thought I would be locked in an either-or situation, but glad to know I can still use sever actions for the web app. Thanks again

  • @richardmacarthy8569
    @richardmacarthy8569 6 หลายเดือนก่อน

    Tom, my main man! How's it going? Long time no see haha. Thanks for the pointers. Much love x

    • @WebDevEducation
      @WebDevEducation  6 หลายเดือนก่อน +1

      Haha no way Richie Mac! All good here man hope things are well with you!

  • @iancarr3923
    @iancarr3923 10 หลายเดือนก่อน

    Very useful, thanks.

  • @b166er4
    @b166er4 9 หลายเดือนก่อน +1

    i use it as you ...
    just i try to never fetch data in client component...
    as it is possible, always fetch in async page and pass data as props to client components ...

  • @umer8509
    @umer8509 10 หลายเดือนก่อน

    Can we use server action in next if we have a backend in laravel?

    • @WebDevEducation
      @WebDevEducation  10 หลายเดือนก่อน +1

      Server actions can only be called from within a next app.

  • @u-def
    @u-def 10 หลายเดือนก่อน

    I didn't event think that server action doesn't support streaming, So
    I was wondering what is the differences when I saw the title of your video.
    But this video really informative and not unneccessary long.
    Thank you TH-cam tells me this channels.

  • @adarshrathi8265
    @adarshrathi8265 10 หลายเดือนก่อน

    i want suggestion this type of examples
    const onSubmit = async (values: z.infer) => {
    try {
    const url = qs.stringifyUrl({
    url: "/ api /channels",
    query: {
    serverId: params?.serverId
    }
    });
    await axios.pos t(url, values);
    form.reset();
    router.refresh();
    onClose();
    } catch (error) {
    console.log(error);,
    in server action how we manage StringifyUrl, any idea, because it create me a lot trouble.

  • @TabuHana
    @TabuHana 10 หลายเดือนก่อน

    this is self explanatory i feel, but nice vid