Share button
Check with Ryn from Safari.
Build it once on your iPhone, about three minutes. Then on any product page in Safari, tap Share → Check with Ryn.
Allow two settings first
Open Settings → Apps → Shortcuts → Advanced (on older iPhones: Settings → Shortcuts → Advanced).
Turn on Allow Running Scripts and Allow Sharing Large Amounts of Data. Without them the Shortcut stops before it reaches Ryn.
Start a new shortcut
Open the Shortcuts app. Tap + at the top right. Tap the name at the top, choose Rename, and type Check with Ryn.
Put it in the Share menu
Tap the ⓘ button at the bottom. Turn on Show in Share Sheet, then tap Done.
A grey line appears at the top: “Receive Any input from Share Sheet”. Tap Any, tap Clear, tick only Safari web pages, and tap Done.
Add the one step
Tap Search for actions, type Run JavaScript, and tap Run JavaScript on Web Page. It should read “Run JavaScript on Shortcut Input”.
Copy the script below. Then tap inside the action’s grey code box, select everything already in it (tap and hold → Select All), and paste. Tap Done at the top right. That’s the whole Shortcut: nothing else to add.
var isGuide = function (e) { return /size\s*(guide|chart)|fit\s*guide|sizing/i.test(e.textContent + ' ' + (e.getAttribute('aria-label') || '')); }; var found = Array.from(document.querySelectorAll('a, button, [role="button"], [data-url], [data-href]')).filter(isGuide); var guides = found.map(function (e) { var h = e.getAttribute('data-url') || e.getAttribute('data-href') || e.getAttribute('href'); try { return h && !/^(#|javascript:)/i.test(h) ? new URL(h, location.href) : null; } catch (x) { return null; } }).filter(function (u) { return u && u.origin === location.origin && u.pathname !== location.pathname; }).slice(0, 3); var tapped = found.filter(function (e) { var h = e.getAttribute('href'); return e.tagName !== 'A' || !h || /^(#|javascript:)/i.test(h); }).slice(0, 2); tapped.forEach(function (e) { try { e.click(); } catch (x) {} }); var isChart = function (t) { return /bust|waist|hip|chest/i.test(t.textContent) && /\d/.test(t.textContent); }; var frames = function () { return Array.from(document.querySelectorAll('iframe')).map(function (f) { try { return f.contentDocument; } catch (x) { return null; } }).filter(Boolean); }; var chartTables = function () { return [document].concat(frames()).reduce(function (all, d) { return all.concat(Array.from(d.querySelectorAll('table')).filter(isChart)); }, []); }; var pause = new Promise(function (done) { var t0 = Date.now(); (function tick() { if (!tapped.length || chartTables().length || Date.now() - t0 > 6000) return done(); setTimeout(tick, 300); })(); }); var wait = new Promise(function (done) { setTimeout(function () { done([]); }, 5000); }); Promise.all([pause, Promise.race([Promise.all(guides.map(function (u) { return fetch(u.href, { credentials: 'include' }).then(function (r) { return r.ok ? r.text() : ''; }).catch(function () { return ''; }); })), wait])]).then(function (got) { var charts = got[1].map(function (h) { return Array.from(new DOMParser().parseFromString(h, 'text/html').querySelectorAll('table')).map(function (t) { return t.outerHTML; }).join(''); }).join('') + frames().map(function (d) { return Array.from(d.querySelectorAll('table')).filter(isChart).map(function (t) { return t.outerHTML; }).join(''); }).join(''); var d = document.documentElement.cloneNode(true); d.querySelectorAll('script[src], style, link, svg, noscript, iframe, template, video').forEach(function (e) { e.remove(); }); var html = '<!doctype html>' + d.outerHTML; if (html.length > 3000000) { d.querySelectorAll('script:not([type*="json"])').forEach(function (e) { e.remove(); }); html = '<!doctype html>' + d.outerHTML; } html += '<div data-ryn-size-guide>' + charts + '</div>'; var f = document.createElement('form'); f.method = 'POST'; f.enctype = 'multipart/form-data'; f.action = 'https://ryn-blue.vercel.app/api/page'; [['url', location.href], ['html', html], ['go', '1']].forEach(function (p) { var t = document.createElement('textarea'); t.name = p[0]; t.value = p[1]; f.appendChild(t); }); f.style.display = 'none'; document.body.appendChild(f); f.submit(); completion('Opening Ryn…'); });Try it
Open a product page in Safari (not Chrome or a store’s app), tap Share, and choose Check with Ryn (if it isn’t in the list, tap Edit Actions at the bottom to add it). The first time, tap Allow (or Always Allow) when your iPhone asks to let it run on the page.
Safari then opens Ryn by itself: you see the piece and your size, then Ryn’s take.
Nothing happens, or an error? Check step 01’s two settings, and that step 02 receives only Safari web pages. Still stuck: screenshot the Shortcut’s steps and the error.
Shopping in a store’s app? Tap its Share button and choose Open in Safari (or copy the link into Safari) first. Ryn only reads the one page you send, and keeps it for at most an hour.
Share it with friends
In Shortcuts, press and hold Check with Ryn → Share → Copy iCloud Link, and text the link. They tap it, then Add Shortcut.