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

Update remix monorepo to v2 (major) #38

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Sep 18, 2023

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@remix-run/dev (source) ^1.8.2 -> ^2.0.0 age adoption passing confidence
@remix-run/eslint-config ^1.8.2 -> ^2.0.0 age adoption passing confidence
@remix-run/node ^1.8.2 -> ^2.0.0 age adoption passing confidence
@remix-run/react ^1.8.2 -> ^2.0.0 age adoption passing confidence
@remix-run/serve ^1.8.2 -> ^2.0.0 age adoption passing confidence

Release Notes

remix-run/remix (@​remix-run/dev)

v2.0.0

Compare Source

Major Changes
  • The create-remix CLI has been rewritten to feature a cleaner interface, Git repo initialization and optional remix.init script execution. The interactive template prompt and official Remix stack/template shorthands have also been removed so that community/third-party templates are now on a more equal footing. (#​6887)

    • The code for create-remix has been moved out of the Remix CLI since it's not intended for use within an existing Remix application
    • This means that the remix create command is no longer available.
  • Enable built-in PostCSS and Tailwind support by default. (#​6909)

    • These tools are now automatically used within the Remix compiler if PostCSS and/or Tailwind configuration files are present in your project.
    • If you have a custom PostCSS and/or Tailwind setup outside of Remix, you can disable these features in your remix.config.js via the postcss:false and/or tailwind:false flags
  • Drop React 17 support (#​7121)

  • Require Node >=18.0.0 (#​6939)

  • Compile server build to Node 18 (#​7292)

    • This allows features like top-level await to be used within a Remix app
  • Remove default Node.js polyfills - you must now opt-into polyfills via the serverNodeBuiltinsPolyfill and browserNodeBuiltinsPolyfill configs (#​7269)

  • Remove v2_errorBoundary flag and CatchBoundary implementation (#​6906)

  • Remove v2_normalizeFormMethod future flag - all formMethod values will be normalized in v2 (#​6875)

  • Remove v2_routeConvention flag - the flat route file convention is now standard (#​6969)

  • Remove v2_headers flag - it is now the default behavior to use the deepest headers function in the route tree (#​6979)

  • The route meta API now defaults to the new "V2 Meta" API (#​6958)

  • Default to serverModuleFormat: "esm" and update remix-serve to use dynamic import to support ESM and CJS build outputs (#​6949)

  • Remove serverBuildTarget config option (#​6896)

  • Remove deprecated REMIX_DEV_HTTP_ORIGIN env var - use REMIX_DEV_ORIGIN instead (#​6963)

  • Remove devServerBroadcastDelay config option (#​7063)

  • Remove deprecated devServerPort option - use --port / dev.port instead (#​7078)

  • Remove deprecated REMIX_DEV_SERVER_WS_PORT env var - use remix dev's '--port / port option instead (#​6965)

  • Stop passing isTypeScript to remix.init script (#​7099)

  • Remove replace-remix-magic-imports codemod (#​6899)

  • Remove deprecated --no-restart/restart cli args/flags - use --manual/manual instead (#​6962)

  • Remove deprecated --scheme/scheme and --host/host cli args/flags - use REMIX_DEV_ORIGIN instead (#​6962)

  • Promote the future.v2_dev flag in remix.config.js to a root level dev config (#​7002)

  • Remove browserBuildDirectory config option (#​6900)

  • Remove serverBuildDirectory config option ([#​6897](https://github.com/remix-run/remix/pull/- Remove codemod command (#​6918)
    6897))

  • Removed support for "magic exports" from the remix package. This package can be removed from your package.json and you should update all imports to use the source @remix-run/* packages: (#​6895)

    - import type { ActionArgs } from "remix";
    - import { json, useLoaderData } from "remix";
    + import type { ActionArgs } from "@​remix-run/node";
    + import { json } from "@​remix-run/node";
    + import { useLoaderData } from "@​remix-run/react";
Minor Changes
  • Warn users about obsolete future flags in remix.config.js (#​7048)

  • Detect built mode via build.mode (#​6964)

    • Prevents mode mismatch between built Remix server entry and user-land server
    • Additionally, all runtimes (including non-Node runtimes) can use build.mode to determine if HMR should be performed
  • Support bun package manager (#​7074)

  • The serverNodeBuiltinsPolyfill option (along with the newly added browserNodeBuiltinsPolyfill) now supports defining global polyfills in addition to module polyfills (#​7269)

    • For example, to polyfill Node's Buffer global:

      module.exports = {
        serverNodeBuiltinsPolyfill: {
          globals: {
            Buffer: true,
          },
          // You'll probably need to polyfill the "buffer" module
          // too since the global polyfill imports this:
          modules: {
            buffer: true,
          },
        },
      };
Patch Changes
  • Fix importing of PNGs, SVGs, and other assets from packages in node_modules (#​6813, #​7182)

  • Decouple the @remix-run/dev package from the contents of the @remix-run/css-bundle package. (#​6982)

    • The contents of the @remix-run/css-bundle package are now entirely managed by the Remix compiler
    • Even though it's still recommended that your Remix dependencies all share the same version, this change ensures that there are no runtime errors when upgrading @remix-run/dev without upgrading @remix-run/css-bundle
  • Allow non-development modes for remix watch (#​7117)

  • Stop remix dev when esbuild is not running (#​7158)

  • Do not interpret JSX in .ts files (#​7306)

    • While JSX is supported in .js files for compatibility with existing apps and libraries,
      .ts files should not contain JSX. By not interpreting .ts files as JSX, .ts files
      can contain single-argument type generics without needing a comma to disambiguate from JSX:

      // this works in .ts files
      const id = <T>(x: T) => x;
      //          ^ single-argument type generic
      // this doesn't work in .tsx files
      const id = <T,>(x: T) => x;
      //          ^ is this a JSX element? or a single-argument type generic?
      // this works in .tsx files
      const id = <T,>(x: T) => x;
      //           ^ comma: this is a generic, not a JSX element
      const component = <h1>hello</h1>;
      //                   ^ no comma: this is a JSX element
  • Enhance obsolete flag warning for future.v2_dev if it was an object, and prompt users to lift it to the root dev config (#​7427)

  • Allow decorators in app code (#​7176)

  • Allow JSX in .js files during HMR (#​7112)

  • Kill app server when remix dev terminates (#​7280)

  • Support dependencies that import polyfill packages for Node built-ins via a trailing slash (e.g. importing the buffer package with var Buffer = require('buffer/').Buffer as recommended in their README) (#​7198)

    • These imports were previously marked as external
    • This meant that they were left as dynamic imports in the client bundle and would throw a runtime error in the browser (e.g. Dynamic require of "buffer/" is not supported)
  • Surface errors when PostCSS config is invalid (#​7391)

  • Restart dev server when Remix config changes (#​7269)

  • Remove outdated ESM import warnings (#​6916)

    • Most of the time these warnings were false positives.
    • Instead, we now rely on built-in Node warnings for ESM imports.
  • Do not trigger rebuilds when .DS_Store changes (#​7172)

  • Remove warnings for stabilized flags: (#​6905)

    • unstable_cssSideEffectImports
    • unstable_cssModules
    • unstable_vanillaExtract
  • Allow any mode (NODE_ENV) (#​7113)

  • Replace the deprecated xdm package with @mdx-js/mdx (#​4054)

  • Write a version.txt sentinel file after server build is completely written (#​7299)

  • Updated dependencies:

    • @remix-run/server-runtime@2.0.0
remix-run/remix (@​remix-run/eslint-config)

v2.0.0

Compare Source

Major Changes
  • Remove @remix-run/eslint-config/jest ESLint config (#​6903)
  • Drop React 17 support (#​7121)
  • Remove magic imports ESLint warnings (#​6902)
  • Remove v2_normalizeFormMethod future flag - all formMethod values will be normalized in v2 (#​6875)
remix-run/remix (@​remix-run/node)

v2.0.0

Compare Source

Major Changes
  • Require Node >=18.0.0 (#​6939)

  • Stop exporting the fetch API in favor of using the version in the global scope - which can be polyfilled via installGlobals (#​7293)

  • Removed/adjusted types to prefer unknown over any and to align with underlying React Router types (#​7319, #​7354):

    • Renamed the useMatches() return type from RouteMatch to UIMatch
    • Renamed LoaderArgs/ActionArgs to LoaderFunctionArgs/ActionFunctionArgs
    • AppData changed from any to unknown
    • Location["state"] (useLocation.state) changed from any to unknown
    • UIMatch["data"] (useMatches()[i].data) changed from any to unknown
    • UIMatch["handle"] (useMatches()[i].handle) changed from { [k: string]: any } to unknown
    • Fetcher["data"] (useFetcher().data) changed from any to unknown
    • MetaMatch.handle (used in meta()) changed from any to unknown
    • AppData/RouteHandle are no longer exported as they are just aliases for unknown
  • The route meta API now defaults to the new "V2 Meta" API (#​6958)

  • For preparation of using Node's built in fetch implementation, installing the fetch globals is now a responsibility of the app server (#​7009)

    • If you are using remix-serve, nothing is required

    • If you are using your own app server, you will need to install the globals yourself

      import { installGlobals } from "@&#8203;remix-run/node";
      
      installGlobals();
  • source-map-support is now a responsibility of the app server (#​7009)

    • If you are using remix-serve, nothing is required

    • If you are using your own app server, you will need to install source-map-support yourself.

      npm i source-map-support
      import sourceMapSupport from "source-map-support";
      sourceMapSupport.install();
  • Removed support for "magic exports" from the remix package. This package can be removed from your package.json and you should update all imports to use the source @remix-run/* packages: (#​6895)

    - import type { ActionArgs } from "remix";
    - import { json, useLoaderData } from "remix";
    + import type { ActionArgs } from "@&#8203;remix-run/node";
    + import { json } from "@&#8203;remix-run/node";
    + import { useLoaderData } from "@&#8203;remix-run/react";
Minor Changes
Patch Changes
  • Remove atob/btoa polyfills in favor of built-in versions (#​7206)
  • Export proper ErrorResponse type for usage alongside isRouteErrorResponse (#​7244)
  • Add the rest of the Web Streams API to installGlobals (#​7321)
  • Ensures fetch() return is instanceof global Response by removing extended classes for NodeRequest and NodeResponse in favor of custom interface type cast (#​7109)
  • Remove recursion from stream utilities (#​7245)
  • Updated dependencies:
    • @remix-run/server-runtime@2.0.0
    • @remix-run/web-fetch@4.4.0
    • @remix-run/web-file@3.1.0
    • @remix-run/web-stream@1.1.0
remix-run/remix (@​remix-run/react)

v2.0.0

Compare Source

Major Changes
  • Drop React 17 support (#​7121)

  • Require Node >=18.0.0 (#​6939)

  • Remove unstable_shouldReload, which has been replaced by shouldRevalidate (#​6865)

  • The route meta API now defaults to the new "V2 Meta" API (#​6958)

  • Promote the future.v2_dev flag in remix.config.js to a root level dev config (#​7002)

  • Remove v2_errorBoundary flag and CatchBoundary implementation (#​6906)

  • Remove back-compat layer for useFetcher/useFetchers, which includes a few small breaking changes (#​6874)

    • fetcher.type has been removed since it can be derived from other available information
    • "Submission" fields have been flattened from fetcher.submission down onto the root fetcher object, and prefixed with form in some cases (fetcher.submission.action => fetcher.formAction)
    • <fetcher.Form method="get"> is now more accurately categorized as state:"loading" instead of state:"submitting" to better align with the underlying GET request
  • Remove v2_normalizeFormMethod future flag - all formMethod values will be normalized in v2 (#​6875)

  • Remove deprecated useTransition hook in favor of useNavigation - useNavigation is almost identical with a few exceptions: (#​6870)

    • useTransition.type has been removed since it can be derived from other available information
    • "Submission" fields have been flattened from useTransition().submission down onto the root useNavigation() object
    • <Form method="get"> is now more accurately categorized as state:"loading" instead of state:"submitting" to better align with the underlying GET navigation
  • Remove v2_routeConvention flag - the flat route file convention is now standard. (#​6969)

  • Remove v2_headers flag - it is now the default behavior to use the deepest headers function in the route tree. (#​6979)

  • Removed/adjusted types to prefer unknown over any and to align with underlying React Router types (#​7319, #​7354):

    • Renamed the useMatches() return type from RouteMatch to UIMatch
    • Renamed LoaderArgs/ActionArgs to LoaderFunctionArgs/ActionFunctionArgs
    • AppData changed from any to unknown
    • Location["state"] (useLocation.state) changed from any to unknown
    • UIMatch["data"] (useMatches()[i].data) changed from any to unknown
    • UIMatch["handle"] (useMatches()[i].handle) changed from { [k: string]: any } to unknown
    • Fetcher["data"] (useFetcher().data) changed from any to unknown
    • MetaMatch.handle (used in meta()) changed from any to unknown
    • AppData/RouteHandle are no longer exported as they are just aliases for unknown
  • Remove imagesizes & imagesrcset properties from HtmlLinkDescriptor, LinkDescriptor & PrefetchPageDescriptor types (#​6936)

  • Remove deprecated REMIX_DEV_SERVER_WS_PORT env var (#​6965)

    • use remix dev's '--port/port option instead
  • Removed support for "magic exports" from the remix package. This package can be removed from your package.json and you should update all imports to use the source @remix-run/* packages: (#​6895)

    - import type { ActionArgs } from "remix";
    - import { json, useLoaderData } from "remix";
    + import type { ActionArgs } from "@&#8203;remix-run/node";
    + import { json } from "@&#8203;remix-run/node";
    + import { useLoaderData } from "@&#8203;remix-run/react";
Minor Changes
  • Export the Navigation type returned from useNavigation (#​7136)
  • Update Remix to use React Router route.lazy for module loading (#​7133)
Patch Changes
  • Add error to meta() params so you can render error titles, etc. (#​7105)

    export function meta({ error }) {
      return [{ title: error.message }];
    }
  • Re-Export ShouldRevalidateFunctionArgs type from React Router (#​7316)

  • Deduplicate prefetch link tags (#​7060)

  • Skip preloading of stylesheets on client-side route transitions if the browser does not support <link rel=preload> (#​7106)

    • This prevents us from hanging on client-side navigations when we try to preload stylesheets and never receive a load/error event on the link tag
  • Export proper ErrorResponse type for usage alongside isRouteErrorResponse (#​7244)

  • Use the hostname from REMIX_DEV_ORIGIN to connect to the live reload socket (#​6923)

  • Use unique key for script:ld+json meta descriptors (#​6954)

  • Fix live reload port when set explicitly as a prop (#​7358)

  • Fix types for useLoaderData when using Yarn PnP (#​7137)

  • Updated dependencies:

remix-run/remix (@​remix-run/serve)

v2.0.0

Compare Source

Major Changes
  • remix-serve now picks an open port if 3000 is taken (#​7278)

    • If PORT env var is set, remix-serve will use that port
    • Otherwise, remix-serve picks an open port (3000 unless that is already taken)
  • Integrate manual mode in remix-serve (#​7231)

  • Remove undocumented createApp Node API (#​7229)

    • remix-serve is a CLI, not a library
  • Require Node >=18.0.0 (#​6939)

  • Promote the future.v2_dev flag in remix.config.js to a root level dev config (#​7002)

  • Default to serverModuleFormat: "esm" and update remix-serve to use dynamic import to support ESM and CJS build outputs (#​6949)

  • Preserve dynamic imports in remix-serve for external bundle (#​7173)

  • For preparation of using Node's built in fetch implementation, installing the fetch globals is now a responsibility of the app server (#​7009)

    • If you are using remix-serve, nothing is required

    • If you are using your own app server, you will need to install the globals yourself

      import { installGlobals } from "@&#8203;remix-run/node";
      
      installGlobals();
  • source-map-support is now a responsibility of the app server (#​7009)

    • If you are using remix-serve, nothing is required

    • If you are using your own app server, you will need to install source-map-support yourself.

      npm i source-map-support
      import sourceMapSupport from "source-map-support";
      sourceMapSupport.install();
Patch Changes
  • Update remix-serve usage error message to support ESM projects (#​7400)
  • Updated dependencies:
    • @remix-run/node@2.0.0
    • @remix-run/express@2.0.0

Configuration

📅 Schedule: Branch creation - "before 4am on Monday" (UTC), Automerge - "after 9am and before 5pm every weekday" (UTC).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@renovate renovate bot requested a review from alexolivier September 18, 2023 02:03
@renovate
Copy link
Contributor Author

renovate bot commented Sep 18, 2023

⚠ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: package-lock.json
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR! 
npm ERR! While resolving: @clerk/remix@2.10.2
npm ERR! Found: @remix-run/react@2.0.0
npm ERR! node_modules/@remix-run/react
npm ERR!   @remix-run/react@"^2.0.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer @remix-run/react@"^1.7.6" from @clerk/remix@2.10.2
npm ERR! node_modules/@clerk/remix
npm ERR!   @clerk/remix@"^2.5.5" from the root project
npm ERR! 
npm ERR! Conflicting peer dependency: @remix-run/react@1.19.3
npm ERR! node_modules/@remix-run/react
npm ERR!   peer @remix-run/react@"^1.7.6" from @clerk/remix@2.10.2
npm ERR!   node_modules/@clerk/remix
npm ERR!     @clerk/remix@"^2.5.5" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR! 
npm ERR! 
npm ERR! For a full report see:
npm ERR! /tmp/worker/defad1/e0e7a6/cache/others/npm/_logs/2023-09-18T02_03_05_023Z-eresolve-report.txt

npm ERR! A complete log of this run can be found in: /tmp/worker/defad1/e0e7a6/cache/others/npm/_logs/2023-09-18T02_03_05_023Z-debug-0.log

@renovate
Copy link
Contributor Author

renovate bot commented Sep 22, 2023

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 2.x releases. But if you manually upgrade to 2.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate renovate bot deleted the renovate/major-2-remix-monorepo branch September 22, 2023 09:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant