Skip to content

Commit 9c3536b

Browse files
committed
feat!(remix-react,remix-server-runtime): remove imagesizes & imagesizes properties from HtmlLinkDescriptor, LinkDescriptor & PrefetchPageDescriptor types
1 parent 8c6ecca commit 9c3536b

File tree

6 files changed

+36
-83
lines changed

6 files changed

+36
-83
lines changed

.changeset/large-goats-double.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@remix-run/react": major
3+
"@remix-run/server-runtime": major
4+
---
5+
6+
remove `imagesizes` & `imagesizes` properties from `HtmlLinkDescriptor`, `LinkDescriptor` & `PrefetchPageDescriptor` types

integration/action-test.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,7 @@ test.describe("actions", () => {
105105

106106
test.beforeEach(({ page }) => {
107107
page.on("console", (msg) => {
108-
let text = msg.text();
109-
if (!/DEPRECATED.*imagesizes.*imagesrcset/.test(text)) {
110-
logs.push(text);
111-
}
108+
logs.push(msg.text());
112109
});
113110
});
114111

integration/defer-test.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1283,8 +1283,7 @@ function monitorConsole(page: Page) {
12831283
let arg0 = await args[0].jsonValue();
12841284
if (
12851285
typeof arg0 === "string" &&
1286-
(arg0.includes("Download the React DevTools") ||
1287-
/DEPRECATED.*imagesizes.*imagesrcset/.test(arg0))
1286+
arg0.includes("Download the React DevTools")
12881287
) {
12891288
continue;
12901289
}

packages/remix-react/components.tsx

+15-31
Original file line numberDiff line numberDiff line change
@@ -299,17 +299,6 @@ export function Links() {
299299
[matches, routeModules, manifest]
300300
);
301301

302-
React.useEffect(() => {
303-
if (links.some((link) => "imagesizes" in link || "imagesrcset" in link)) {
304-
logDeprecationOnce(
305-
"⚠️ DEPRECATED: The `imagesizes` & `imagesrcset` properties in " +
306-
"your links have been deprecated in favor of `imageSizes` & " +
307-
"`imageSrcSet` and support will be removed in Remix v2. Please update " +
308-
"your code to use the new property names instead."
309-
);
310-
}
311-
}, [links]);
312-
313302
return (
314303
<>
315304
{links.map((link) => {
@@ -318,37 +307,32 @@ export function Links() {
318307
}
319308

320309
let imageSrcSet: string | null = null;
310+
let imageSizes: string | null = null;
321311

322312
// In React 17, <link imageSrcSet> and <link imageSizes> will warn
323313
// because the DOM attributes aren't recognized, so users need to pass
324314
// them in all lowercase to forward the attributes to the node without a
325315
// warning. Normalize so that either property can be used in Remix.
326-
if ("useId" in React) {
327-
if (link.imagesrcset) {
328-
link.imageSrcSet = imageSrcSet = link.imagesrcset;
329-
delete link.imagesrcset;
330-
}
331-
332-
if (link.imagesizes) {
333-
link.imageSizes = link.imagesizes;
334-
delete link.imagesizes;
335-
}
336-
} else {
337-
if (link.imageSrcSet) {
338-
link.imagesrcset = imageSrcSet = link.imageSrcSet;
339-
delete link.imageSrcSet;
340-
}
316+
let imageSizesKey = "useId" in React ? "imageSizesKey" : "imagesizes";
317+
let imageSrcSetKey = "useId" in React ? "imageSrcSet" : "imagesrcset";
318+
if (link.imageSrcSet) {
319+
imageSrcSet = link.imageSrcSet;
320+
delete link.imageSrcSet;
321+
}
341322

342-
if (link.imageSizes) {
343-
link.imagesizes = link.imageSizes;
344-
delete link.imageSizes;
345-
}
323+
if (link.imageSizes) {
324+
imageSizes = link.imageSizes;
325+
delete link.imageSizes;
346326
}
347327

348328
return (
349329
<link
350330
key={link.rel + (link.href || "") + (imageSrcSet || "")}
351-
{...link}
331+
{...{
332+
...link,
333+
[imageSizesKey]: imageSizes,
334+
[imageSrcSetKey]: imageSrcSet,
335+
}}
352336
/>
353337
);
354338
})}

packages/remix-react/links.ts

+9-27
Original file line numberDiff line numberDiff line change
@@ -173,23 +173,10 @@ interface HtmlLinkPreloadImage extends HtmlLinkProps {
173173
export type HtmlLinkDescriptor =
174174
// Must have an href *unless* it's a `<link rel="preload" as="image">` with an
175175
// `imageSrcSet` and `imageSizes` props
176-
(
177-
| (HtmlLinkProps & Pick<Required<HtmlLinkProps>, "href">)
178-
| (HtmlLinkPreloadImage &
179-
Pick<Required<HtmlLinkPreloadImage>, "imageSizes">)
180-
| (HtmlLinkPreloadImage &
181-
Pick<Required<HtmlLinkPreloadImage>, "href"> & { imageSizes?: never })
182-
) & {
183-
/**
184-
* @deprecated Use `imageSrcSet` instead.
185-
*/
186-
imagesrcset?: string;
187-
188-
/**
189-
* @deprecated Use `imageSizes` instead.
190-
*/
191-
imagesizes?: string;
192-
};
176+
| (HtmlLinkProps & Pick<Required<HtmlLinkProps>, "href">)
177+
| (HtmlLinkPreloadImage & Pick<Required<HtmlLinkPreloadImage>, "imageSizes">)
178+
| (HtmlLinkPreloadImage &
179+
Pick<Required<HtmlLinkPreloadImage>, "href"> & { imageSizes?: never });
193180

194181
export interface PrefetchPageDescriptor
195182
extends Omit<
@@ -200,8 +187,6 @@ export interface PrefetchPageDescriptor
200187
| "sizes"
201188
| "imageSrcSet"
202189
| "imageSizes"
203-
| "imagesrcset"
204-
| "imagesizes"
205190
| "as"
206191
| "color"
207192
| "title"
@@ -299,23 +284,20 @@ export function isPageLinkDescriptor(
299284
return object != null && typeof object.page === "string";
300285
}
301286

302-
export function isHtmlLinkDescriptor(
303-
object: any
304-
): object is HtmlLinkDescriptor {
287+
function isHtmlLinkDescriptor(object: any): object is HtmlLinkDescriptor {
305288
if (object == null) return false;
306289

307-
// <link> may not have an href if <link rel="preload"> is used with imagesrcset + imagesizes
290+
// <link> may not have an href if <link rel="preload"> is used with imageSrcSet + imageSizes
308291
// https://github.com/remix-run/remix/issues/184
309292
// https://html.spec.whatwg.org/commit-snapshots/cb4f5ff75de5f4cbd7013c4abad02f21c77d4d1c/#attr-link-imagesrcset
310293
if (object.href == null) {
311294
return (
312295
object.rel === "preload" &&
313-
(typeof object.imageSrcSet === "string" ||
314-
typeof object.imagesrcset === "string") &&
315-
(typeof object.imageSizes === "string" ||
316-
typeof object.imagesizes === "string")
296+
typeof object.imageSrcSet === "string" &&
297+
typeof object.imageSizes === "string"
317298
);
318299
}
300+
319301
return typeof object.rel === "string" && typeof object.href === "string";
320302
}
321303

packages/remix-server-runtime/links.ts

+4-19
Original file line numberDiff line numberDiff line change
@@ -165,23 +165,10 @@ interface HtmlLinkPreloadImage extends HtmlLinkProps {
165165
export type HtmlLinkDescriptor =
166166
// Must have an href *unless* it's a `<link rel="preload" as="image">` with an
167167
// `imageSrcSet` and `imageSizes` props
168-
(
169-
| (HtmlLinkProps & Pick<Required<HtmlLinkProps>, "href">)
170-
| (HtmlLinkPreloadImage &
171-
Pick<Required<HtmlLinkPreloadImage>, "imageSizes">)
172-
| (HtmlLinkPreloadImage &
173-
Pick<Required<HtmlLinkPreloadImage>, "href"> & { imageSizes?: never })
174-
) & {
175-
/**
176-
* @deprecated Use `imageSrcSet` instead.
177-
*/
178-
imagesrcset?: string;
179-
180-
/**
181-
* @deprecated Use `imageSizes` instead.
182-
*/
183-
imagesizes?: string;
184-
};
168+
| (HtmlLinkProps & Pick<Required<HtmlLinkProps>, "href">)
169+
| (HtmlLinkPreloadImage & Pick<Required<HtmlLinkPreloadImage>, "imageSizes">)
170+
| (HtmlLinkPreloadImage &
171+
Pick<Required<HtmlLinkPreloadImage>, "href"> & { imageSizes?: never });
185172

186173
export interface PageLinkDescriptor
187174
extends Omit<
@@ -192,8 +179,6 @@ export interface PageLinkDescriptor
192179
| "sizes"
193180
| "imageSrcSet"
194181
| "imageSizes"
195-
| "imagesrcset"
196-
| "imagesizes"
197182
| "as"
198183
| "color"
199184
| "title"

0 commit comments

Comments
 (0)