Skip to content
Merged
Show file tree
Hide file tree
Changes from 101 commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
45f9313
checkpoint: hydrogen lib is pulling in RR7 and types are fixed
balazsbajorics Apr 10, 2025
61d4013
Update plugin.ts
balazsbajorics Apr 10, 2025
c5b86d0
Update vite.config.ts
balazsbajorics Apr 10, 2025
dd65b9a
gitignore and eslint ignore changes
balazsbajorics Apr 10, 2025
5bc438f
checkpoint: the skeleton is semi-updated, typecheck runs, npm run dev…
balazsbajorics Apr 10, 2025
14575e9
stripping sharedOptions.remixConfig from the hydrogen vite plugin
balazsbajorics Apr 10, 2025
7f5b27f
updating remix-oxygen
balazsbajorics Apr 14, 2025
519a692
remove the classic compiler option from hydrogen-cli
balazsbajorics Apr 14, 2025
fac7ad8
removing the classic remix example
balazsbajorics Apr 14, 2025
dfcf8af
removing the classic-remix example leftovers
balazsbajorics Apr 14, 2025
355364f
Merge branch 'bb-remove-classic-compiler' into spike-7
balazsbajorics Apr 15, 2025
73f0e29
checkpoint: CLI builds but the tests fail
balazsbajorics Apr 16, 2025
3e747de
fix json syntax error in skeleton tsconfig.json
balazsbajorics Apr 22, 2025
03536b4
changing all examples package jsons to match the skeleton
balazsbajorics Apr 22, 2025
367cf23
fixing typo
balazsbajorics Apr 22, 2025
5beb1bc
fixing two false detections of classic projects
balazsbajorics Apr 22, 2025
d727ca1
removing @remix-run/fs-routes from root package.json
balazsbajorics Apr 22, 2025
7737477
do I need react-router-dom in the skeleton too?
balazsbajorics Apr 22, 2025
49f7d32
pruning remix-config.ts in cli
balazsbajorics Apr 22, 2025
b333adc
fixing tsconfig of cli
balazsbajorics Apr 22, 2025
0db6ec1
fixing types of hydrogen Pagination.ts
balazsbajorics Apr 22, 2025
c0a814e
pruning exports from remix-oxygen/index.ts – note: all of these re-ex…
balazsbajorics Apr 22, 2025
3ec7ff5
removing outdated reference to @remix-run/server-runtime here
balazsbajorics Apr 22, 2025
3feb777
removing no-longer applicable remix-run reference
balazsbajorics Apr 22, 2025
6127343
Merge branch 'main' into spike-7
balazsbajorics Apr 22, 2025
aa4958d
type fix in hydrogen / VariantSelector.ts
balazsbajorics Apr 22, 2025
8f6d88c
Update package-lock.json
balazsbajorics Apr 22, 2025
63ada6b
updating ALL of the examples to React Router 7 via codemod
balazsbajorics Apr 22, 2025
2326b35
Update entry.server.tsx
balazsbajorics Apr 22, 2025
39f0929
it seems like the skeleton's build directory should be 'dist' accordi…
balazsbajorics Apr 22, 2025
187eff5
_temporarily_ adding react-router-dom to the root package. this shoul…
balazsbajorics Apr 22, 2025
2cfcee4
respect HYDROGEN_DISABLE_VIRTUAL_ROUTES in hydrogenRoutes
balazsbajorics Apr 24, 2025
13f21f9
prettier change
balazsbajorics Apr 24, 2025
94ede5a
the auto-upgrade now ALSO works with react router
balazsbajorics Apr 24, 2025
1888bac
fixing build
balazsbajorics Apr 24, 2025
0d55938
CLI: temporarily skipping typecheck test
balazsbajorics Apr 24, 2025
6d10aea
Update collections.$handle.tsx
balazsbajorics Apr 24, 2025
93c579f
Merge branch 'main' into spike-7
balazsbajorics Apr 24, 2025
1196081
fixing botched merge
balazsbajorics Apr 24, 2025
0945063
running Prettier on package.json
balazsbajorics Apr 24, 2025
7981a49
adding this vite config v6 fix, just in case... but maybe we will rem…
balazsbajorics Apr 24, 2025
7574f8d
oh god
balazsbajorics Apr 25, 2025
115aa36
Merge branch 'main' into spike-7
balazsbajorics Apr 25, 2025
b93e8d8
a few more remix-runs
balazsbajorics Apr 25, 2025
7cf7fd8
Update Footer.tsx
balazsbajorics Apr 28, 2025
76c0fa8
codegen now runs react-router typegen
balazsbajorics Apr 28, 2025
313e68b
removing react-router typegen from the typecheck command
balazsbajorics Apr 28, 2025
c223c3c
Update package.json
balazsbajorics Apr 28, 2025
3663557
fixing types in examples/express
balazsbajorics Apr 28, 2025
2957f62
skeleton env.d.ts refers to react-router now
balazsbajorics Apr 28, 2025
1e5e3d0
fixing skeleton type errors
balazsbajorics Apr 28, 2025
1c13e9c
fixing examples/express/env.d.ts
balazsbajorics Apr 28, 2025
12b0a04
fixing all the env.d.ts 'es
balazsbajorics Apr 28, 2025
03e426f
adding these env.d.ts es to fix the remaining example tsc failures
balazsbajorics Apr 29, 2025
8039628
Merge branch 'main' into spike-7
balazsbajorics Apr 29, 2025
109b6eb
Merge branch 'main' into spike-7
balazsbajorics May 1, 2025
c5e77d8
Merge branch 'main' into spike-7
balazsbajorics May 5, 2025
9c91dcc
Update package-lock.json
balazsbajorics May 5, 2025
f847129
Snapit: adding @shopify/remix-oxygen to the forced changeset
balazsbajorics May 6, 2025
43139f6
adding back three re-exported types from react-router
balazsbajorics May 6, 2025
8895aec
Update codegen.ts
balazsbajorics May 7, 2025
4fcce0e
Merge branch 'main' into spike-7
balazsbajorics May 9, 2025
59079d2
adding .react-router to the skeleton gitignore
balazsbajorics May 9, 2025
6030c67
undo root .gitignore changes
balazsbajorics May 9, 2025
6ab7fdb
react-router codegen supports watch flag now
balazsbajorics May 9, 2025
16f2880
Merge branch 'spike-7' of https://github.com/Shopify/hydrogen into sp…
balazsbajorics May 9, 2025
0b81d69
reformatting codegen.ts
balazsbajorics May 9, 2025
bf36e4e
TODO BEFORE MERGE remove ALL references to legacy-runtime
balazsbajorics May 9, 2025
7baf0c3
fixing a few react-router imports
balazsbajorics May 9, 2025
8e1ecca
const REMIX_COMPILER_ERROR_MESSAGE
balazsbajorics May 9, 2025
28fc65e
removing react-router and react-router-dom from the root dependencies
balazsbajorics May 9, 2025
e5b074f
regenerated package-lock.json from the main baseline
balazsbajorics May 9, 2025
369f9d8
Revert "regenerated package-lock.json from the main baseline"
balazsbajorics May 9, 2025
cc89bf9
Revert "removing react-router and react-router-dom from the root depe…
balazsbajorics May 9, 2025
ceb0c88
pinning react-router to 7.6.0
balazsbajorics May 12, 2025
9741c41
adding a changeset
balazsbajorics May 12, 2025
c6b9e82
Merge branch 'main' into spike-7
balazsbajorics May 12, 2025
60342e3
adding cursor rule with hydrogen upgrade instructions
balazsbajorics May 12, 2025
fb9d266
Merge branch 'main' into spike-7
balazsbajorics May 14, 2025
42cdf61
Merge branch 'main' into spike-7
balazsbajorics May 15, 2025
726235d
Update package-lock.json
balazsbajorics May 15, 2025
6c84288
simplifying skeleton's virtual import
balazsbajorics May 15, 2025
572c10f
Update thick-tigers-grab.md
balazsbajorics May 15, 2025
e5a3de1
removing all references to legacy-runtime
balazsbajorics May 15, 2025
b670041
Merge branch 'spike-7' of https://github.com/Shopify/hydrogen into sp…
balazsbajorics May 15, 2025
6d0252e
Update dev.env.d.ts
balazsbajorics May 15, 2025
ced821b
Update env.d.ts
balazsbajorics May 15, 2025
2c03c48
scrubbing more references to legacyRuntime
balazsbajorics May 15, 2025
62ce997
Merge branch 'spike-7' of https://github.com/Shopify/hydrogen into sp…
balazsbajorics May 15, 2025
eb37fcd
whooops
balazsbajorics May 15, 2025
fddab73
re-enabling createContentSecurityPolicy example
balazsbajorics May 19, 2025
731ef0a
Merge branch 'main' into spike-7
balazsbajorics May 19, 2025
6115094
Merge branch 'main' into spike-7
balazsbajorics May 19, 2025
0454157
try removing the HYDROGEN_DISABLE_VIRTUAL_ROUTES fix
balazsbajorics May 19, 2025
325778e
will this test pass now, maybe?
balazsbajorics May 19, 2025
deaeaaa
removing two TODO BEFORE MERGEs as they are done!
balazsbajorics May 19, 2025
7d4aaeb
removing remix-oxygen/src/implementations.ts
balazsbajorics May 19, 2025
215b6f8
what happens if we only change the relevant parts in the vite.config.ts?
balazsbajorics May 19, 2025
0d9ede5
Delete upgrade-hydrogen-react-router-7-2025.5.0.mdc
balazsbajorics May 19, 2025
3330549
Merge branch 'main' into spike-7
balazsbajorics May 20, 2025
29a2e2a
Major version bumping libraries that now depend on react-router@7
balazsbajorics May 20, 2025
6d5d89b
renaming remixBuild to reactRouterBuild
balazsbajorics May 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/thick-tigers-grab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@shopify/remix-oxygen': patch
'skeleton': patch
'@shopify/hydrogen': patch
'@shopify/cli-hydrogen': patch
'@shopify/create-hydrogen': patch
---

Migrating to React Router 7
7 changes: 7 additions & 0 deletions .changeset/warm-beers-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@shopify/remix-oxygen": major
"@shopify/cli-hydrogen": major
"@shopify/hydrogen": patch
---

Major version bumping libraries that now depend on react-router@7
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type {
SellingPlanFragment,
} from 'storefrontapi.generated';
import {useMemo} from 'react';
import {useLocation} from '@remix-run/react';
import {useLocation} from 'react-router';

/* Enriched sellingPlan type including isSelected and url */
export type SellingPlan = SellingPlanFragment & {
Expand Down
2 changes: 1 addition & 1 deletion examples/b2b/app/components/B2BLocationProvider.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {createContext, useContext, useEffect, useState, useMemo} from 'react';
import {useFetcher} from '@remix-run/react';
import {useFetcher} from 'react-router';
import {type CustomerCompany} from '~/root';

export type B2BLocationContextValue = {
Expand Down
6 changes: 4 additions & 2 deletions examples/b2b/app/components/CartLineItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type {CartLineUpdateInput} from '@shopify/hydrogen/storefront-api-types';
import type {CartLayout} from '~/components/CartMain';
import {CartForm, Image, type OptimisticCartLine} from '@shopify/hydrogen';
import {useVariantUrl} from '~/lib/variants';
import {Link} from '@remix-run/react';
import {Link} from 'react-router';
import {ProductPrice} from '~/components/ProductPrice';
import {useAside} from '~/components/Aside';
import type {CartApiQueryFragment} from 'storefrontapi.generated';
Expand Down Expand Up @@ -113,7 +113,9 @@ function CartLineQuantity({line}: {line: CartLine}) {
value={nextQuantity}
/***********************************************/
/********** EXAMPLE UPDATE STARTS ************/
disabled={Boolean(maximum && nextQuantity > maximum || !!isOptimistic)}
disabled={Boolean(
(maximum && nextQuantity > maximum) || !!isOptimistic,
)}
/********** EXAMPLE UPDATE END ************/
/***********************************************/
>
Expand Down
2 changes: 1 addition & 1 deletion examples/b2b/app/components/Header.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Suspense} from 'react';
import {Await, NavLink} from '@remix-run/react';
import {Await, NavLink} from 'react-router';
import {type CartViewPayload, useAnalytics} from '@shopify/hydrogen';
import type {HeaderQuery, CartApiQueryFragment} from 'storefrontapi.generated';
import {useAside} from '~/components/Aside';
Expand Down
4 changes: 2 additions & 2 deletions examples/b2b/app/components/ProductForm.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Link, useNavigate} from '@remix-run/react';
import {Link, useNavigate} from 'react-router';
import {type MappedProductOptions} from '@shopify/hydrogen';
import type {
Maybe,
Expand Down Expand Up @@ -104,7 +104,7 @@ export function ProductForm({
</div>
<br />
</div>
)
);
})}
<br />
<AddToCartButton
Expand Down
4 changes: 2 additions & 2 deletions examples/b2b/app/root.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {useNonce, getShopAnalytics, Analytics} from '@shopify/hydrogen';
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
import {
Links,
Meta,
Expand All @@ -9,8 +8,9 @@ import {
useRouteLoaderData,
ScrollRestoration,
isRouteErrorResponse,
type LoaderFunctionArgs,
type ShouldRevalidateFunction,
} from '@remix-run/react';
} from 'react-router';
import favicon from '~/assets/favicon.svg';
import resetStyles from '~/styles/reset.css?url';
import appStyles from '~/styles/app.css?url';
Expand Down
3 changes: 1 addition & 2 deletions examples/b2b/app/routes/b2blocations.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
import {useLoaderData} from '@remix-run/react';
import {type LoaderFunctionArgs, useLoaderData} from 'react-router';
import {B2BLocationSelector} from '../components/B2BLocationSelector';
import {CUSTOMER_LOCATIONS_QUERY} from '~/graphql/customer-account/CustomerLocationsQuery';

