Anyhow, so how Remix works, how it make it work like that, so how it makes it different strategies, different rendered strategies in the same box and yeah, how it does everything? So if you look at the documentation, by the way we haven't said anything about documentation yet but it's very powerful, maybe one of the most powerful documentation pages that I have seen and it's, yeah, it's basically a piece of art itself but let's say maybe some more words seen by the end of it. So if you look at this documentation here and about different concepts that I described so they explain Remix is first of all, it's a compiler.
The compiler that takes the code that we seen as an example in the beginning here and then it transforms by using the compiler into the browser build and the server side build. So essentially the left part the original code contains some keywords, right? Because remixes we can say it's a framework so you have to follow some rules and remix defines some of the key definitions that you have to write inside your pages, inside your code. And then at the compiler which is using esbuild inside it's transforming this code into two parts. Of course, for the browser part and for the server part. So for a server part it's not entirely a code it will need to serve your application. So for that, it will need to make some HTTP server working for you. So again, the compiler will analyze the code. It will try to get, it will get the information from your code about the routes that are used there, about the data that is used there. And then it says in the documentation that it will handle it by any, well, not by any, but by the several HTTP servers. And what that means, like we started again in this code with an idea that remixed run slash node that is supported by default from the box, and you also have a cloud-flare, Audino approaches. So basically these are the utilities that you can use for your server side. And for the node, by default, it would use the Express server, if I'm not mistaken. So it will, on your local host, it will configure the Express server that you can just run with Node.js. But you can also directly use the cloud-flare provider, so it will run by the H run time after deployed, of course, after it's deployed. It also supports the Dino compiler. And probably the Dino runtime and probably more than that, which you can find in the documentation about that.
So what else are the server side supports? So what we seen so far was a loader, and that is a function, the keyword that you have to write in your code to make REMIX know about the function that will retrieve data for your application. So it's just the name and it's about naming, right? You have to export a loader name, and that should be a function, can be probably asynchronous, in most cases it will be asynchronous. And then you can attach inside this function, any, let's say, database layer. So you will go to database, retrieve some data from there, and put it as a response from this loader function. So that will be executed on backend, which just makes it logical. Other than loader, you also have an action. So action is something that I will show a bit later, but just a few words, action is something that doesn't load data, but it allows you to send the data to a user. We will see an example in a few minutes, but just keep in mind that we have also an action. And yeah, when we define our order, we also have a React component, but the React component will be transformed into both backend and the client part of our application. So how are we gonna do that? Well, that's actually how Emix will do that. That's pretty much possible. We will explain it in a few moments. But what you need to do is take this component and then transform it to some part of application. So you have actually from Emix, a possibility to do so, from React, sorry, a possibility to do so. But yeah, let's talk about it in the experiment part.
So for client-side build, you have multiple features too. So first of all, you have a layer in between client-side and backend side, well, essentially, it is executed on a backend. The part that is using the data from a loader, that will be executed on a backend, like we said, but it will be fed to a component, again, on the backend side. And then it will get the data, retrieve the data on backend side, generate the component, again, on the server-side, and give it to a client, where the client application will pick it up and will continue from this moment. So that's probably better described by the term hydration and rehydration. And the beauty of it, it all happens behind the box. So you don't have to do anything at all to make it work because it's already working now from the beginning. So what you need to do is just to use a loader in your code. I hope the noise is not that bad. So in here, in this example, you can see also the action. So I promised to talk a little about that. So imagine in your component, you need to not only to show the data, but you want to update the data. And for that, you can use the action keyword. So in your code, you described an action keyword and that also would be a function.