Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unwrap thrown Responses from entry.server into ErrorResponses #8577

Merged
merged 4 commits into from
Jan 29, 2024

Conversation

brophdawg11
Copy link
Contributor

@brophdawg11 brophdawg11 commented Jan 22, 2024

Allow users to throw a Response from entry.server and unwrap it into an ErrorResponse for the second render, as we would do for a loader/action-thrown response.

It is the responsibility of the user to acoid a second throwing operation since entry.server will run again for the error render. For example:

export default async function handleRequest(request, responseStatusCode, ...) {
  // Ensure we only go down the path that may throw a response on the first pass 
  // and we don't loop through again on the error render
  if (responseStatusCode === 200) {
    let result = await doSomethingForSuccessfulRenders();
    if (!result.ok) {
      throw new Response("Oh no!", { status: 400 });
    }
  }
  return renderToString(<RemisServer .../>);
}

The use-case prompting this is for apps migrating from Apollo that are doing their data fetch in entry-server instead of loaders.

Note: This will fail CI until we get the associated RR PR into an experimental or prerelease

Sibling RR PR: remix-run/react-router#11213

Copy link

changeset-bot bot commented Jan 22, 2024

🦋 Changeset detected

Latest commit: 0eccc7a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 16 packages
Name Type
@remix-run/server-runtime Patch
@remix-run/cloudflare Patch
@remix-run/deno Patch
@remix-run/dev Patch
@remix-run/node Patch
@remix-run/react Patch
@remix-run/cloudflare-pages Patch
@remix-run/cloudflare-workers Patch
@remix-run/architect Patch
@remix-run/express Patch
@remix-run/serve Patch
@remix-run/testing Patch
create-remix Patch
remix Patch
@remix-run/css-bundle Patch
@remix-run/eslint-config Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@brophdawg11 brophdawg11 merged commit 96904e7 into dev Jan 29, 2024
9 checks passed
@brophdawg11 brophdawg11 deleted the brophdawg11/throw-response-from-entry-server branch January 29, 2024 18:22
@github-actions github-actions bot added the awaiting release This issue has been fixed and will be released soon label Jan 29, 2024
Copy link
Contributor

🤖 Hello there,

We just published version 2.6.0-pre.0 which includes this pull request. If you'd like to take it for a test run please try it out and let us know what you think!

Thanks!

Copy link
Contributor

github-actions bot commented Feb 1, 2024

🤖 Hello there,

We just published version 2.6.0 which includes this pull request. If you'd like to take it for a test run please try it out and let us know what you think!

Thanks!

@github-actions github-actions bot removed the awaiting release This issue has been fixed and will be released soon label Feb 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant