Skip to content

Commit 6bfad4e

Browse files
authored
Escape meta json ld content (#10741)
1 parent f2fa7df commit 6bfad4e

File tree

6 files changed

+63
-44
lines changed

6 files changed

+63
-44
lines changed

CHANGELOG.md

Lines changed: 55 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -13,160 +13,162 @@ We manage release notes in this file instead of the paginated GitHub Releases Pa
1313
<summary>Table of Contents</summary>
1414

1515
- [Remix Releases](#remix-releases)
16+
- [v2.17.1](#v2171)
17+
- [Patch Changes](#patch-changes)
1618
- [v2.17.0](#v2170)
1719
- [Minor Changes](#minor-changes)
1820
- [Changes by Package](#changes-by-package)
1921
- [v2.16.8](#v2168)
20-
- [Patch Changes](#patch-changes)
21-
- [v2.16.7](#v2167)
2222
- [Patch Changes](#patch-changes-1)
23-
- [v2.16.6](#v2166)
23+
- [v2.16.7](#v2167)
2424
- [Patch Changes](#patch-changes-2)
25-
- [v2.16.5](#v2165)
25+
- [v2.16.6](#v2166)
2626
- [Patch Changes](#patch-changes-3)
27-
- [v2.16.4](#v2164)
27+
- [v2.16.5](#v2165)
2828
- [Patch Changes](#patch-changes-4)
29+
- [v2.16.4](#v2164)
30+
- [Patch Changes](#patch-changes-5)
2931
- [v2.16.3](#v2163)
3032
- [Security Notice](#security-notice)
31-
- [Patch Changes](#patch-changes-5)
32-
- [v2.16.2](#v2162)
3333
- [Patch Changes](#patch-changes-6)
34-
- [v2.16.1](#v2161)
34+
- [v2.16.2](#v2162)
3535
- [Patch Changes](#patch-changes-7)
36+
- [v2.16.1](#v2161)
37+
- [Patch Changes](#patch-changes-8)
3638
- [v2.16.0](#v2160)
3739
- [Minor Changes](#minor-changes-1)
38-
- [Patch Changes](#patch-changes-8)
40+
- [Patch Changes](#patch-changes-9)
3941
- [Updated Dependencies](#updated-dependencies)
4042
- [v2.15.3](#v2153)
41-
- [Patch Changes](#patch-changes-9)
43+
- [Patch Changes](#patch-changes-10)
4244
- [Updated Dependencies](#updated-dependencies-1)
4345
- [v2.15.2](#v2152)
44-
- [Patch Changes](#patch-changes-10)
46+
- [Patch Changes](#patch-changes-11)
4547
- [Updated Dependencies](#updated-dependencies-2)
4648
- [v2.15.1](#v2151)
47-
- [Patch Changes](#patch-changes-11)
48-
- [v2.15.0](#v2150)
4949
- [Patch Changes](#patch-changes-12)
50+
- [v2.15.0](#v2150)
51+
- [Patch Changes](#patch-changes-13)
5052
- [v2.14.0](#v2140)
5153
- [Minor Changes](#minor-changes-2)
52-
- [Patch Changes](#patch-changes-13)
54+
- [Patch Changes](#patch-changes-14)
5355
- [Updated Dependencies](#updated-dependencies-3)
5456
- [Changes by Package](#changes-by-package-1)
5557
- [v2.13.1](#v2131)
56-
- [Patch Changes](#patch-changes-14)
58+
- [Patch Changes](#patch-changes-15)
5759
- [v2.13.0](#v2130)
5860
- [What's Changed](#whats-changed)
5961
- [Stabilized APIs](#stabilized-apis)
6062
- [Minor Changes](#minor-changes-3)
61-
- [Patch Changes](#patch-changes-15)
63+
- [Patch Changes](#patch-changes-16)
6264
- [Updated Dependencies](#updated-dependencies-4)
6365
- [Changes by Package](#changes-by-package-2)
6466
- [v2.12.1](#v2121)
65-
- [Patch Changes](#patch-changes-16)
67+
- [Patch Changes](#patch-changes-17)
6668
- [Changes by Package](#changes-by-package-3)
6769
- [v2.12.0](#v2120)
6870
- [What's Changed](#whats-changed-1)
6971
- [Future Flag for Automatic Dependency Optimization (unstable)](#future-flag-for-automatic-dependency-optimization-unstable)
7072
- [Improved Single Fetch Type Safety (unstable)](#improved-single-fetch-type-safety-unstable)
7173
- [Updates to Single Fetch Revalidation Behavior (unstable)](#updates-to-single-fetch-revalidation-behavior-unstable)
7274
- [Minor Changes](#minor-changes-4)
73-
- [Patch Changes](#patch-changes-17)
75+
- [Patch Changes](#patch-changes-18)
7476
- [Updated Dependencies](#updated-dependencies-5)
7577
- [Changes by Package](#changes-by-package-4)
7678
- [v2.11.2](#v2112)
77-
- [Patch Changes](#patch-changes-18)
79+
- [Patch Changes](#patch-changes-19)
7880
- [Updated Dependencies](#updated-dependencies-6)
7981
- [Changes by Package](#changes-by-package-5)
8082
- [v2.11.1](#v2111)
81-
- [Patch Changes](#patch-changes-19)
83+
- [Patch Changes](#patch-changes-20)
8284
- [Changes by Package](#changes-by-package-6)
8385
- [v2.11.0](#v2110)
8486
- [What's Changed](#whats-changed-2)
8587
- [Renamed `unstable_fogOfWar` future flag to `unstable_lazyRouteDiscovery` (unstable)](#renamed-unstable_fogofwar-future-flag-to-unstable_lazyroutediscovery-unstable)
8688
- [Removed `response` stub in Single Fetch (unstable)](#removed-response-stub-in-single-fetch-unstable)
8789
- [Minor Changes](#minor-changes-5)
88-
- [Patch Changes](#patch-changes-20)
90+
- [Patch Changes](#patch-changes-21)
8991
- [Updated Dependencies](#updated-dependencies-7)
9092
- [Changes by Package](#changes-by-package-7)
9193
- [v2.10.3](#v2103)
92-
- [Patch Changes](#patch-changes-21)
94+
- [Patch Changes](#patch-changes-22)
9395
- [Updated Dependencies](#updated-dependencies-8)
9496
- [Changes by Package](#changes-by-package-8)
9597
- [v2.10.2](#v2102)
96-
- [Patch Changes](#patch-changes-22)
98+
- [Patch Changes](#patch-changes-23)
9799
- [Changes by Package](#changes-by-package-9)
98100
- [v2.10.1](#v2101)
99-
- [Patch Changes](#patch-changes-23)
101+
- [Patch Changes](#patch-changes-24)
100102
- [Updated Dependencies](#updated-dependencies-9)
101103
- [Changes by Package](#changes-by-package-10)
102104
- [v2.10.0](#v2100)
103105
- [What's Changed](#whats-changed-3)
104106
- [Lazy Route Discovery (a.k.a. "Fog of War")](#lazy-route-discovery-aka-fog-of-war)
105107
- [Minor Changes](#minor-changes-6)
106-
- [Patch Changes](#patch-changes-24)
108+
- [Patch Changes](#patch-changes-25)
107109
- [Updated Dependencies](#updated-dependencies-10)
108110
- [Changes by Package](#changes-by-package-11)
109111
- [v2.9.2](#v292)
110112
- [What's Changed](#whats-changed-4)
111113
- [Updated Type-Safety for Single Fetch](#updated-type-safety-for-single-fetch)
112-
- [Patch Changes](#patch-changes-25)
114+
- [Patch Changes](#patch-changes-26)
113115
- [Updated Dependencies](#updated-dependencies-11)
114116
- [Changes by Package](#changes-by-package-12)
115117
- [v2.9.1](#v291)
116-
- [Patch Changes](#patch-changes-26)
118+
- [Patch Changes](#patch-changes-27)
117119
- [Changes by Package](#changes-by-package-13)
118120
- [v2.9.0](#v290)
119121
- [What's Changed](#whats-changed-5)
120122
- [Single Fetch (unstable)](#single-fetch-unstable)
121123
- [Undici](#undici)
122124
- [Minor Changes](#minor-changes-7)
123-
- [Patch Changes](#patch-changes-27)
125+
- [Patch Changes](#patch-changes-28)
124126
- [Updated Dependencies](#updated-dependencies-12)
125127
- [Changes by Package](#changes-by-package-14)
126128
- [v2.8.1](#v281)
127-
- [Patch Changes](#patch-changes-28)
129+
- [Patch Changes](#patch-changes-29)
128130
- [Updated Dependencies](#updated-dependencies-13)
129131
- [Changes by Package](#changes-by-package-15)
130132
- [v2.8.0](#v280)
131133
- [Minor Changes](#minor-changes-8)
132-
- [Patch Changes](#patch-changes-29)
134+
- [Patch Changes](#patch-changes-30)
133135
- [Updated Dependencies](#updated-dependencies-14)
134136
- [Changes by Package](#changes-by-package-16)
135137
- [2.7.2](#272)
136-
- [Patch Changes](#patch-changes-30)
137-
- [2.7.1](#271)
138138
- [Patch Changes](#patch-changes-31)
139+
- [2.7.1](#271)
140+
- [Patch Changes](#patch-changes-32)
139141
- [v2.7.0](#v270)
140142
- [What's Changed](#whats-changed-6)
141143
- [Stabilized Vite Plugin](#stabilized-vite-plugin)
142144
- [New `Layout` Export](#new-layout-export)
143145
- [Basename support](#basename-support)
144146
- [Cloudflare Proxy as a Vite Plugin](#cloudflare-proxy-as-a-vite-plugin)
145147
- [Minor Changes](#minor-changes-9)
146-
- [Patch Changes](#patch-changes-32)
148+
- [Patch Changes](#patch-changes-33)
147149
- [Updated Dependencies](#updated-dependencies-15)
148150
- [Changes by Package](#changes-by-package-17)
149151
- [v2.6.0](#v260)
150152
- [What's Changed](#whats-changed-7)
151153
- [Unstable Vite Plugin updates](#unstable-vite-plugin-updates)
152154
- [Minor Changes](#minor-changes-10)
153-
- [Patch Changes](#patch-changes-33)
155+
- [Patch Changes](#patch-changes-34)
154156
- [Updated Dependencies](#updated-dependencies-16)
155157
- [Changes by Package](#changes-by-package-18)
156158
- [v2.5.1](#v251)
157-
- [Patch Changes](#patch-changes-34)
159+
- [Patch Changes](#patch-changes-35)
158160
- [Updated Dependencies](#updated-dependencies-17)
159161
- [Changes by Package](#changes-by-package-19)
160162
- [v2.5.0](#v250)
161163
- [What's Changed](#whats-changed-8)
162164
- [SPA Mode (unstable)](#spa-mode-unstable)
163165
- [Server Bundles (unstable)](#server-bundles-unstable)
164166
- [Minor Changes](#minor-changes-11)
165-
- [Patch Changes](#patch-changes-35)
167+
- [Patch Changes](#patch-changes-36)
166168
- [Updated Dependencies](#updated-dependencies-18)
167169
- [Changes by Package](#changes-by-package-20)
168170
- [v2.4.1](#v241)
169-
- [Patch Changes](#patch-changes-36)
171+
- [Patch Changes](#patch-changes-37)
170172
- [Updated Dependencies](#updated-dependencies-19)
171173
- [Changes by Package](#changes-by-package-21)
172174
- [v2.4.0](#v240)
@@ -175,19 +177,19 @@ We manage release notes in this file instead of the paginated GitHub Releases Pa
175177
- [`future.v3_relativeSplatPath`](#futurev3_relativesplatpath)
176178
- [Vite Updates (Unstable)](#vite-updates-unstable)
177179
- [Minor Changes](#minor-changes-12)
178-
- [Patch Changes](#patch-changes-37)
180+
- [Patch Changes](#patch-changes-38)
179181
- [Updated Dependencies](#updated-dependencies-20)
180182
- [Changes by Package](#changes-by-package-22)
181183
- [v2.3.1](#v231)
182-
- [Patch Changes](#patch-changes-38)
184+
- [Patch Changes](#patch-changes-39)
183185
- [Updated Dependencies](#updated-dependencies-21)
184186
- [Changes by Package](#changes-by-package-23)
185187
- [v2.3.0](#v230)
186188
- [What's Changed](#whats-changed-10)
187189
- [Stabilized `useBlocker`](#stabilized-useblocker)
188190
- [`unstable_flushSync` API](#unstable_flushsync-api)
189191
- [Minor Changes](#minor-changes-13)
190-
- [Patch Changes](#patch-changes-39)
192+
- [Patch Changes](#patch-changes-40)
191193
- [Updated Dependencies](#updated-dependencies-22)
192194
- [Changes by Package](#changes-by-package-24)
193195
- [v2.2.0](#v220)
@@ -196,19 +198,19 @@ We manage release notes in this file instead of the paginated GitHub Releases Pa
196198
- [New Fetcher APIs](#new-fetcher-apis)
197199
- [Persistence Future Flag](#persistence-future-flag)
198200
- [Minor Changes](#minor-changes-14)
199-
- [Patch Changes](#patch-changes-40)
201+
- [Patch Changes](#patch-changes-41)
200202
- [Updated Dependencies](#updated-dependencies-23)
201203
- [Changes by Package](#changes-by-package-25)
202204
- [v2.1.0](#v210)
203205
- [What's Changed](#whats-changed-12)
204206
- [View Transitions](#view-transitions)
205207
- [Stable `createRemixStub`](#stable-createremixstub)
206208
- [Minor Changes](#minor-changes-15)
207-
- [Patch Changes](#patch-changes-41)
209+
- [Patch Changes](#patch-changes-42)
208210
- [Updated Dependencies](#updated-dependencies-24)
209211
- [Changes by Package](#changes-by-package-26)
210212
- [v2.0.1](#v201)
211-
- [Patch Changes](#patch-changes-42)
213+
- [Patch Changes](#patch-changes-43)
212214
- [Changes by Package 🔗](#changes-by-package-)
213215
- [v2.0.0](#v200)
214216
- [Breaking Changes](#breaking-changes)
@@ -272,6 +274,16 @@ Date: YYYY-MM-DD
272274
273275
-->
274276

277+
## v2.17.1
278+
279+
Date: 2025-09-11
280+
281+
### Patch Changes
282+
283+
- `@remix-run/react` - Escape HTML in `meta()` JSON-LD content
284+
285+
**Full Changelog**: [`v2.17.0...v2.17.1`](https://github.com/remix-run/remix/compare/[email protected]@2.17.1)
286+
275287
## v2.17.0
276288

277289
Date: 2025-07-25

integration/helpers/deno-template/server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// deno-lint-ignore no-import-prefix
12
import { serve } from "https://deno.land/[email protected]/http/server.ts";
23
import { createRequestHandlerWithStaticFiles } from "@remix-run/deno";
34
// Import path interpreted by the Remix compiler

packages/remix-deno/server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// deno-lint-ignore no-import-prefix
12
import * as path from "https://deno.land/[email protected]/path/mod.ts";
23
import mime from "mime";
34
import { createRequestHandler as createRemixRequestHandler } from "@remix-run/server-runtime";

packages/remix-deno/sessions/fileStorage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// deno-lint-ignore no-import-prefix
12
import * as path from "https://deno.land/[email protected]/path/mod.ts";
23

34
import type {

packages/remix-react/__tests__/integration/meta-test.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ describe("meta", () => {
219219
postalCode: "92107",
220220
},
221221
222+
bio: "A <b>surfer</b> & <em>coder</em>.",
222223
};
223224

224225
let RemixStub = createRemixStub([
@@ -241,6 +242,9 @@ describe("meta", () => {
241242
container.querySelector('script[type="application/ld+json"]')
242243
?.innerHTML || "{}";
243244
expect(JSON.parse(scriptTagContents)).toEqual(jsonLd);
245+
expect(scriptTagContents).toContain(
246+
"A \\u003cb\\u003esurfer\\u003c/b\\u003e \\u0026 \\u003cem\\u003ecoder\\u003c/em\\u003e."
247+
);
244248
});
245249

246250
it("{ tagName: 'link' } adds a <link />", () => {

packages/remix-react/components.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ export function Meta() {
689689
<script
690690
key={`script:ld+json:${json}`}
691691
type="application/ld+json"
692-
dangerouslySetInnerHTML={{ __html: json }}
692+
dangerouslySetInnerHTML={{ __html: escapeHtml(json) }}
693693
/>
694694
);
695695
} catch (err) {

0 commit comments

Comments
 (0)