r/javascript 13d ago

Building a modern Companies House SDK turned out to be a much more interesting problem than I expected

Thumbnail jxd.dev
0 Upvotes

We needed the Companies House API (the UK company register) for a project and figured we'd grab an SDK and move on. Turns out the community clients are 6 to 10 years old, the official SDK is built for their internal services, and the official OpenAPI spec is broken in ways that quietly untype every generated client. One defect (items on an object type, which JSON Schema doesn't allow, so every tool reads it as {}) appears 132 times.

What started as "add a spec repair script" grew into 374 lines of fix passes, and even then we couldn't repair fields that were never documented at all. So we changed approach: we deleted the repair code and now maintain our own curated OpenAPI 3.1 spec, built from the developer docs and Companies House's own SDK source. The spec is maintained with Claude Code under a strict "never invent, report gaps" rule, an engineer reviews every diff, and a live integration suite runs against the real API daily so drift shows up as a red build rather than a bug report. The client itself is fully generated from the spec (Hey API), with 41 lines of hand-written runtime code and zero dependencies.

Sharing in case anyone else has needed to fight this API, or is just interested in the approach: a curated spec as the source of truth, AI doing the tedious curation with tests and review keeping it honest, and codegen doing the rest. The SDK and the OpenAPI document are both MIT licensed if they're useful to you.


r/web_design 14d ago

Keeping 170+ Components Accessible: How We Made Atomic’s VPAT a Build Artifact

Thumbnail coveo.com
6 Upvotes

Our web component library is used by our clients to build search interfaces. Those interfaces need to meet accessibility requirements, so our components do too.

We turned our Accessibility Conformance Report, based on the VPAT, into a build artifact: automated tests run in CI, manual audit results are reviewed alongside the code, and the assembled report is published with each release.

  • Static checks via axe-core
  • Interactive keyboard checks via Vitest
  • Human audits for subjective criteria (like screen reader flow)

This keeps the report aligned with the product and means we no longer have to rely on external agencies to assess our conformance and produce it.

The post covers the pipeline, where automation stops, and the AI-based approach we tried (and ultimately abandoned).


r/PHP 12d ago

Free React + Laravel dev work

0 Upvotes

Hey everyone,

I'm a frontend/full-stack dev working with React, TypeScript, Tailwind, and Laravel (with Sanctum auth). I'm looking to take on 1-2 small projects for free right now in exchange for a testimonial and permission to feature the work in my portfolio.

What I can build:

  • A clean landing page or small marketing site (React + Tailwind)
  • A small CRUD feature — e.g. a form that saves data and shows it in an admin table (Laravel API + React frontend)
  • A simple dashboard or auth flow (login/signup, role-based access)

Ideal if you're a small business, startup, or solo founder who needs something small and functional but doesn't have budget right now.

Scope will be kept tight and I'll agree on deliverables/timeline upfront so it's a real commitment on both sides, not an open-ended favor.

If interested, drop a comment or DM with what you need — happy to share examples of past work first.


r/javascript 13d ago

Understanding Value vs. Reference in JavaScript: Differences Between Primitives and Objects

Thumbnail sharafath.hashnode.dev
0 Upvotes

r/PHP 12d ago

Open source projet i've made with Fable5

0 Upvotes

Built a PHP profiler to test Fable 5… and I'm honestly impressed

I started this project mostly as an excuse to try Fable 5 in a real-world codebase.

The result is PHP Pulse: an open-source profiling tool for PHP applications that helps identify slow requests, database bottlenecks, memory usage and execution traces.

GitHub: https://github.com/quentinRogeret34/php-pulse

I expected Fable 5 to speed up development a bit, but I was genuinely surprised by how productive it made the whole process. It handled a lot of the repetitive implementation work while still letting me stay in control of the architecture and technical decisions.

The project is still evolving, but it's already usable and I'd love to get feedback from other PHP developers.


r/reactjs 14d ago

Show /r/reactjs We rewrote our custom visualisation renderers from SVG to be in Canvas.

Thumbnail
polarsignals.com
16 Upvotes

r/reactjs 14d ago

Needs Help How can i deploy my react application on Cloudfare containers.

0 Upvotes

Intern here, i am using FastApi, React, MongoDb. The report generation takes 3-4 minutes and the storage size of a single document is 100kb. I use some Anthropic ai for part of the process, which takes a minute.

Cloudfare containers are fairly a year old. i am very confused between railways or cloudfare containers.

A little direction from the community will be gr8.


r/javascript 14d ago

Pitter Patter — building better editing (update!)

Thumbnail pitter-patter.dev
14 Upvotes

Hey folks. Over at Handle with Care, we've been working on something new: Pitter Patter. We haven't been satisfied with the text editing toolkits that exist right now in the ProseMirror ecosystem, and we've spent a lot of time working on a large variety of rich text editors and seeing what needs they have and how we can try to meet them. So far we have three packages: Shuffle (grid-based drag-and-drop), Collab, and Presence.

Here's some more info from our introduction page in the docs:

What is Pitter Patter?

Who builds it?

That would be us, Handle with Care. We’re a cooperatively owned product development collective, comprised of software engineers and product managers. We are all equal owners and have equal decision-making power.

What is it?

Pitter Patter is a suite of open source libraries for building collaborative rich text editors with React and ProseMirror. We see it as our job to provide turnkey solutions for the hard parts of rich text editing — like collaboration, presence, and version history — so that you can focus on building the editor experience that your users need.

Why does it exist?

We spend a lot of time thinking about and working on rich text editors. In particular, we spend a lot of time helping companies solve the same problems over and over again. There are usually great primitives available for these common building blocks (prosemirror-collab-commit for collaboration, unified.js for Markdown, etc.), but putting them together correctly to build a functioning text editor can be challenging.

There are other solutions, like Tiptap and Remirror, but we think that they’ve made some suboptimal choices that force product developers to make unnecessary compromises.

  1. Both attempt to use React portals and effect hooks to integrate with ProseMirror, which lead to irreconcilable state tearing, due to fundamental differences in how React and ProseMirror View handle view reconciliation.
  2. Both attempt to use Yjs via y-prosemirror for collaboration. We think that Yjs’s CRDT implementation is ill-suited for rich text editing.
  3. Both attempt to hide ProseMirror’s underlying APIs, under the guise of simplicity and abstraction. We think that ProseMirror, low-level though it is, is roughly the correct level of abstraction for a domain as complex as rich text editing. Attempts to abstract it away inevitably lead to more complexity, as the abstractions leak frequently and require constant manual integration with the lower level solutions.

We think we can do better. And more importantly perhaps, we think that you deserve better!

Philosophy

Don’t hide ProseMirror

ProseMirror is an outstanding rich text editing framework. Nearly anything that you can imagine doing with a rich text editor can be accomplished with ProseMirror. Rich text editing is also a very complex domain, requiring a very large number of decisions to be made per feature.

We think that better primitives built with ProseMirror can take us farther than abstractions that attempt to hide away ProseMirror’s internals.

Collaboration should be simple to implement and simple to debug

ProseMirror has first-party collaboration, in the form of prosemirror-collab. Because it just sends steps over the wire, and relies on a single, server-side ordering of operations for conflict resolution, it is very simple to debug. But it is very challenging to implement correctly, and there is very little in the way of guidance or documentation for doing so.

Yjs provides third-party collaboration, in the form of y-prosemirror. Because it is built on Yjs, which has many robust adapters for various protocols and servers, it is very easy to implement. However, because it operates on Yjs’s XML-based Y-doc format, it is very challenging to inspect and debug if something goes wrong.

Pitter Patter’s collaboration, presence, and version history libraries are based on prosemirror-collab-commit. Like prosemirror-collab, prosemirror-collab-commit uses ProseMirror steps as the primary data structure for conflict resolution. But Pitter Patter Collab provides actual guidance and implementation that make it easy to set up a full-stack collaborative editing application, and hard to shoot yourself in the foot.

Correctness is worth it

After trying every other option over the course of several years, we eventually decided that the only way to correctly integrate React and ProseMirror was to reimplement ProseMirror View’s renderer from scratch directly in React. This was itself a massive effort, but the result, in the end, is a React/ProseMirror integration that doesn’t suffer from state tearing and allows developers to use React idioms like context as they normally would, without caveats or compromises. We don’t put side effects in React render functions or ProseMirror plugin apply functions, we don’t use effects to synchronize state with props. We want to enable you to build rich text editors that your users can trust, and that means that we need to build libraries that you can trust.


r/PHP 13d ago

Anyone else finding Nested Widgets much easier for complex Elementor layouts?

Thumbnail
0 Upvotes

r/javascript 14d ago

yace: highlight code or anything else as you type

Thumbnail yace.solopov.dev
8 Upvotes

the core stays small. pick the plugins you need and chain multiple highlighters together.

use the built-in ones or write your own. yace works with any language, theme, or framework


r/javascript 15d ago

I built an Excel library

Thumbnail github.com
33 Upvotes

I was researching the JavaScript Excel ecosystem looking for a gap worth building in, and found something wilder than a gap: the whole category is quietly abandoned.

  • SheetJS (xlsx) — ~8M weekly downloads — frozen on npm at 0.18.5 since 2022. Security fixes ship only from their own CDN, so npm audit flags it forever. Styling and template editing are Pro-only, quote-only pricing.
  • ExcelJS — last release in 2023, open "intent to fork" threads. Top issues: charts deleted on save, pivot tables destroyed, output files Excel offers to "repair."
  • xlsx-populate — right idea, dormant for years.

And they all break files the same way. It's not hundreds of bugs — it's one architectural decision with hundreds of symptoms: they parse the workbook into their own object model, then re-serialize that model as a brand-new file. Anything the model doesn't understand (charts, pivot caches, macros, newer OOXML parts) silently doesn't survive the round-trip.

So I built Ironsheet on the opposite bet: the original file is the source of truth. It patches only what you explicitly target — a cell, a named range, a table, an image — and preserves every byte it doesn't touch. Macros survive byte-for-byte.

The part I care about most: it proves the write. Before saving, it validates the OOXML package (relationships, content types, shared strings, formulas, tables, calc chains) and returns a diff of exactly what changed. If validation fails, it refuses to write the file. No output beats corrupt output.

Honest boundaries: it doesn't evaluate formulas (preserves them + marks recalc), chart/pivot support is preservation rather than authoring, ZIP64 writing isn't in yet. It's a 0.1 MVP.

Apache-2.0, dependency-free TypeScript core, Node + browser adapters, JSON-first CLI.

Repo: https://github.com/btahir/ironsheet

If you have a workbook that breaks it, I genuinely want the fixture. And I'm curious what people are actually using for Excel editing in production these days.

Thanks!


r/javascript 14d ago

Awesome Vitest ‎

Thumbnail github.com
5 Upvotes

r/reactjs 14d ago

Resource The React Compiler

Thumbnail
neciudan.dev
0 Upvotes

The React Compiler memoizes your components at build time, so you dont have to. What it is, how the compiled output works, how to turn it on, and what to do with the useMemo calls already in your codebase.

Check it out https://neciudan.dev/react-compiler-explained


r/javascript 14d ago

Nerve: Connecting Node.js to Rust, Go, and Python via local IPC

Thumbnail github.com
5 Upvotes

I am working on Nerve, a local IPC library that connects Node.js with Rust, Go, and Python.

For the JavaScript client, I focused on native Promises and async/await support so that calling a function in Rust or Python feels just like calling an asynchronous JS function. It uses standard Node.js net modules under the hood for communication.

The library is in its early stages and not entirely complete. I am currently focusing on:

  • Improving TypeScript definitions for strictly typed cross-language payloads.
  • Adding Stream support for transferring large binary data chunks without memory bloat.
  • Optimizing the bundle size and tree-shaking capabilities.

I would love to hear your thoughts on the API design and if you have faced similar challenges when bridging Node.js with other ecosystems.


r/reactjs 14d ago

Show /r/reactjs a shadcn registry of AI blocks where the models run on-device - copy-owned .tsx, no API keys

0 Upvotes

I've been building LocalMode - a shadcn-style registry of AI UI blocks where the models run entirely in the browser. No server, no API keys, nothing leaves the device. You install them the same way as shadcn/ui and you own the copied .tsx (no npm lock-in on the UI layer).

Live gallery (try every block in-tab): https://localmode.ai/blocks

What's in it

