remix v3.0.0-rc.4
Pre-releasePre-release Changes
-
BREAKING CHANGE: Configure the application-wide router context by augmenting the new type-only
remixroot module. Runtime APIs remain available throughremix/*subpath imports. Apps that use@remix-run/fetch-routerdirectly should continue to augment that module.-declare module 'remix/router' { +declare module 'remix' { interface RouterTypes { context: AppContext } }
-
BREAKING CHANGE:
remix/fetch-proxynow returns upstream redirects by default so stable development proxies preserve redirect responses and session cookies at the browser boundary. Passredirect: 'follow'to preserve the previous behavior. -
Customize transformed-file caching in
remix/assetswith aFileCacheor the configurablecreateFsFileCache()filesystem LRU. ExistingFileStorageconfigurations remain compatible, and caching stays disabled unless configured (see #11859). -
Optimize named imports through eligible side-effect-free barrel files in
remix/assets. -
remix/uinow supportsdata-rmx-preserve-attrsto keep named client-owned attributes, such as a root theme attribute, across frame reloads while updating the rest of the element (see #11809). -
Generated import maps now include dependencies used by the configured HMR module importer, so its bare imports resolve even when they are not also used by the app's browser entry.
-
Improve browser HMR for transitive dependency updates
-
Cookie options exposed through
remix/cookienow accept lowercasesameSitevalues such as'lax', matching the authentication and session examples. -
Remix server entrypoints can pass
router.fetchdirectly tocreateRequestListener()without client metadata being treated asRequestInit. -
Publish the in-progress guide chapters with an unfinished notice and links to relevant package READMEs. Installed guides and READMEs link to bundled README mirrors instead of hosted documentation (see #11920).
-
Declare which
remixentry points have side effects based on their owning packages. -
remix/ui-hmrnow preserves hoisted function declarations written after a component's render return, so valid closures continue to work in browser development builds. -
Align frame identification and named targeting in the default browser resolver with server-side rendering, including top-frame navigation and reloads. Browser frame requests also report server rendering errors through
render()'s configured error handler or default reporter (see #11941). -
Allow client entry props to use ordinary interfaces, including nested objects whose properties are all optional (see #11918).
-
Bumped
@remix-run/*dependencies:assert@0.3.1assets@0.8.0async-context-middleware@0.3.8auth@0.3.3auth-middleware@0.2.8cli@0.8.0compression-middleware@0.1.16cookie@0.7.1cop-middleware@0.1.11cors-middleware@0.2.1csrf-middleware@0.2.0fetch-proxy@0.9.0fetch-router@0.22.2file-storage@0.13.8file-storage-s3@0.1.6form-data-middleware@0.3.8form-data-parser@0.17.7fs@0.4.7headers@0.21.3html-template@0.3.2lazy-file@5.0.7logger-middleware@0.3.8method-override-middleware@0.1.16mime@0.4.3multipart-parser@0.16.6multiple-import-maps-polyfill@0.1.1node-fetch-server@0.14.2node-hmr@0.2.1node-tsx@0.1.2render-middleware@0.3.2response@0.3.10route-pattern@0.25.0session@0.4.3session-middleware@0.5.1session-storage-memcache@0.1.3session-storage-redis@0.1.2spa@0.1.3static-middleware@0.4.17tar-parser@0.8.1terminal@0.1.2test@0.6.2ui@0.11.0ui-hmr@0.1.1