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

[ci] release 2024-10 #2612

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

shopify-github-actions-access[bot]
Copy link
Contributor

@shopify-github-actions-access shopify-github-actions-access bot commented Oct 21, 2024

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@shopify/cli-hydrogen@9.0.0

Minor Changes

Patch Changes

  • Stabilize getSitemap, getSitemapIndex and implement on skeleton (#2589) by @juanpprieto

    1. Update the getSitemapIndex at /app/routes/[sitemap.xml].tsx
    - import {unstable__getSitemapIndex as getSitemapIndex} from '@shopify/hydrogen';
    + import {getSitemapIndex} from '@shopify/hydrogen';
    1. Update the getSitemap at /app/routes/sitemap.$type.$page[.xml].tsx
    - import {unstable__getSitemap as getSitemap} from '@shopify/hydrogen';
    + import {getSitemap} from '@shopify/hydrogen';

    For a reference implementation please see the skeleton template sitemap routes

  • Add warnings to the Shopify CLI when your app uses reserved routes. These routes are reserved by Oxygen, and any local routes that conflict with them will not be used. (#2613) by @blittle

  • Update to 2024-10 SFAPI (#2570) by @wizardlyhel

  • SFAPI update - Deprecate usages of product.options.values and use product.options.optionValues instead. (#2585) by @wizardlyhel

    1. Update your product graphql query to use the new optionValues field.
      const PRODUCT_FRAGMENT = `#graphql
        fragment Product on Product {
          id
          title
          options {
            name
    -        values
    +        optionValues {
    +          name
    +        }
          }
    1. Update your <VariantSelector> to use the new optionValues field.
      <VariantSelector
        handle={product.handle}
    -    options={product.options.filter((option) => option.values.length > 1)}
    +    options={product.options.filter((option) => option.optionValues.length > 1)}
        variants={variants}
      >
  • Updated dependencies [a0f660aa, 29876f12]:

    • @shopify/hydrogen-codegen@0.3.2
    • @shopify/mini-oxygen@3.1.0

@shopify/mini-oxygen@3.1.0

Minor Changes

  • Support worker compatibility date that aligns with SFAPI release by @wizardlyhel

@shopify/create-hydrogen@5.0.10

Patch Changes

  • Update to 2024-10 SFAPI (#2570) by @wizardlyhel

  • SFAPI update - Deprecate usages of product.options.values and use product.options.optionValues instead. (#2585) by @wizardlyhel

    1. Update your product graphql query to use the new optionValues field.
      const PRODUCT_FRAGMENT = `#graphql
        fragment Product on Product {
          id
          title
          options {
            name
    -        values
    +        optionValues {
    +          name
    +        }
          }
    1. Update your <VariantSelector> to use the new optionValues field.
      <VariantSelector
        handle={product.handle}
    -    options={product.options.filter((option) => option.values.length > 1)}
    +    options={product.options.filter((option) => option.optionValues.length > 1)}
        variants={variants}
      >

@shopify/hydrogen@2024.10.1

Patch Changes

  • Add optional headers param for logout redirect (#2602) by @coryagami

  • Stabilize getSitemap, getSitemapIndex and implement on skeleton (#2589) by @juanpprieto

    1. Update the getSitemapIndex at /app/routes/[sitemap.xml].tsx
    - import {unstable__getSitemapIndex as getSitemapIndex} from '@shopify/hydrogen';
    + import {getSitemapIndex} from '@shopify/hydrogen';
    1. Update the getSitemap at /app/routes/sitemap.$type.$page[.xml].tsx
    - import {unstable__getSitemap as getSitemap} from '@shopify/hydrogen';
    + import {getSitemap} from '@shopify/hydrogen';

    For a reference implementation please see the skeleton template sitemap routes

  • Update <ProductPrice> to remove deprecated code usage for priceV2 and compareAtPriceV2. Remove export for getCustomerPrivacy. (#2601) by @wizardlyhel

  • [Breaking change]: Set up Customer Privacy without the Shopify's cookie banner by default. (#2588) by @wizardlyhel

    If you are using Shopify's cookie banner to handle user consent in your app, you need to set withPrivacyBanner: true to the consent config. Without this update, the Shopify cookie banner will not appear.

      return defer({
        ...
        consent: {
          checkoutDomain: env.PUBLIC_CHECKOUT_DOMAIN,
          storefrontAccessToken: env.PUBLIC_STOREFRONT_API_TOKEN,
    +      withPrivacyBanner: true,
          // localize the privacy banner
          country: args.context.storefront.i18n.country,
          language: args.context.storefront.i18n.language,
        },
      });
  • Update to 2024-10 SFAPI (#2570) by @wizardlyhel

  • Breaking change by @frandiox

    Update createWithCache to make it harder to accidentally cache undesired results. request is now mandatory prop when initializing createWithCache.

    // server.ts
    export default {
      async fetch(
        request: Request,
        env: Env,
        executionContext: ExecutionContext,
      ): Promise<Response> {
        try {
          // ...
    -     const withCache = createWithCache({cache, waitUntil});
    +     const withCache = createWithCache({cache, waitUntil, request});

    createWithCache now returns an object with two utility functions: withCache.run and withCache.fetch. Both have a new prop shouldCacheResult that must be defined.

    The original withCache callback function is now withCache.run. This is useful to run multiple fetch calls and merge their responses, or run any arbitrary code. It caches anything you return, but you can throw if you don't want to cache anything.

      const withCache = createWithCache({cache, waitUntil, request});
    
      const fetchMyCMS = (query) => {
    -    return withCache(['my-cms', query], CacheLong(), async (params) => {
    +    return withCache.run({
    +      cacheKey: ['my-cms', query],
    +      cacheStrategy: CacheLong(),
    +      // Cache if there are no data errors or a specific data that make this result not suited for caching
    +      shouldCacheResult: (result) => !result?.errors,
    +    }, async(params) => {
          const response = await fetch('my-cms.com/api', {
            method: 'POST',
            body: query,
          });
          if (!response.ok) throw new Error(response.statusText);
          const {data, error} = await response.json();
          if (error || !data) throw new Error(error ?? 'Missing data');
          params.addDebugData({displayName: 'My CMS query', response});
          return data;
        });
      };

    New withCache.fetch is for caching simple fetch requests. This method caches the responses if they are OK responses, and you can pass shouldCacheResponse, cacheKey, etc. to modify behavior. data is the consumed body of the response (we need to consume to cache it).

    const withCache = createWithCache({cache, waitUntil, request});
    
    const {data, response} = await withCache.fetch<{data: T; error: string}>(
      'my-cms.com/api',
      {
        method: 'POST',
        headers: {'Content-type': 'application/json'},
        body,
      },
      {
        cacheStrategy: CacheLong(),
        // Cache if there are no data errors or a specific data that make this result not suited for caching
        shouldCacheResponse: (result) => !result?.error,
        cacheKey: ['my-cms', body],
        displayName: 'My CMS query',
      },
    );
  • SFAPI update - Deprecate usages of product.options.values and use product.options.optionValues instead. (#2585) by @wizardlyhel

    1. Update your product graphql query to use the new optionValues field.
      const PRODUCT_FRAGMENT = `#graphql
        fragment Product on Product {
          id
          title
          options {
            name
    -        values
    +        optionValues {
    +          name
    +        }
          }
    1. Update your <VariantSelector> to use the new optionValues field.
      <VariantSelector
        handle={product.handle}
    -    options={product.options.filter((option) => option.values.length > 1)}
    +    options={product.options.filter((option) => option.optionValues.length > 1)}
        variants={variants}
      >
  • Add utility functions decodeEncodedVariant and isOptionValueCombinationInEncodedVariant for parsing product.encodedVariantExistence and product.encodedVariantAvailability fields. (#2425) by @lhoffbeck

  • Update all cart mutation methods from createCartHandler to return cart warnings. (#2572) by @wizardlyhel

    As of API version 2024-10, inventory errors about stock levels will no longer be included in the userErrors of cart mutations. Inventory errors will now be available in a new return field warnings and will contain explicit code values of MERCHANDISE_NOT_ENOUGH_STOCK`` or MERCHANDISE_OUT_OF_STOCK. Reference: https://shopify.dev/changelog/cart-warnings-in-storefront-api-cart

  • Updated dependencies [8c89f298, 84a66b1e, 76cd4f9b]:

    • @shopify/hydrogen-react@2024.10.1

@shopify/hydrogen-codegen@0.3.2

Patch Changes

  • Checks anywhere in generated filename for "customer" or "caapi" (#2600) by @weotch

@shopify/hydrogen-react@2024.10.1

Patch Changes

  • Update <ProductPrice> to remove deprecated code usage for priceV2 and compareAtPriceV2. Remove export for getCustomerPrivacy. (#2601) by @wizardlyhel

  • Update to 2024-10 SFAPI (#2570) by @wizardlyhel

  • Add utility functions decodeEncodedVariant and isOptionValueCombinationInEncodedVariant for parsing product.encodedVariantExistence and product.encodedVariantAvailability fields. (#2425) by @lhoffbeck

skeleton@2024.7.11

Patch Changes

  • Stabilize getSitemap, getSitemapIndex and implement on skeleton (#2589) by @juanpprieto

    1. Update the getSitemapIndex at /app/routes/[sitemap.xml].tsx
    - import {unstable__getSitemapIndex as getSitemapIndex} from '@shopify/hydrogen';
    + import {getSitemapIndex} from '@shopify/hydrogen';
    1. Update the getSitemap at /app/routes/sitemap.$type.$page[.xml].tsx
    - import {unstable__getSitemap as getSitemap} from '@shopify/hydrogen';
    + import {getSitemap} from '@shopify/hydrogen';

    For a reference implementation please see the skeleton template sitemap routes

  • [Breaking change]: Set up Customer Privacy without the Shopify's cookie banner by default. (#2588) by @wizardlyhel

    If you are using Shopify's cookie banner to handle user consent in your app, you need to set withPrivacyBanner: true to the consent config. Without this update, the Shopify cookie banner will not appear.

      return defer({
        ...
        consent: {
          checkoutDomain: env.PUBLIC_CHECKOUT_DOMAIN,
          storefrontAccessToken: env.PUBLIC_STOREFRONT_API_TOKEN,
    +      withPrivacyBanner: true,
          // localize the privacy banner
          country: args.context.storefront.i18n.country,
          language: args.context.storefront.i18n.language,
        },
      });
  • Update to 2024-10 SFAPI (#2570) by @wizardlyhel

  • Breaking change by @frandiox

    Update createWithCache to make it harder to accidentally cache undesired results. request is now mandatory prop when initializing createWithCache.

    // server.ts
    export default {
      async fetch(
        request: Request,
        env: Env,
        executionContext: ExecutionContext,
      ): Promise<Response> {
        try {
          // ...
    -     const withCache = createWithCache({cache, waitUntil});
    +     const withCache = createWithCache({cache, waitUntil, request});

    createWithCache now returns an object with two utility functions: withCache.run and withCache.fetch. Both have a new prop shouldCacheResult that must be defined.

    The original withCache callback function is now withCache.run. This is useful to run multiple fetch calls and merge their responses, or run any arbitrary code. It caches anything you return, but you can throw if you don't want to cache anything.

      const withCache = createWithCache({cache, waitUntil, request});
    
      const fetchMyCMS = (query) => {
    -    return withCache(['my-cms', query], CacheLong(), async (params) => {
    +    return withCache.run({
    +      cacheKey: ['my-cms', query],
    +      cacheStrategy: CacheLong(),
    +      // Cache if there are no data errors or a specific data that make this result not suited for caching
    +      shouldCacheResult: (result) => !result?.errors,
    +    }, async(params) => {
          const response = await fetch('my-cms.com/api', {
            method: 'POST',
            body: query,
          });
          if (!response.ok) throw new Error(response.statusText);
          const {data, error} = await response.json();
          if (error || !data) throw new Error(error ?? 'Missing data');
          params.addDebugData({displayName: 'My CMS query', response});
          return data;
        });
      };

    New withCache.fetch is for caching simple fetch requests. This method caches the responses if they are OK responses, and you can pass shouldCacheResponse, cacheKey, etc. to modify behavior. data is the consumed body of the response (we need to consume to cache it).

    const withCache = createWithCache({cache, waitUntil, request});
    
    const {data, response} = await withCache.fetch<{data: T; error: string}>(
      'my-cms.com/api',
      {
        method: 'POST',
        headers: {'Content-type': 'application/json'},
        body,
      },
      {
        cacheStrategy: CacheLong(),
        // Cache if there are no data errors or a specific data that make this result not suited for caching
        shouldCacheResponse: (result) => !result?.error,
        cacheKey: ['my-cms', body],
        displayName: 'My CMS query',
      },
    );
  • SFAPI update - Deprecate usages of product.options.values and use product.options.optionValues instead. (#2585) by @wizardlyhel

    1. Update your product graphql query to use the new optionValues field.
      const PRODUCT_FRAGMENT = `#graphql
        fragment Product on Product {
          id
          title
          options {
            name
    -        values
    +        optionValues {
    +          name
    +        }
          }
    1. Update your <VariantSelector> to use the new optionValues field.
      <VariantSelector
        handle={product.handle}
    -    options={product.options.filter((option) => option.values.length > 1)}
    +    options={product.options.filter((option) => option.optionValues.length > 1)}
        variants={variants}
      >
  • Updated dependencies [d97cd56e, 809c9f3d, 8c89f298, a253ef97, 84a66b1e, ac12293c, c7c9f2eb, 76cd4f9b, 8337e534]:

    • @shopify/hydrogen@2024.10.1

Copy link
Contributor

shopify bot commented Oct 21, 2024

Oxygen deployed a preview of your changeset-release/main branch. Details:

Storefront Status Preview link Deployment details Last update (UTC)
Skeleton (skeleton.hydrogen.shop) ✅ Successful (Logs) Preview deployment Inspect deployment October 21, 2024 8:17 PM
custom-cart-method ✅ Successful (Logs) Preview deployment Inspect deployment October 21, 2024 8:17 PM
classic-remix ✅ Successful (Logs) Preview deployment Inspect deployment October 21, 2024 8:17 PM
metaobjects ✅ Successful (Logs) Preview deployment Inspect deployment October 21, 2024 8:17 PM
third-party-queries-caching ✅ Successful (Logs) Preview deployment Inspect deployment October 21, 2024 8:17 PM

Learn more about Hydrogen's GitHub integration.

@github-actions github-actions bot force-pushed the changeset-release/main branch 2 times, most recently from 89d6b2a to 7ec9be6 Compare October 21, 2024 20:37
@shopify-github-actions-access shopify-github-actions-access bot changed the title [ci] release 2024-07 [ci] release 2024-10 Oct 21, 2024
@github-actions github-actions bot force-pushed the changeset-release/main branch 12 times, most recently from 8d741b7 to 1c58d33 Compare October 25, 2024 22: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.

0 participants