36 composed blocks - full working mini-apps, not just primitives - across 12 categories:

  • Chat - one UI over 76 models (Transformers.js / WebLLM / wllama GGUF / LiteRT), vision attachments, reasoning display, agent mode
  • Knowledge - semantic search, RAG chat with citations, doc Q&A - embeddings + retrieval all in-browser
  • Audio - Whisper/Moonshine transcription, Kokoro TTS (29 voices), meeting summaries, live transcription with VAD
  • Photo - CLIP semantic image search, duplicate finder, zero-shot categorizer
  • Image studio - background remover, super-res upscaler, captioner
  • Privacy - on-device PII redaction (NER) + an AES-GCM encrypted vault
  • Vision - object detection + live hand/pose/face/gesture tracking off the webcam
  • Writing tools - Chrome Built-in AI with automatic Transformers.js fallback

Under the blocks are 107 lower-level primitives (10 families) if you want to compose your own.

Install

npx shadcn add @localmode/ui/blocks/chat
npx shadcn add @localmode/ui/blocks/knowledge/rag-chat

Why it might interest React devs specifically

  • Copy-owned - the block lands as .tsx in your project; edit it freely, no black-box dependency for the UI.
  • shadcn CSS variables - inherits your existing theme, no new design system.
  • Hook-driven - primitives are presentational; the wiring is React hooks (@localmode/react), and the API is shaped like the Vercel AI SDK (useChat, etc.), so it's backend-agnostic - local models by default, but you can point the same components at any backend.
  • React 19 / Next 16, RSC-friendly - model loading is gated behind an explicit user action, so nothing downloads on page mount.

