Status Codes

Status Codes

Set status codes from loaders and actions with data.

// route('/projects/:projectId', './project.tsx') import type { Route } from "./+types/project"; import { data } from "react-router"; import { fakeDb } from "../db";  export async function action({  request, }: Route.ActionArgs) {  let formData = await request.formData();  let title = formData.get("title");  if (!title) {  return data(  { message: "Invalid title" },  { status: 400 }  );  }   if (!projectExists(title)) {  let project = await fakeDb.createProject({ title });  return data(project, { status: 201 });  } else {  let project = await fakeDb.updateProject({ title });  // the default status code is 200, no need for `data`  return project;  } } 

See Form Validation for more information on rendering form errors like this.

Another common status code is 404:

// route('/projects/:projectId', './project.tsx') import type { Route } from "./+types/project"; import { data } from "react-router"; import { fakeDb } from "../db";  export async function loader({ params }: Route.ActionArgs) {  let project = await fakeDb.getProject(params.id);  if (!project) {  // throw to ErrorBoundary  throw data(null, { status: 404 });  }  return project; } 

See the Error Boundaries for more information on thrown data.

Docs and examples CC 4.0
Edit