Expand Down
7 changes: 5 additions & 2 deletions examples/b2b/app/routes/products.$handle.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import {type LoaderFunctionArgs} from '@shopify/remix-oxygen';
import {useLoaderData, type MetaFunction} from '@remix-run/react';
import {
useLoaderData,
type LoaderFunctionArgs,
type MetaFunction,
} from 'react-router';
import {
getSelectedProductOptions,
Analytics,
Expand Down
4 changes: 2 additions & 2 deletions examples/b2b/storefrontapi.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ export type PageQueryVariables = StorefrontAPI.Exact<{

export type PageQuery = {
page?: StorefrontAPI.Maybe<
Pick<StorefrontAPI.Page, 'id' | 'title' | 'body'> & {
Pick<StorefrontAPI.Page, 'handle' | 'id' | 'title' | 'body'> & {
seo?: StorefrontAPI.Maybe<
Pick<StorefrontAPI.Seo, 'description' | 'title'>
>;
Expand Down Expand Up @@ -1260,7 +1260,7 @@ interface GeneratedQueryTypes {
return: CatalogQuery;
variables: CatalogQueryVariables;
};
'#graphql\n query Page(\n $language: LanguageCode,\n $country: CountryCode,\n $handle: String!\n )\n @inContext(language: $language, country: $country) {\n page(handle: $handle) {\n id\n title\n body\n seo {\n description\n title\n }\n }\n }\n': {
'#graphql\n query Page(\n $language: LanguageCode,\n $country: CountryCode,\n $handle: String!\n )\n @inContext(language: $language, country: $country) {\n page(handle: $handle) {\n handle\n id\n title\n body\n seo {\n description\n title\n }\n }\n }\n': {
return: PageQuery;
variables: PageQueryVariables;
};
Expand Down
2 changes: 1 addition & 1 deletion examples/custom-cart-method/app/components/Cart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import type {
CartLineUpdateInput,
SelectedOption,
} from '@shopify/hydrogen/storefront-api-types';
import {Link} from '@remix-run/react';
import {Link} from 'react-router';
import type {CartApiQueryFragment} from 'storefrontapi.generated';
import {useVariantUrl} from '~/lib/variants';

Expand Down
10 changes: 8 additions & 2 deletions examples/custom-cart-method/app/routes/cart.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import {type MetaFunction, useLoaderData} from '@remix-run/react';
import {
type ActionFunctionArgs,
type HeadersFunction,
type LoaderFunctionArgs,
type MetaFunction,
data,
useLoaderData,
} from 'react-router';
import type {CartQueryDataReturn} from '@shopify/hydrogen';
import {CartForm} from '@shopify/hydrogen';
import {data, type LoaderFunctionArgs, type ActionFunctionArgs, type HeadersFunction} from '@shopify/remix-oxygen';
import type {
SelectedOptionInput,
CartLineUpdateInput,
Expand Down
4 changes: 2 additions & 2 deletions examples/custom-cart-method/storefrontapi.generated.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ export type PageQueryVariables = StorefrontAPI.Exact<{

export type PageQuery = {
page?: StorefrontAPI.Maybe<
Pick<StorefrontAPI.Page, 'id' | 'title' | 'body'> & {
Pick<StorefrontAPI.Page, 'handle' | 'id' | 'title' | 'body'> & {
seo?: StorefrontAPI.Maybe<
Pick<StorefrontAPI.Seo, 'description' | 'title'>
>;
Expand Down Expand Up @@ -1179,7 +1179,7 @@ interface GeneratedQueryTypes {
return: CatalogQuery;
variables: CatalogQueryVariables;
};
'#graphql\n query Page(\n $language: LanguageCode,\n $country: CountryCode,\n $handle: String!\n )\n @inContext(language: $language, country: $country) {\n page(handle: $handle) {\n id\n title\n body\n seo {\n description\n title\n }\n }\n }\n': {
'#graphql\n query Page(\n $language: LanguageCode,\n $country: CountryCode,\n $handle: String!\n )\n @inContext(language: $language, country: $country) {\n page(handle: $handle) {\n handle\n id\n title\n body\n seo {\n description\n title\n }\n }\n }\n': {
return: PageQuery;
variables: PageQueryVariables;
};
Expand Down
4 changes: 2 additions & 2 deletions examples/express/app/entry.client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
* For more information, see https://remix.run/file-conventions/entry.client
*/

import {RemixBrowser} from '@remix-run/react';
import {HydratedRouter} from 'react-router/dom';
import {startTransition, StrictMode} from 'react';
import {hydrateRoot} from 'react-dom/client';

startTransition(() => {
hydrateRoot(
document,
<StrictMode>
<RemixBrowser />
<HydratedRouter />
</StrictMode>,
);
});
24 changes: 11 additions & 13 deletions examples/express/app/entry.server.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

import {PassThrough} from 'node:stream';

import type {AppLoadContext, EntryContext} from '@remix-run/node';
import type {AppLoadContext, EntryContext} from 'react-router';
import {Response} from '@remix-run/web-fetch';
import {RemixServer} from '@remix-run/react';
import {ServerRouter} from 'react-router';
import {isbot} from 'isbot';
import {renderToPipeableStream} from 'react-dom/server';
import {createContentSecurityPolicy} from '@shopify/hydrogen';
Expand All @@ -19,30 +19,30 @@ export default function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
remixContext: EntryContext,
reactRouterContext: EntryContext,
loadContext: AppLoadContext,
) {
return isbot(request.headers.get('user-agent'))
? handleBotRequest(
request,
responseStatusCode,
responseHeaders,
remixContext,
reactRouterContext,
loadContext,
)
: handleBrowserRequest(
request,
responseStatusCode,
responseHeaders,
remixContext,
reactRouterContext,
);
}

function handleBotRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
remixContext: EntryContext,
reactRouterContext: EntryContext,
context: AppLoadContext,
) {
return new Promise((resolve, reject) => {
Expand All @@ -55,10 +55,9 @@ function handleBotRequest(

const {pipe, abort} = renderToPipeableStream(
<NonceProvider>
<RemixServer
context={remixContext}
<ServerRouter
context={reactRouterContext}
url={request.url}
abortDelay={ABORT_DELAY}
nonce={nonce}
/>
</NonceProvider>,
Expand Down Expand Up @@ -99,17 +98,16 @@ function handleBrowserRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
remixContext: EntryContext,
reactRouterContext: EntryContext,
) {
const {nonce, header, NonceProvider} = createContentSecurityPolicy();

return new Promise((resolve, reject) => {
const {pipe, abort} = renderToPipeableStream(
<NonceProvider>
<RemixServer
context={remixContext}
<ServerRouter
context={reactRouterContext}
url={request.url}
abortDelay={ABORT_DELAY}
nonce={nonce}
/>
</NonceProvider>,
Expand Down
4 changes: 1 addition & 3 deletions examples/express/app/root.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import {
type LinksFunction,
type LoaderFunctionArgs,
} from '@remix-run/node';
import {
Links,
Meta,
Outlet,
Scripts,
ScrollRestoration,
useRouteLoaderData,
} from '@remix-run/react';
} from 'react-router';
import type {Cart, Shop} from '@shopify/hydrogen/storefront-api-types';
import styles from './styles/app.css?url';
import {useNonce} from '@shopify/hydrogen';
Expand Down
4 changes: 2 additions & 2 deletions examples/express/app/routes.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {flatRoutes} from '@remix-run/fs-routes';
import type {RouteConfig} from '@remix-run/route-config';
import {flatRoutes} from '@react-router/fs-routes';
import type {RouteConfig} from '@react-router/dev/routes';
import {hydrogenRoutes} from '@shopify/hydrogen';

export default hydrogenRoutes([...(await flatRoutes())]) satisfies RouteConfig;
2 changes: 1 addition & 1 deletion examples/express/app/routes/_index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {useRouteError, isRouteErrorResponse, Link} from '@remix-run/react';
import {useRouteError, isRouteErrorResponse, Link} from 'react-router';

export default function Index() {
return (
Expand Down
3 changes: 1 addition & 2 deletions examples/express/app/routes/products.$handle.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {type LoaderFunctionArgs} from '@remix-run/node';
import {useLoaderData} from '@remix-run/react';
import {type LoaderFunctionArgs, useLoaderData} from 'react-router';

export async function loader({params, context}: LoaderFunctionArgs) {
const {handle} = params;
Expand Down
12 changes: 11 additions & 1 deletion examples/express/env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ declare global {
}
}

declare module '@remix-run/node' {
declare module 'react-router' {
/**
* Declare local additions to the Remix loader context.
*/
Expand All @@ -32,6 +32,16 @@ declare module '@remix-run/node' {
session: AppSession;
}

// TODO: remove this once we've migrated to `Route.LoaderArgs` instead for our loaders
interface LoaderFunctionArgs {
context: AppLoadContext;
}

// TODO: remove this once we've migrated to `Route.ActionArgs` instead for our actions
interface ActionFunctionArgs {
context: AppLoadContext;
}

interface SessionData extends HydrogenSessionData {
// declare local additions to the Remix session data here
}
Expand Down
20 changes: 9 additions & 11 deletions examples/express/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,14 @@
"sideEffects": false,
"type": "module",
"scripts": {
"build": "remix vite:build",
"build": "react-router build",
"dev": "cross-env NODE_ENV=development nodemon --require dotenv/config ./server.mjs --watch ./server.mjs",
"start": "cross-env NODE_ENV=production node ./server.mjs",
"typecheck": "tsc"
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@remix-run/express": "^2.16.1",
"@remix-run/node": "^2.16.1",
"@remix-run/react": "^2.16.1",
"@remix-run/server-runtime": "^2.16.1",
"@react-router/express": "7.6.0",
"@react-router/node": "7.6.0",
"@remix-run/eslint-config": "^2.16.1",
"@shopify/hydrogen": "2025.4.0",
"compression": "^1.7.4",
Expand All @@ -22,13 +20,13 @@
"isbot": "^5.1.21",
"morgan": "^1.10.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react-dom": "^18.2.0",
"react-router": "7.6.0"
},
"devDependencies": {
"@eslint/js": "^9.18.0",
"@remix-run/dev": "^2.16.1",
"@remix-run/fs-routes": "^2.16.1",
"@remix-run/route-config": "^2.16.1",
"@react-router/dev": "7.6.0",
"@react-router/fs-routes": "7.6.0",
"@shopify/cli": "~3.79.2",
"@types/compression": "^1.7.2",
"@types/express": "^4.17.17",
Expand All @@ -45,4 +43,4 @@
"engines": {
"node": ">=18.0.0"
}
}
}
Loading