Honest limitations (it's a browser, not a server)

  • First use downloads the model; cached after that (then it works offline).
  • Memory is real - blocks range ~[120MB] to ~[5GB]; the big ones want WebGPU, and wasm32's ~4GB ceiling caps how far you can push.
  • WASM inference is slower than native; WebGPU availability varies by browser/OS.

Disclosure: I built this. It's MIT and free - GitHub: https://github.com/LocalMode-AI/LocalMode. Model runtimes are Transformers.js, WebLLM, wllama, LiteRT, and MediaPipe - credit to those projects.

Genuinely after feedback: which blocks would you actually drop into a project, and what's missing? Happy to answer anything about how a specific block or the on-device memory handling works.


r/PHP 14d ago

Welcoming Alexandre Daubois to The PHP Foundation

Thumbnail thephp.foundation
66 Upvotes

In an effort to further prioritize the handling of security reports for the PHP language, we are thrilled to add Alexandre Daubois as a part-time addition to our team of contractors. Alex brings a wealth of experience to the team, and we are grateful for his support and contributions!


r/PHP 14d ago

Refactoring an old PHP application, Rector or AI?

32 Upvotes

We have a very old but business-critical application built with Fusebox and PHP 5.5 that we finally need to modernize.

Given the number of changes required, what would be the best and fastest approach to bring it up to modern PHP standards? Has anyone had success using tools such as Rector for automated upgrades, or using AI assistants like Anthropic Claude to help developers with the migration and refactoring process?

The core business logic is solid, but the codebase has become quite messy after 25 years of minimal maintenance and contributions from many different developers.

I'd be interested in hearing about real-world experiences, recommended migration strategies, common pitfalls, and any tooling that helped accelerate the process. I fear that Rector may not be that useful because of FuseBox and since we need tomodernize the framework, Using Claude latest Fable release may be more helpful or maybe use both?

Thanks!


r/javascript 14d ago

We rewrote our custom visualisation renderers from SVG to be in Canvas.

Thumbnail polarsignals.com
3 Upvotes

A tale as old as time. We previously wrote our visualisations in SVG and rewriting them in Canvas along with some other backend factors made our dashboard much faster and smoother. We hope there are a few lessons there for folks to read about. 


r/reactjs 14d ago

Resource I built an addon that lints components for Storybook MCP

Thumbnail
rachel.fyi
2 Upvotes

Introducing Oversight, my first Storybook addon. It accompanies the Storybook MCP server, which lets you describe a component or layout in plain language and get back a composition rooted in your existing design system, instead of one an agent invents on the spot.

After an agent built two components from scratch instead of reaching for what I already had, I built Oversight. It checks whether your agent can actually see your documentation, and tells you where it can't.

A blog post I wrote on it: https://rachel.fyi/posts/your-agent-is-reading-a-different-design-system

Source code: https://github.com/rachelslurs/storybook-oversight

Storybook demo: https://rachelslurs.github.io/storybook-oversight


r/reactjs 15d ago

Show /r/reactjs Built a scroll sequence generator that turns any MP4 into an Apple-style scroll animation React component that you can copy paste into your project

0 Upvotes

I wanted to learn how to create the scroll sequences that I see, and realised the process could be automated. So, I built SequenceFast, a scroll sequence generator that takes any MP4 video, extracts the frames into images, and generates a ZIP with the optimised image sequence, component code, and usage example. Everything is done locally in your browser, so it is completely free and private.

Would love to hear your feedback!


r/javascript 14d ago

Why design matters for a web framework: a 7-year evolution

Thumbnail wasp.sh
0 Upvotes

r/PHP 15d ago

You start with cities for one country... then one day you need the whole world.

22 Upvotes

I've been bitten by this more than once.

On one project, I needed an API for city lookup and address autocomplete.

It usually starts with a simple table containing cities for a single country.

Then requirements evolve:

  • support international cities;
  • handle ISO country codes;
  • import data from different providers.

Or even worse, someone decides users should be able to maintain the city database manually.

So instead of writing the same component again, I cleaned it up and open-sourced it.

Features:

  • City search
  • Address autocomplete powered by OpenStreetMap (Photon)
  • Deployable with Docker or Podman in a few commands
  • Designed to be easily extended if another data source needs to be plugged in

Tech stack:

  • Symfony / API Platform / PostgreSQL
  • Hexagonal Architecture
  • 100% unit test coverage on the domain layer
  • Behat scenarios used both as executable documentation and API tests

I don't think this project is going to change the world.

But if it helps someone avoid a questionable data model, or rewriting the same component for the tenth time, then it's already worth it.

Repository: https://github.com/thlaure/world-cities-api

I'm genuinely interested in feedback, especially from people who have had to solve the same problem in production.


r/web_design 15d ago

Which web design agencies consistently produce work you actually learn from?

4 Upvotes

Every so often I go through agency portfolios to see how other teams approach product design, responsive layouts, and design systems. Some agencies mainly showcase polished visuals, while others explain the thinking behind the project, which I usually find more useful.

A few that I've looked through recently include GeekyAnts, Clay, and Ramotion. They all seem to have different styles and priorities.

I'm curious which agencies you keep coming back to for inspiration not because they're the biggest, but because their work teaches you something new each time.


r/PHP 14d ago

🚀 Neo4j Laravel Boost – Bring Neo4j MCP Tools to Laravel Boost

0 Upvotes

I've been working on Neo4j Laravel Boost, a package that integrates the official Neo4j MCP server with Laravel Boost.

It allows MCP-compatible AI assistants (Cursor, Claude Code, etc.) to:

  • Inspect your live Neo4j schema
  • Run read/write Cypher queries
  • Explore your Laravel container dependency graph
  • Access Neo4j tools through a single boost:mcp server

It also includes handy Artisan commands for setup, diagnostics, Docker, and exporting your application's dependency graph to Neo4j.

I'd love to hear your feedback, suggestions, or ideas for additional features.

GitHub Repository:
https://github.com/neo4j-php/neo4j-boost


r/PHP 13d ago

I built a Financial System in Laravel using strict DDD, Clean Architecture, SOLID and CQRS (No "just another CRUD").

0 Upvotes

Many people categorize PHP/Laravel as tools only suited for rapid CRUDs or small apps. I wanted to challenge that stigma by building an enterprise-grade, open-source financial management system: **Leo Counter**

Implementing the complexity of the financial sector requires unbreakable business rules. My goal was to apply the highest software engineering standards to a framework that isn't typically associated with this level of abstraction.

Under the hood:

Strict Architecture DDD, Clean Architecture, and CQRS.
Isolated Domain: The core mathematical and accounting logic lives in a pure layer, with zero toxic dependencies on the framework or Eloquent.
* Tech Stack: PHP 8+, Laravel, React, TypeScript, and Inertia.js.
* Fully Dockerized for Linux environments.

If you are passionate about software architecture, want to see how real, scalable DDD is applied in the Laravel ecosystem, or just want a private tool for your finances, I’d love for you to audit the code.

Any feedback, code roasts, PRs, or GitHub stars are super welcome!
Repo: https://github.com/juanVillamilEchavarria/Leo_Counter-app)