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) #88

Merged
merged 2 commits into from
Sep 20, 2023
Merged

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Sep 16, 2023

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@remix-run/cloudflare ^1.13.0 -> ^2.0.0 age adoption passing confidence
@remix-run/cloudflare-pages ^1.13.0 -> ^2.0.0 age adoption passing confidence
@remix-run/dev (source) ^1.13.0 -> ^2.0.0 age adoption passing confidence
@remix-run/react ^1.13.0 -> ^2.0.0 age adoption passing confidence

Release Notes

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

v2.0.0

Compare Source

Major Changes
  • Remove createCloudflareKVSessionStorage (#​6898)

  • Drop @cloudflare/workers-types v2 & v3 support (#​6925)

  • 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
  • Require Node >=18.0.0 (#​6939)

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

  • 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
Patch Changes
  • Export proper ErrorResponse type for usage alongside isRouteErrorResponse (#​7244)
  • Updated dependencies:
remix-run/remix (@​remix-run/cloudflare-pages)

v2.0.0

Compare Source

Major Changes
  • Require Node >=18.0.0 (#​6939)
  • Drop @cloudflare/workers-types v2 & v3 support (#​6925)
Patch Changes
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/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:


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 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.

@renovate renovate bot added the dependencies Relates to project dependencies label Sep 16, 2023
@renovate
Copy link
Contributor Author

renovate bot commented Sep 16, 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 unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: dispoflare@undefined
npm ERR! Found: @cloudflare/[email protected]
npm ERR! node_modules/@cloudflare/workers-types
npm ERR!   dev @cloudflare/workers-types@"^3.18.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer @cloudflare/workers-types@"^4.0.0" from @remix-run/[email protected]
npm ERR! node_modules/@remix-run/cloudflare
npm ERR!   @remix-run/cloudflare@"^2.0.0" 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/a5db51/dd2377/cache/others/npm/_logs/2023-09-20T18_48_00_606Z-eresolve-report.txt

npm ERR! A complete log of this run can be found in: /tmp/worker/a5db51/dd2377/cache/others/npm/_logs/2023-09-20T18_48_00_606Z-debug-0.log

@LeoColomb
Copy link
Owner

Waiting for getsentry/sentry-javascript#8940

@renovate renovate bot force-pushed the renovate/major-remix-monorepo branch from 0f26152 to 9055cad Compare September 20, 2023 18:48
@renovate
Copy link
Contributor Author

renovate bot commented Sep 20, 2023

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

Warning: custom changes will be lost.

@LeoColomb LeoColomb merged commit 1c3b537 into main Sep 20, 2023
2 checks passed
@LeoColomb LeoColomb deleted the renovate/major-remix-monorepo branch September 20, 2023 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Relates to project dependencies
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant