Skip to content

hydrogen/Bump cli-hydrogen to 11.1.14#7246

Merged
itsjustriley merged 2 commits intostable/3.93from
stable-3.93-update-cli-hydrogen-11.1.14
Apr 10, 2026
Merged

hydrogen/Bump cli-hydrogen to 11.1.14#7246
itsjustriley merged 2 commits intostable/3.93from
stable-3.93-update-cli-hydrogen-11.1.14

Conversation

@itsjustriley
Copy link
Copy Markdown
Contributor

@itsjustriley itsjustriley commented Apr 10, 2026

Bumps @shopify/cli-hydrogen from 11.1.10 to 11.1.14.

This is a consolidated update covering cli-hydrogen releases for Hydrogen 2026.1.2, 2026.1.3, 2026.1.4, and 2026.4.0.

Release Notes

@shopify/cli-hydrogen@11.1.14 (Hydrogen 2026.4.0)

Patch Changes

  • Widen React Router peer dependencies from exact versions to caret ranges (^7.12.0). Allows Hydrogen projects to use newer React Router minor versions without peer dependency conflicts with npm's strict resolver. (#3677)

  • Update Storefront API and Customer Account API from 2026-01 to 2026-04. (#3651)

    Breaking changes

    JSON metafield values limited to 128KB: When using API version 2026-04 or later, the Storefront API limits JSON type metafield writes to 128KB. Apps created after April 1, 2026 are subject to this limit; existing apps are grandfathered at 2MB.

    New MERCHANDISE_LINE_TRANSFORMERS_RUN_ERROR cart error code: Cart operations now return a specific error code when a Cart Transform Function fails, instead of the generic INVALID code.

  • Remove proxyStandardRoutes option from createRequestHandler. The Storefront API proxy is now always enabled. (#3649)

  • Enable backend consent mode for Customer Privacy API — window.Shopify.customerPrivacy.backendConsentEnabled is now set to true automatically. (#3649)

@shopify/cli-hydrogen@11.1.13 (Hydrogen 2026.1.4)

Patch Changes

  • Add Storefront MCP proxy support to enable AI agent integration. Hydrogen now automatically proxies requests to /api/mcp to Shopify's Storefront MCP server. (#3572)

  • Remove redundant Storefront API proxy route from skeleton template. (#3572)

  • GraphQL access denied error is now handled as an expected user error. (#3654)

@shopify/cli-hydrogen@11.1.12 (Hydrogen 2026.1.3)

Patch Changes

  • Improve screen reader experience for paginated product grids by hiding decorative arrow characters from assistive technology. (#3557)

  • Fix hydrogen dev with --port 0 when using --customer-account-push. Port 0 (OS-assigned) caused cloudflared to target localhost:0 while Vite resolved to a concrete port internally. The port is now resolved upfront so both cloudflared and Vite bind to the same origin. (#3532)

  • Fix broken aria-label on territory code input in address form. The label was the raw developer string "territoryCode" instead of a human-readable "Country code". (#3607)

  • Fix hydrogen upgrade failing with yarn and pnpm by using the correct package-specific install subcommand (add for yarn/pnpm, install for npm/bun) when upgrading dependencies. (#3462)

  • Fix h2 upgrade to correctly handle dependency removals when upgrading across multiple versions. (#3527)

  • Add aria-label to ProductPrice for improved screen reader accessibility. (#3558)

  • Fix multi-version upgrades to accumulate intermediate dependency bumps; apply --legacy-peer-deps for npm to resolve ERESOLVE conflicts during upgrade. (#3507)

@shopify/cli-hydrogen@11.1.11 (Hydrogen 2026.1.2)

  • Update SFAPI and CAAPI to 2026-01 version. (#3601)

Related PRs

@itsjustriley itsjustriley marked this pull request as ready for review April 10, 2026 10:43
@itsjustriley itsjustriley requested review from a team as code owners April 10, 2026 10:43
The previous lockfile was generated with stale transitive dependency
resolutions. Regenerated by restoring the base branch lockfile and
running pnpm install, which resolves transitive deps to their latest
valid versions (e.g. strip-ansi 7.2.0, debug 4.4.3, semver 7.7.4).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@fredericoo fredericoo marked this pull request as draft April 10, 2026 11:20
@fredericoo fredericoo marked this pull request as ready for review April 10, 2026 11:21
@github-actions
Copy link
Copy Markdown
Contributor

Differences in type declarations

We detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:

  • Some seemingly private modules might be re-exported through public modules.
  • If the branch is behind main you might see odd diffs, rebase main into this branch.

New type declarations

We found no new type declarations in this PR

Existing type declarations

packages/cli-kit/dist/private/node/ui.d.ts
 import { Logger, LogLevel } from '../../public/node/output.js';
-import React from 'react';
 import { Key, RenderOptions } from 'ink';
 import { EventEmitter } from 'events';
-/**
- * Signal that the current Ink tree is done. Must be called within an
- * InkLifecycleRoot — throws if the provider is missing so lifecycle
- * bugs surface immediately instead of silently hanging.
- */
-export declare function useComplete(): (error?: Error) => void;
-/**
- * Root wrapper for Ink trees. Owns the single `exit()` call site — children
- * signal completion via `useComplete()`, which sets state here. The `useEffect`
- * fires post-render, guaranteeing all batched state updates have been flushed
- * before the tree is torn down.
- */
-export declare function InkLifecycleRoot({ children }: {
-    children: React.ReactNode;
-}): React.JSX.Element;
 interface RenderOnceOptions {
     logLevel?: LogLevel;
     logger?: Logger;
     renderOptions?: RenderOptions;
 }
 export declare function renderOnce(element: JSX.Element, { logLevel, renderOptions }: RenderOnceOptions): string | undefined;
-export declare function render(element: JSX.Element, options?: RenderOptions): Promise<void>;
+export declare function render(element: JSX.Element, options?: RenderOptions): Promise<unknown>;
 export declare class Stdout extends EventEmitter {
     columns: number;
     rows: number;
     readonly frames: string[];
     private _lastFrame?;
     constructor(options: {
         columns?: number;
         rows?: number;
     });
     write: (frame: string) => void;
     lastFrame: () => string | undefined;
 }
 export declare function handleCtrlC(input: string, key: Key, exit?: () => void): void;
 export {};
packages/cli-kit/dist/public/common/version.d.ts
@@ -1 +1 @@
-export declare const CLI_KIT_VERSION = "3.93.0";
\ No newline at end of file
+export declare const CLI_KIT_VERSION = "3.93.1";
\ No newline at end of file
packages/cli-kit/dist/public/node/monorail.d.ts
@@ -66,10 +66,6 @@ export interface Schemas {
             cmd_app_linked_config_uses_cli_managed_urls?: Optional<boolean>;
             cmd_app_warning_api_key_deprecation_displayed?: Optional<boolean>;
             cmd_app_deployment_mode?: Optional<string>;
-            cmd_app_validate_json?: Optional<boolean>;
-            cmd_app_validate_valid?: Optional<boolean>;
-            cmd_app_validate_issue_count?: Optional<number>;
-            cmd_app_validate_file_count?: Optional<number>;
             cmd_dev_tunnel_type?: Optional<string>;
             cmd_dev_tunnel_custom_hash?: Optional<string>;
             cmd_dev_urls_updated?: Optional<boolean>;
packages/cli-kit/dist/public/node/path.d.ts
 import type { URL } from 'url';
 /**
  * Joins a list of paths together.
  *
  * @param paths - Paths to join.
  * @returns Joined path.
  */
 export declare function joinPath(...paths: string[]): string;
 /**
  * Normalizes a path.
  *
  * @param path - Path to normalize.
  * @returns Normalized path.
  */
 export declare function normalizePath(path: string): string;
 /**
  * Resolves a list of paths together.
  *
  * @param paths - Paths to resolve.
  * @returns Resolved path.
  */
 export declare function resolvePath(...paths: string[]): string;
 /**
  * Returns the relative path from one path to another.
  *
  * @param from - Path to resolve from.
  * @param to - Path to resolve to.
  * @returns Relative path.
  */
 export declare function relativePath(from: string, to: string): string;
 /**
  * Returns whether the path is absolute.
  *
  * @param path - Path to check.
  * @returns Whether the path is absolute.
  */
 export declare function isAbsolutePath(path: string): boolean;
 /**
  * Returns the directory name of a path.
  *
  * @param path - Path to get the directory name of.
  * @returns Directory name.
  */
 export declare function dirname(path: string): string;
 /**
  * Returns the base name of a path.
  *
  * @param path - Path to get the base name of.
  * @param ext - Optional extension to remove from the result.
  * @returns Base name.
  */
 export declare function basename(path: string, ext?: string): string;
 /**
  * Returns the extension of the path.
  *
  * @param path - Path to get the extension of.
  * @returns Extension.
  */
 export declare function extname(path: string): string;
 /**
  * Parses a path into its components (root, dir, base, ext, name).
  *
  * @param path - Path to parse.
  * @returns Parsed path object.
  */
 export declare function parsePath(path: string): {
     root: string;
     dir: string;
     base: string;
     ext: string;
     name: string;
 };
 /**
- * Returns the longest common parent directory of two absolute paths.
- *
- * @param first - First absolute path.
- * @param second - Second absolute path.
- * @returns The common parent directory, or '/' if they share only the root.
- */
-export declare function commonParentDirectory(first: string, second: string): string;
-/**
  * Given an absolute filesystem path, it makes it relative to
  * the current working directory. This is useful when logging paths
  * to allow the users to click on the file and let the OS open it
  * in the editor of choice.
  *
  * @param path - Path to relativize.
  * @param dir - Current working directory.
  * @returns Relativized path.
  */
 export declare function relativizePath(path: string, dir?: string): string;
 /**
  * Given 2 paths, it returns whether the second path is a subpath of the first path.
  *
  * @param mainPath - The main path.
  * @param subpath - The subpath.
  * @returns Whether the subpath is a subpath of the main path.
  */
 export declare function isSubpath(mainPath: string, subpath: string): boolean;
 /**
  * Given a module's import.meta.url it returns the directory containing the module.
  *
  * @param moduleURL - The value of import.meta.url in the context of the caller module.
  * @returns The path to the directory containing the caller module.
  */
 export declare function moduleDirectory(moduleURL: string | URL): string;
 /**
  * When running a script using `npm run`, something interesting happens. If the current
  * folder does not have a `package.json` or a `node_modules` folder, npm will traverse
  * the directory tree upwards until it finds one. Then it will run the script and set
  * `process.cwd()` to that folder, while the actual path is stored in the INIT_CWD
  * environment variable (see here: https://docs.npmjs.com/cli/v9/commands/npm-run-script#description).
  *
  * @returns The path to the current working directory.
  */
 export declare function cwd(): string;
 /**
  * Tries to get the value of the `--path` argument, if provided.
  *
  * @param argv - The arguments to search for the `--path` argument.
  * @returns The value of the `--path` argument, if provided.
  */
 export declare function sniffForPath(argv?: string[]): string | undefined;
 /**
  * Returns whether the `--json` or `-j` flags are present in the arguments.
  *
  * @param argv - The arguments to search for the `--json` and `-j` flags.
  * @returns Whether the `--json` or `-j` flag is present in the arguments.
  */
 export declare function sniffForJson(argv?: string[]): boolean;
 /**
  * Removes any `..` traversal segments from a relative path and calls `warn`
  * if any were stripped. Normal `..` that cancel out within the path (e.g.
  * `foo/../bar` → `bar`) are collapsed but never allowed to escape the root.
  * Both `/` and `\` are treated as separators for cross-platform safety.
  *
  * @param input - The relative path to sanitize.
  * @param warn - Called with a human-readable warning when traversal segments are removed.
  * @returns The sanitized path (may be an empty string if all segments were traversal).
  */
 export declare function sanitizeRelativePath(input: string, warn: (msg: string) => void): string;
packages/cli-kit/dist/public/node/ui.d.ts
@@ -34,7 +34,7 @@ export interface RenderConcurrentOptions extends PartialBy<ConcurrentOutputProps
  * 00:00:00 │ frontend │ third frontend message
  *
  */
-export declare function renderConcurrent({ renderOptions, ...props }: RenderConcurrentOptions): Promise<void>;
+export declare function renderConcurrent({ renderOptions, ...props }: RenderConcurrentOptions): Promise<unknown>;
 export type AlertCustomSection = CustomSection;
 export type RenderAlertOptions = Omit<AlertOptions, 'type'>;
 /**

@itsjustriley itsjustriley merged commit 8f61491 into stable/3.93 Apr 10, 2026
22 of 23 checks passed
@itsjustriley itsjustriley deleted the stable-3.93-update-cli-hydrogen-11.1.14 branch April 10, 2026 11:32
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.

3 participants