When to use server actions in Next JS 14

Поделиться
HTML-код
  • Опубликовано: 25 дек 2024

Комментарии • 29

  • @WebDevEducation
    @WebDevEducation  11 месяцев назад +1

    Let me know if I've forgotten any scenarios!

    • @dailydose7772
      @dailydose7772 28 дней назад

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

  • @nikodunk
    @nikodunk Месяц назад +1

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

  • @AlexanderBelov-y8o
    @AlexanderBelov-y8o 11 месяцев назад +2

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

  • @glengal6490
    @glengal6490 5 месяцев назад

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

  • @omarkraidie
    @omarkraidie 4 месяца назад +2

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

  • @liangfamily
    @liangfamily 11 месяцев назад +1

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

  • @richardmacarthy8569
    @richardmacarthy8569 7 месяцев назад

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

    • @WebDevEducation
      @WebDevEducation  7 месяцев назад +1

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

  • @nasko235679
    @nasko235679 6 месяцев назад +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

  • @donaminos
    @donaminos 3 месяца назад +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  3 месяца назад +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.

  • @iancarr3923
    @iancarr3923 11 месяцев назад

    Very useful, thanks.

  • @Skillthrive
    @Skillthrive 8 месяцев назад +1

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

  • @u-def
    @u-def 11 месяцев назад

    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 RUclips tells me this channels.

  • @jovanjevtic1620
    @jovanjevtic1620 11 месяцев назад +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  11 месяцев назад +1

      Yes that's correct 👍

    • @dreamsachiever212
      @dreamsachiever212 11 месяцев назад

      ​@@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  11 месяцев назад +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 11 месяцев назад

      @@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

  • @umer8509
    @umer8509 11 месяцев назад

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

    • @WebDevEducation
      @WebDevEducation  11 месяцев назад +1

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

  • @b166er4
    @b166er4 10 месяцев назад +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 ...

  • @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 11 месяцев назад

    this is self explanatory i feel, but nice vid