getServerSideProps
When exporting a function called getServerSideProps
(Server-Side Rendering) from a page, Next.js will pre-render this page on each request using the data returned by getServerSideProps
. This is useful if you want to fetch data that changes often, and have the page update to show the most current data.
You can import modules in top-level scope for use in getServerSideProps
. Imports used will not be bundled for the client-side. This means you can write server-side code directly in getServerSideProps
, including fetching data from your database.
Context parameter
The context
parameter is an object containing the following keys:
Name | Description |
---|---|
params | If this page uses a dynamic route, params contains the route parameters. If the page name is [id].js , then params will look like { id: ... } . |
req | The HTTP IncomingMessage object, with an additional cookies prop, which is an object with string keys mapping to string values of cookies. |
res | The HTTP response object. |
query | An object representing the query string, including dynamic route parameters. |
preview | (Deprecated for draftMode ) preview is true if the page is in the Preview Mode and false otherwise. |
previewData | (Deprecated for draftMode ) The preview data set by setPreviewData . |
draftMode | draftMode is true if the page is in the Draft Mode and false otherwise. |
resolvedUrl | A normalized version of the request URL that strips the _next/data prefix for client transitions and includes original query values. |
locale | Contains the active locale (if enabled). |
locales | Contains all supported locales (if enabled). |
defaultLocale | Contains the configured default locale (if enabled). |
getServerSideProps return values
The getServerSideProps
function should return an object with any one of the following properties:
props
The props
object is a key-value pair, where each value is received by the page component. It should be a serializable object so that any props passed, could be serialized with JSON.stringify
.
notFound
The notFound
boolean allows the page to return a 404
status and 404 Page. With notFound: true
, the page will return a 404
even if there was a successfully generated page before. This is meant to support use cases like user-generated content getting removed by its author.
redirect
The redirect
object allows redirecting to internal and external resources. It should match the shape of { destination: string, permanent: boolean }
. In some rare cases, you might need to assign a custom status code for older HTTP
clients to properly redirect. In these cases, you can use the statusCode
property instead of the permanent
property, but not both.
Version History
Version | Changes |
---|---|
v13.4.0 | App Router is now stable with simplified data fetching |
v10.0.0 | locale , locales , defaultLocale , and notFound options added. |
v9.3.0 | getServerSideProps introduced. |