Bluesky (social-app web build)
Generated from docs/compat/bluesky.md when the site was built at 7aa23e2.
-
Build: bluesky-social/social-app at 8a61650d44de204ee4219148ccac3ed99e45aabf,
expo exportweb build, served from a directory. -
Run:
Terminal window niso-run --page serve/index.html --root serve --url http://localhost/ \--missing --max-ms 15000
Status
Section titled “Status”With Web Animations, the Splash component’s element.animate(...) runs: the
fade-out (opacity 1 to 0, scale 1 to 1.5, 300 ms, fill forwards) plays on
animation frames, its finished promise resolves at 300 ms, and
getComputedStyle then gives opacity 0 and matrix(1.5, 0, 0, 1.5, 0, 0).
This was checked against the live bsky.app build (index-a9f3c868….js,
mirrored on 2026-11-08 with its lazy messages-… chunk and the script URLs
made local), not the commit above, which isn’t on this machine. The app now
mounts and stops in two error boundaries (“Oh no! There was an unexpected
issue in the application”): a horizontal scroller’s effect calls
element.scroll({ left, behavior: 'smooth' }), which niso doesn’t have (“not a
function”), and another component uses IntersectionObserver, which isn’t
defined. The IndexedDB rejection is still logged as unhandled.
Blockers, in the order they were hit
Section titled “Blockers, in the order they were hit”| # | What failed | Cause | Fix |
|---|---|---|---|
| 1 | The run never finished: a 2 s setInterval fired forever on the virtual clock |
niso_js_run cleared its first flag whenever DOM tasks ran, so the timer hook never got its time budget |
The flag is cleared only after the timer hook has seen it. Test: run_honors_its_budget_when_dom_tasks_run, which hangs without the fix. |
| 2 | new Headers(...) |
No fetch API | Fixed by main’s fetch, Headers and Response. Relative fetch URLs now resolve against the document’s base URL, and GETs the embedder’s loader answers come from it (niso-run --root). Test: fetch_and_images_load_through_the_loader. |
| 3 | Splash: element.animate is not a function |
No Web Animations | Web Animations Level 1 in the core (animation.rs, animation_style.rs), run from the rendering update and applied through the cascade. Tests: crates/niso-quickjs/tests/animations.rs and the web-animations WPT suite. |
| 4 | indexedDB undefined (an unhandled rejection) |
No IndexedDB | IndexedDB on the storage driver (crates/niso-core/src/indexeddb). Not rerun: the build is not on the machine that added it. |
| 5 | A horizontal scroller: element.scroll(...) is not a function |
No Element.scroll/scrollTo/scrollBy (CSSOM View) |
Not fixed. |
| 6 | IntersectionObserver is not defined |
No IntersectionObserver | Not fixed. |
Earlier fixes in this effort, made while getting this app and the others to
start: URL and URLSearchParams, History and Location (fragment navigation
only), Web Storage, matchMedia, CSSOM (style sheets, rules, insertRule),
MutationObserver, the Encoding API, HTMLLinkElement load and error events,
ES modules and the unhandled rejection tracker in the QuickJS binding, HTML’s
timer nesting clamp, and error causes in the console.