Sourced from msw's releases.
v2.0.0 (2023-10-23)
[!IMPORTANT] This release is a BREAKING CHANGE. Please follow the Migration guidelines to upgrade. This release took a lot of effort to make, and I expect a bit of that effort on your part while upgrading. Most of the changes are mechanical, and a simple Find/Replace All will get you a long way. For the rest of it, you will learn how to handle requests and responses using the standard JavaScript API. Thank you!
Breaking changes
- Drops support for Node.js 16. Please upgrade to Node.js 18 or later to use the global Fetch API.
- Drops support for TypeScript
< 4.7
.- All browser-side exports, like
setupWorker
,SetupWorkerApi
, etc., must be imported frommsw/browser
now.- Renames the
rest
object tohttp
(rest.get
->http.get
).
- Response resolver call signature is no longer
(req, res, ctx) => res()
but instead({ request }) => new Response()
.
- The following exports are removed due to no longer being needed:
response
context
and related exports (defaultContext
,restContext
,graphqlContext
).compose
andcreateResponseComposition
res.once()
is removed in favor of the{ once: boolean }
option on the request handler.- Replaces the
.printHandlers()
method with.listHandlers()
.- Removes the
NetworkError
class in favor of the standardResponse.error()
.- Moves request error handling from the worker thread to the client thread.
- Changes the call signature of the Life-cycle Events API to accept a single object argument.
- Uses
crypto.randomUUID()
instead ofMath.random()
in the worker.- For the full list of changes and detailed instructions on how to upgrade please see the Migration guidelines.
Features
- Adopts Fetch API primitives. Represent intercepted requests and mocked responses as
Request
andResponse
instances respectively.- Supports Node.js v18.
- Supports
ReadableStream
as a mocked response body.- Supports reading the intercepted request body as
FormData
.- Supports
FormData
as a mocked response body.- Uses
File
polyfill in Node.js.- Supports XMLHttpRequest “upload” events when responding with a mocked stream response.
- Allows mocking a network error once using the
{ once: true }
request handler option.- Makes the
RequestHandler
API public.Bug fixes
- Fixes the issue where the request body couldn’t be properly read as
FormData
.- Fixes a set of issues related to response patching when using the
FormData
response body.- Fixes the issue where
URLSearchParams
as the request body couldn’t be read.- Fixes the issue where a bypassed request’s
referrerPolicy
was reset to a different value than the original.
- Fixes the wrong order of
XMLHttpRequest
events andreadyState
changes.- Fixes the issue when reading an XMLHttpRequest body of
responseType
equal to"arraybuffer"
as an incorrect buffer (previously, always assumed to be a string).- Fixes the order of
XMLHttpRequest
events when the request fails.- Keeps XMLHttpRequest
status
equal to 0 until the request actually resolves.- Fixes the issue when the
onload
event callback was called twice forXMLHttpRequest
.- Various improvements in Node.js network behavior compliance.
@dbritto-dev
@ddolcimascolo
@markwhitfeld
@christoph-fricke
@thepassle
@piotr-cz
@mattcosta7
@koddsson
@dkobierski
@ricardocosta
@dxlbnl
@zkochan
@felipefreitag
@weyert
@95th
@committomaster
@Xayer
@Kosai106
@colinsullivan
@xmlking
@thw0rted
@lee-reinhardt
@wKovacs64
@TeChn4K
@cmolina
@nickrttn
@thomasbertet
@mscottnelson
@jonnedeprez
@negabaro
@the-ult
@WesleyYue
@cwagner22
@skvale
@alawiii521
@csantos1113
@elliotgonzalez123
@committomaster
@tsteckenborn
@xxleyi
@jonnedeprez
@danny-does-stuff
@lemcii
@mattrodak
@luisr-carrillo
@lee-reinhardt
@ealejandrootalvaro
@tomdglenn91