diff --git a/eleventy.config.js b/eleventy.config.js index 001a2c0d..7e381b05 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -59,6 +59,7 @@ export default async function (eleventyConfig) { // Create content-hashed filenames eleventyConfig.on("eleventy.after", async ({ dir, results }) => { + if (isDev) return; await applyContentHashing({ outputDir: dir.output, htmlFiles: results diff --git a/package.json b/package.json index 7a57169c..453b3671 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "impro", - "version": "0.18.192", + "version": "0.18.193", "type": "module", "scripts": { "start": "rm -rf \"${BUILD_DIR:-build}\" && NODE_ENV=development eleventy --serve", diff --git a/src/js/app.js b/src/js/app.js index 611aeda5..af6f5330 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -286,7 +286,6 @@ export async function main() { }); router.addRoute("/search", () => searchView, { layoutOptions: { activeNavItem: "search", isNavItemPage: true }, - scrollRestore: "manual", }); router.addRoute("/hashtag/:tag", () => hashtagView); router.addRoute("/profile/:handleOrDid/feed/:rkey", () => feedDetailView); diff --git a/src/js/router.js b/src/js/router.js index 9a62a346..46388369 100644 --- a/src/js/router.js +++ b/src/js/router.js @@ -1,6 +1,6 @@ import { EventEmitter, EventTarget } from "/js/eventEmitter.js"; import { effect, Signal } from "/js/signals.js"; -import { BoundedMap } from "/js/utils.js"; +import { BoundedMap, raf } from "/js/utils.js"; const MAX_PAGES = 5; @@ -292,6 +292,12 @@ export class Router extends EventEmitter { default: console.warn(`unknown scrollRestore type: ${scrollRestore}`); } + // Let the swapped-in page paint before route effects and restore + // handlers run, so iOS Safari has a live page to replace its + // interactive back-swipe snapshot with. + await raf(); + await raf(); + if (this.currentPage !== page || this.currentPath !== path) return; this.currentPage.dispatchEvent( new CustomEvent(isBack ? "page-restore" : "page-enter", { detail: { scrollY }, diff --git a/src/js/views/search.view.js b/src/js/views/search.view.js index ca54b521..fda364c4 100644 --- a/src/js/views/search.view.js +++ b/src/js/views/search.view.js @@ -769,12 +769,7 @@ export default async function searchView({ state.$showTypeahead.set(false); state.$committedQuery.set(""); loadedTabs.clear(); - window.scrollTo(0, 0); } hydrateAndPruneRecentProfiles().catch(console.warn); }); - - root.addEventListener("page-restore", (event) => { - window.scrollTo(0, event.detail?.scrollY ?? 0); - }); }