{"slug": "jax-js", "name": "jax-js", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 3, "warners": 0, "score": 2.724, "rising": 0.35, "first": "2026-01-06", "latest": "2026-08-16", "why": "you can run programs in the REPL through other backends like Wasm/WebGL", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 0, "compare": 0, "warn": 0}, "spark": [0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "you can run programs in the REPL through other backends like Wasm/WebGL", "kind": "", "icon": true, "domain": "jax-js.com", "github_repo": null, "official_url": "https://jax-js.com", "pricing": "", "aliases": ["jax-js", "Jax-JS"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 789106256, "item_id": 49319141, "url": "https://news.ycombinator.com/item?id=49319141", "by": "scroogey", "date": "2026-08-16", "stance": "recommend", "quote": "https://jax-js.com/", "excerpt": "https://jax-js.com/", "context": "", "use_case": "JAX in browser", "switched_from": "", "story": "Numba in the Browser: Unlocking a New Scientific Python Stack in JupyterLite"}, {"id": 785851808, "item_id": 49115738, "url": "https://news.ycombinator.com/item?id=49115738", "by": "mncalc7", "date": "2026-07-30", "stance": "recommend", "quote": "You should check out https://jax-js.com/.", "excerpt": "You should check out https://jax-js.com/. It has parity with quite a large surface area of Jax, and compiles natively in the browser to wasm and webGPU, entirely written in JS.", "context": "", "use_case": "ML in browser via WebGPU", "switched_from": "", "story": "We don't need no stinkin' tensor library: solving poker in custom WebGPU kernels"}, {"id": 744299233, "item_id": 46518702, "url": "https://news.ycombinator.com/item?id=46518702", "by": "ekzhang", "date": "2026-01-06", "stance": "recommend", "quote": "you can run programs in the REPL through other backends like Wasm/WebGL", "excerpt": "Firefox doesn\u2019t support WebGPU yet, you can run programs in the REPL through other backends like Wasm/WebGL: https://jax-js.com/repl See: https://caniuse.com/webgpu", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Jax-JS, array library in JavaScript targeting WebGPU"}, {"id": 744271648, "item_id": 46516978, "url": "https://news.ycombinator.com/item?id=46516978", "by": "mlajtos", "date": "2026-01-06", "stance": "recommend", "quote": "jax-js is very exciting alternative", "excerpt": "I have a project using tfjs and jax-js is very exciting alternative. However during porting I struggle a lot with `.ref` and `.dispose()` API. Coming from tfjs where you garbage collect with `tf.tidy(() => { ... })`, API in jax-js seems very low-level and error-prone. Is that something that can be improved or is it inherent to how jax-js works? Would `using`[0] help here? [0]: https://developer.mozilla.org/en-US/docs", "context": "Porting a tfjs project to jax-js", "use_case": "Array library for WebGPU", "switched_from": "", "story": "Show HN: Jax-JS, array library in JavaScript targeting WebGPU"}]}], "caveats": [], "who": [{"by": "mlajtos", "context": "Porting a tfjs project to jax-js", "url": "https://news.ycombinator.com/item?id=46516978", "date": "2026-01-06"}], "tags": [], "use_cases": ["jax in browser", "ml in browser via webgpu", "array library for webgpu"], "compared": [], "makers": [{"id": 744289107, "item_id": 46518069, "url": "https://news.ycombinator.com/item?id=46518069", "by": "ekzhang", "date": "2026-01-06", "stance": "neutral", "quote": "jax-js is more trying to explore being an ML research library", "excerpt": "Since ONNX is just a model data format, you can actually parse and run ONNX files in jax-js as well. Here\u2019s an example of running DETR ResNet-50 from Xenova\u2019s transformers.js checkpoint in jax-js https://jax-js.com/detr-resnet-50 I don\u2019t think I intend to support everything in ONNX right now, especially quant/dequant, but eventually it would be interesting to see if we can help accelerate transformers.js with a jax-j", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Jax-JS, array library in JavaScript targeting WebGPU"}, {"id": 744288480, "item_id": 46518030, "url": "https://news.ycombinator.com/item?id=46518030", "by": "ekzhang", "date": "2026-01-06", "stance": "recommend", "quote": "I hope you\u2019d at least try it out", "excerpt": "I don\u2019t think tf.tidy() is a sound API under jvp/grad transformations, also it prevents you from using async which makes it incompatible with GPU backends (or blocks the page), a pretty big issue. https://github.com/tensorflow/tfjs/issues/5468 Thanks for the feedback though, just explaining how we arrived at this API. I hope you\u2019d at least try it out \u2014 hopefully you will see when developing that the refs are more fle", "context": "", "use_case": "array computing in JavaScript", "switched_from": "", "story": "Show HN: Jax-JS, array library in JavaScript targeting WebGPU"}, {"id": 741034560, "item_id": 46314660, "url": "https://news.ycombinator.com/item?id=46314660", "by": "ekzhang", "date": "2025-12-18", "stance": "recommend", "quote": "after working on it for the past year", "excerpt": "Wanted to share this library that I'm open-sourcing now after working on it for the past year. You write code like in JAX/NumPy, but it\u2019s fully interactive on the frontend and compiles down to shaders on the user\u2019s GPU (with WebGPU). So far I\u2019ve used it for purely frontend-only ML demos. https://jax-js.com/mobileclip", "context": "", "use_case": "Frontend ML demos", "switched_from": "", "story": "Show HN: jax-js, an ML library and compiler for the web"}], "threads": [{"url": "https://news.ycombinator.com/item?id=46516267", "title": "Show HN: Jax-JS, array library in JavaScript targeting WebGPU", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=49269451", "title": "Numba in the Browser: Unlocking a New Scientific Python Stack in JupyterLite", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49111523", "title": "We don't need no stinkin' tensor library: solving poker in custom WebGPU kernels", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46314231", "title": "Show HN: jax-js, an ML library and compiler for the web", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {"recommend": 1}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"recommend": 1}, "2026-08": {"recommend": 1}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 789106256, "item_id": 49319141, "url": "https://news.ycombinator.com/item?id=49319141", "by": "scroogey", "date": "2026-08-16", "stance": "recommend", "quote": "https://jax-js.com/", "excerpt": "https://jax-js.com/", "context": "", "use_case": "JAX in browser", "switched_from": "", "story": "Numba in the Browser: Unlocking a New Scientific Python Stack in JupyterLite"}, {"id": 785851808, "item_id": 49115738, "url": "https://news.ycombinator.com/item?id=49115738", "by": "mncalc7", "date": "2026-07-30", "stance": "recommend", "quote": "You should check out https://jax-js.com/.", "excerpt": "You should check out https://jax-js.com/. It has parity with quite a large surface area of Jax, and compiles natively in the browser to wasm and webGPU, entirely written in JS.", "context": "", "use_case": "ML in browser via WebGPU", "switched_from": "", "story": "We don't need no stinkin' tensor library: solving poker in custom WebGPU kernels"}, {"id": 744299233, "item_id": 46518702, "url": "https://news.ycombinator.com/item?id=46518702", "by": "ekzhang", "date": "2026-01-06", "stance": "recommend", "quote": "you can run programs in the REPL through other backends like Wasm/WebGL", "excerpt": "Firefox doesn\u2019t support WebGPU yet, you can run programs in the REPL through other backends like Wasm/WebGL: https://jax-js.com/repl See: https://caniuse.com/webgpu", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Jax-JS, array library in JavaScript targeting WebGPU"}, {"id": 744271648, "item_id": 46516978, "url": "https://news.ycombinator.com/item?id=46516978", "by": "mlajtos", "date": "2026-01-06", "stance": "recommend", "quote": "jax-js is very exciting alternative", "excerpt": "I have a project using tfjs and jax-js is very exciting alternative. However during porting I struggle a lot with `.ref` and `.dispose()` API. Coming from tfjs where you garbage collect with `tf.tidy(() => { ... })`, API in jax-js seems very low-level and error-prone. Is that something that can be improved or is it inherent to how jax-js works? Would `using`[0] help here? [0]: https://developer.mozilla.org/en-US/docs", "context": "Porting a tfjs project to jax-js", "use_case": "Array library for WebGPU", "switched_from": "", "story": "Show HN: Jax-JS, array library in JavaScript targeting WebGPU"}]}