diff --git a/.github/workflows/release-experimental.yml b/.github/workflows/release-experimental.yml index f1cbe2c77b..f69d4dd500 100644 --- a/.github/workflows/release-experimental.yml +++ b/.github/workflows/release-experimental.yml @@ -1,8 +1,10 @@ -name: ๐Ÿš€ Release (experimental) +name: ๐Ÿงช Experimental Release + on: - push: - tags: - - "v0.0.0-experimental*" + workflow_dispatch: + inputs: + branch: + required: true concurrency: ${{ github.workflow }}-${{ github.ref }} @@ -10,16 +12,17 @@ env: CI: true jobs: - release: - name: ๐Ÿง‘โ€๐Ÿ”ฌ Experimental Release - if: | - github.repository == 'remix-run/react-router' && - contains(github.ref, 'experimental') + experimental: + name: ๐Ÿงช Experimental Release + if: github.repository == 'remix-run/react-router' runs-on: ubuntu-latest steps: - name: โฌ‡๏ธ Checkout repo uses: actions/checkout@v4 with: + ref: ${{ github.event.inputs.branch }} + # checkout using a custom token so that we can push later on + token: ${{ secrets.GITHUB_TOKEN }} fetch-depth: 0 - name: ๐Ÿ“ฆ Setup pnpm @@ -28,12 +31,22 @@ jobs: - name: โŽ” Setup node uses: actions/setup-node@v4 with: - cache: pnpm node-version-file: ".nvmrc" + cache: "pnpm" - name: ๐Ÿ“ฅ Install deps run: pnpm install --frozen-lockfile + - name: โคด๏ธ Update version + run: | + git config --local user.email "hello@remix.run" + git config --local user.name "Remix Run Bot" + SHORT_SHA=$(git rev-parse --short HEAD) + NEXT_VERSION=0.0.0-experimental-${SHORT_SHA} + git checkout -b experimental/${NEXT_VERSION} + pnpm run version ${NEXT_VERSION} + git push origin --tags + - name: ๐Ÿ— Build run: pnpm build diff --git a/contributors.yml b/contributors.yml index b8254acaa9..a2aab00d2e 100644 --- a/contributors.yml +++ b/contributors.yml @@ -49,6 +49,7 @@ - chensokheng - chrisngobanh - christopherchudzicki +- ChristophP - christowiz - codeape2 - coryhouse @@ -60,6 +61,7 @@ - david-bezero - david-crespo - decadentsavant +- dgrijuela - DigitalNaut - dmitrytarassov - dokeet @@ -75,6 +77,7 @@ - ericschn - faergeek - FilipJirsak +- focusotter - frontsideair - fyzhu - fz6m @@ -125,6 +128,8 @@ - kachun333 - Kakamotobi - kantuni +- kapil-patel +- kapilepatel - KaranRandhir - kark - KAROTT7 @@ -174,9 +179,11 @@ - mikib0 - minami-minami - minthulim +- mlewando - modex98 - morleytatro - ms10596 +- mtliendo - ned-park - nilubisan - Nismit @@ -202,6 +209,7 @@ - ryanflorence - ryanhiebert - sanketshah19 +- saul-atomrigs - sbolel - scarf005 - senseibarni diff --git a/docs/components/link.md b/docs/components/link.md index e7224d45ff..3fccea2ee3 100644 --- a/docs/components/link.md +++ b/docs/components/link.md @@ -91,7 +91,7 @@ function EditContact() { } ``` -Please note that `relative: "path"` only impacts the resolution of a relative path. It does not change the the "starting" location for that relative path resolution. This resolution is always relative to the current location in the Route hierarchy (i.e., the route `Link` is rendered in). +Please note that `relative: "path"` only impacts the resolution of a relative path. It does not change the "starting" location for that relative path resolution. This resolution is always relative to the current location in the Route hierarchy (i.e., the route `Link` is rendered in). If you wish to use path-relative routing against the current URL instead of the route hierarchy, you can do that with the current [`location`][use-location] and the `URL` constructor (note the trailing slash behavior): @@ -107,7 +107,7 @@ new URL("..", window.origin + location.pathname); // With trailing slashes: new URL(".", window.origin + location.pathname + "/"); -// 'https://remix.run/docs/en/main/start/future-flags/' +// 'https://remix.run/docs/en/main/start/quickstart/' new URL("..", window.origin + location.pathname + "/"); // 'https://remix.run/docs/en/main/start/' ``` diff --git a/docs/route/loader.md b/docs/route/loader.md index f3aaf73cc3..9c5351e93e 100644 --- a/docs/route/loader.md +++ b/docs/route/loader.md @@ -87,7 +87,7 @@ Note that the APIs here are not React Router specific, but rather standard web o ## `loader.hydrate` -If you are [Server-Side Rendering][ssr] and leveraging the `fututre.v7_partialHydration` flag for [Partial Hydration][partialhydration], then you may wish to opt-into running a route `loader` on initial hydration _even though it has hydration data_ (for example, to let a user prime a cache with the hydration data). To force a `loader` to run on hydration in a partial hydration scenario, you can set a `hydrate` property on the `loader` function: +If you are [Server-Side Rendering][ssr] and leveraging the `future.v7_partialHydration` flag for [Partial Hydration][partialhydration], then you may wish to opt-into running a route `loader` on initial hydration _even though it has hydration data_ (for example, to let a user prime a cache with the hydration data). To force a `loader` to run on hydration in a partial hydration scenario, you can set a `hydrate` property on the `loader` function: ## Returning Responses diff --git a/docs/routers/create-browser-router.md b/docs/routers/create-browser-router.md index c9e734ed58..07bbe697db 100644 --- a/docs/routers/create-browser-router.md +++ b/docs/routers/create-browser-router.md @@ -297,14 +297,14 @@ const routes [ ]; let router = createBrowserRouter(routes, { - unstable_dataStrategy({ request, params, matches }) { + async unstable_dataStrategy({ request, params, matches }) { // Run middleware sequentially and let them add data to `context` let context = {}; - for (match of matches) { + for (const match of matches) { if (match.route.handle?.middleware) { await match.route.handle.middleware({ request, params }, context); } - }); + } // Run loaders in parallel with the `context` value return Promise.all( diff --git a/docs/start/tutorial.md b/docs/start/tutorial.md index 8b45bb9d2c..a115a7d289 100644 --- a/docs/start/tutorial.md +++ b/docs/start/tutorial.md @@ -768,14 +768,14 @@ export default function EditContact() { aria-label="First name" type="text" name="first" - defaultValue={contact.first} + defaultValue={contact?.first} />