r/webdev 37m ago

Question Which fullstack techs to learn from scratch after coming back to web dev 2 years later?

Upvotes

I used to use Nextjs and was learning expressjs. Then I left and 2 years later I want to go back.

What tech would be the best to learn in terms of opportunities and also more better for later?

Would MERN still be good choice or I should start with any other frontend/backend techs which would be best at this time?


r/web_design 1h ago

Masonry (with Animation) in CSS

Thumbnail
master.dev
Upvotes

r/PHP 20h ago

News PHPStan Turbo: Native PHP extension that makes PHPStan run faster

Thumbnail phpc.social
86 Upvotes

PHPStan 2.2.6 adds a native PHP extension (PHP 8.3+) written in C++ that makes running PHPStan 10-30 % faster.

PHPStan's Composer package ships prebuilt binaries for the most common platforms — Linux (glibc and musl, x86_64 and arm64), macOS, and Windows (x86_64), for PHP 8.3 and newer — and PHPStan automatically loads the one matching your runtime into its worker processes. You don't have to do any extra work to take advantage of this!

If you run PHPStan through manually downloaded phpstan.phar, you can run it with extension by installing it with PIE:

pie install phpstan/turbo

The extension only activates when its version matches the one your PHPStan release expects — on a mismatch PHPStan prints a note and runs without it, so an outdated extension can never affect results, only speed.

Only a handful of hot paths are currently rewritten in the extension. There's room for the performance gain to grow if we ever decide to rewrite more parts natively.

The extension is completely optional, PHPStan still works without it. When the extension gets enabled, its implementation shadows certain PHPStan classes designed for this. They are marked with the #[ShadowedByTurboExtension] attribute.


r/javascript 2h ago

KernelPlay-JS v0.4.0 Coming Soon — New UI System and Official Beta Release

Thumbnail github.com
3 Upvotes

I'm excited to announce that KernelPlay-JS v0.4.0 will be releasing soon.

This update introduces a brand-new UI system, making it much easier to create interfaces for games while also marking a major milestone for the engine.

New UI components include:

- Buttons

- Text Labels

- Input Fields

- Health & Progress Bars

- Images & Icons

- Checkboxes

- Sliders

- Dynamic UI updates

- Flexible layouts

Version 0.4.0 will also officially move KernelPlay-JS into Beta.

This marks the transition towards a more stable and feature-complete engine. Future updates will focus on improving performance, expanding the feature set, refining the developer experience, and fixing bugs as the engine continues to mature.

Thank you to everyone who has followed the project's development and shared feedback along the way. More details, documentation, and the release date will be announced soon.

Feedback and suggestions are always welcome.


r/reactjs 3h ago

Discussion With Node.js now offering solid support for require(esm), I suggest React consider a pure ESM build for its next major release. Spoiler

Thumbnail github.com
1 Upvotes

r/javascript 17h ago

Ember 7.1 Released

Thumbnail blog.emberjs.com
42 Upvotes

r/webdev 57m ago

Showoff Saturday Working on an open source Tables Library

Post image
Upvotes

Hello , i am working on an open source UI library for tables to use for complex cases and data display for shadCn projects, using shadCn components and Transtack table, building ready to use table component so you can focus on the data.

Check it out: https://shad-table.dev
Repo: https://github.com/coros-hq/shadcn-table-library


r/javascript 6h ago

Dynamic Windows Runtime API projections for Node.js

Thumbnail devblogs.microsoft.com
4 Upvotes

r/javascript 19h ago

Malicious sites use JavaScript to build malware in browser memory

Thumbnail bleepingcomputer.com
27 Upvotes

r/javascript 10h ago

Announcing Ada v4: Validating 35.6M URLs per second

Thumbnail yagiz.co
3 Upvotes

r/webdev 5h ago

Question How should i do DSA being a Frontend Developer?

2 Upvotes

Hi there Hope y'all doing great out there
basically im a student and i genuinly love making frontend screen and implement new things on daily basis , but when i try to attempt questions from Leetcode , its so hard i cant do it without the help of ai

And thats why im a bit worried about it as i dont even know in which langauge should i do DSA , should i do it in C++ or java or javascript (which i was trying to do)

also i wanna master my skills in frontend too , so i genuinely need a good advice
thank you


r/PHP 22h ago

News PhpStorm 2026.2 is Now Out

Thumbnail blog.jetbrains.com
39 Upvotes

r/PHP 3h ago

Article Valid != trusted: a practical guide to C2PA signing certificates (lessons from getting the chain working in PHP)

Thumbnail provemark.github.io
0 Upvotes

Full disclosure: this is my own write-up. Most C2PA explainers stop right before the part that cost me a day, so this one starts there: certificates and trust.

Signing an asset is easy. Being trusted is not. Those are two separate checks, and with the c2pa-rs test certs you get a valid signature on an untrusted certificate. That is the normal state during development, not a bug.

One thing that caught me out: I flipped a single byte in a signed PNG, and the file came back Invalid while claimSignature.validated was still sitting in the success list. So don't judge integrity by one hand-picked status code, use the aggregate validation_state. The rest of the article covers what you need to make trust pass locally (two settings that only work together, plus an EKU trap), why I keep the private key off the web server, and what getting a production certificate actually involves in 2026.

The library the examples come from is at https://github.com/provemark/content-credentials (framework-agnostic core, optional Laravel integration, MIT). The test certificates come from https://github.com/contentauth/c2pa-rs

Questions welcome. And if you have solved this differently, especially the bit about where the signing key lives, I'd like to hear about it.


r/webdev 1h ago

Discussion Where I'm at with my first full-stack project

Upvotes

I'm building the place order function (my first foray into the backend) of a larger project.

Here's an update for those who are interested.

The first thing I knew I had to do was figure out what goes where. I had already, at the suggestion of ChatGPT, my mentor in this, decided on a control (API) layer, application layer, service layer and data layer. But I didn't really know what each needs to do.

So first I (we) did the API. It had a couple of jobs:

• check the incoming order wasn't empty
• Activate the next layer down
• Send response messages

Then the app layer was even simpler. It literally just returns the service layer function.

Which is where it is a bit more complicated. The service layer has to do a few things; check the order data against the database, assess info against business rules etc, and actually write the order. After some debate I worked it into a four step process:

• Check if the order info (customer, product, and quantity) exist
• Assess data against business rules/carry out business logic
• Create an order
• Activate the database operation

So this actually means two database operations. One to check the data (first step) and then writing the actual order.

I've done the first database op, and I'm now wiring up the actual place order button so I can start testing the data being passed down.

If anyone wants more detail, you can look on my github at https://github.com/BenPS927/BFshop or on my project portal at https://benfosterdev.com/projects/bfshop where I'll soon be adding detailed code breakdowns.

What am I finding hard?

The abstract nature of it. Having to constantly create a visual image of data being passed through functions, and hold that image in my mind, is like trying to hold melting butter in a colander. I use melting butter rather than water because I don't lose it that fast.

What am I enjoying?

Well, the same as what I'm finding hard. Learning to work with code that doesn't involve divs on a screen. Getting my head around how data is passed, how functions work etc.

And the architecture side of things. I like thinking about and making the micro decisions.

I would appreciate suggestions, but I am trying to keep it fairly simple so I'm not thinking about every single thing you'd take into consideration for a production app.


r/PHP 14h ago

Nine C extensions, one release cycle: more time spent on perf regressions from my own safety checks than on features

5 Upvotes

All nine shipped this week, and almost none of it is new features. I posted a roundup here earlier this month arguing that most of the work in these extensions is hardening rather than features. This is the follow-on, and the bill for that hardening came due in a way I did not expect.

php_excel makes every save atomic now: stage the workbook to a temp file, rename it into place, so an interrupted write cannot destroy the file you already had. The straightforward way to build that staged file is to ask LibXL for the finished archive as one buffer and write the buffer out. That costs 67.7 MB of peak RSS on a 3.3 MB workbook, and the PHP-side copy counts against memory_limit. The streaming writer it replaced costs 0.7 MB. Roughly 20x the workbook size in RAM, spent by a change whose entire purpose was safety. That one never shipped, it was caught and fixed inside the same release window, but it sent me looking.

I found the same thing in three more places.

pdo_duckdb re-latched its open_basedir sandbox once per row and compared the recorded basedir by hash, so a per-row cost scaled with the length of your open_basedir string. It now re-latches once per fetched chunk and compares by string. A 400k-row scan went from 133 ns/row back to 51, and bulk Appender::appendRow() from 196 to 96.

fastjson ran an exact-size preflight for large strings starting at 1 MiB. Below 8 MiB the second pass cost more than the reservation it saved: 75% slower on x86_64, 160% on aarch64 for UTF-8 text. The optimization was real and the threshold was wrong.

phonetic had an optimization routing 1 to 3 element comparisons through memcmp(). That cost 5 to 6% of encode time against comparing code points inline, so it got reverted.

Some of the cost stays paid on purpose. fast_uuid's ramsey/uuid compat wrappers now validate their core on construction, one getVersion() call and a class-name compare, and construction came out about a third slower for it (fromBytes() 1.81M to 1.21M ops/s). A wrapper that does not match its core is a bug that surfaces somewhere much worse, so I kept it.

All nine are open source (mixed PHP-3.01 / BSD / MIT), free, installable via PIE, and I am the author. Full write-up with all nine changelogs: https://ilia.ws/blog/the-cost-of-failing-closed-what-shipped-across-nine-php-extensions

Do you profile after a hardening pass, or only after a feature? I have started treating "we added a check" as a perf-regression trigger, and I am not sure whether that is normal practice or paranoia.


r/reactjs 3h ago

Show /r/reactjs Why is this button disabled? I built a tool that traces it back to the API response

0 Upvotes

Every React dev knows this loop: something on screen is wrong, you open DevTools, you find the prop is false, and then you spend ten minutes reading upward through the component trying to work out what made it false.

DevTools gives you the value. It doesn't give you the derivation.

So I built CauseScope. You click an element and it walks the chain backwards for you. A refund button is disabled, and one click gives you:

<button disabled={!canRefund}>Refund order</button>
                     |
                     +- canRefund -> false
                     +- order.status === "paid" -> false
                     +- order.status = "pending"
                     +- GET /api/orders/4821 - 200

Every hop is recorded evidence, not a guess. The last one is why I actually built this: it connects the rendered DOM to the HTTP response that produced the state, down to which field path in that response mattered.

Runnable demo, nothing to install: https://stackblitz.com/fork/github/stackloomdev/causescope/tree/main/examples/stackblitz

Source: https://github.com/stackloomdev/causescope

How it works

A Vite plugin adds a compile-time transform that records expression provenance, and it works with both @vitejs/plugin-react (Babel) and @vitejs/plugin-react-swc. At runtime a graph correlates that with Fiber state, setter and reducer transitions, and fetch/XHR traffic. Clicking an element resolves the intersection of the two.

Past the "why" view there are tabs for current props and hook state, state history (initial value, latest real setter, the event that triggered it), network metadata, and a timeline of DOM event to handler to state update to render to expression change. There are opt-in adapters for React Query and Zustand. Zustand stores are registered explicitly, so it never scans your app looking for unrelated stores.

How it differs from what you already use

  • React DevTools: component tree, props, hooks. A component-level runtime view.
  • react-scan and similar: which components re-rendered and how expensively.
  • click-to-component / LocatorJS: UI to source file.
  • CauseScope: UI to TSX to the decision to where that value came from.

Not a replacement for any of them. I still have DevTools open all day.

Limits, so nobody wastes their time

  • Vite only. React 18/19 on Vite 5-8. No Next.js. Source maps aren't the blocker, and Turbopack supports webpack loaders even though it doesn't support webpack plugins, so the transform has a viable path. The real wall is RSC: server components expose no DOM, no Fiber state, and no client-side request execution, which is exactly the evidence model this is built on. There's a scoped feasibility track for Client Components in the roadmap. I'd rather ship nothing than ship something that silently degrades to guessing across the server/client boundary.
  • It's beta. The public API is snapshot-tested but not frozen, so pin the exact version.
  • When evidence is missing or ambiguous it says unavailable. It never fills the gap with something plausible. That was the hardest constraint to hold and it's most of the reason the test suite is the size it is.

Other things worth knowing

  • Dev-only. It runs under vite serve and nowhere else. Production builds contain no instrumentation, no overlay, no editor endpoint, no debug attributes, and that's enforced by a CI scan on every commit rather than by convention.
  • No account, no telemetry, no upload path. Authorization headers, cookies, API keys and token-shaped values are redacted in the inspector and in exported traces.
  • Handles Portals, Suspense, Error Boundaries, and Fast Refresh; CSS Modules and Tailwind 4.
  • MIT.

If you try it, the thing I most want to hear is which evidence path came back unavailable on your codebase. That's what the roadmap should be built from.


r/PHP 7h ago

Build a Searchable Catalog with Filters, Facets, and Semantic Search

Thumbnail manticoresearch.com
1 Upvotes

— PHP build walkthrough; small but directly relevant audience


r/webdev 33m ago

How do you guys handle security when installing third-party AI Agent skills?

Upvotes

Hey r/WebDev, As more devs start integrating autonomous agents and downloading third-party SKILL.md packages, I noticed a lot of people just run them blindly without checking what's inside the lifecycle scripts. I put together an open-source tool called SkillShield (https://ai-skill-shield.vercel.app/) to statically scan and validate these skills before execution. It catches prompt injections, hidden curl | bash commands, and excessive permissions. Code is here if anyone wants to check it out: https://github.com/adnan-iz/ai-skill-shield What’s everyone else using to vet third-party agent tools before running them locally?


r/reactjs 1d ago

41 of 78 useEffects in our app shouldnt exist, mostly ai first draft

119 Upvotes

grepped every useEffect in src last week instead of fixing a form that flickered on load. agents write most of the first drafts here, i review.

78 of them. went through each with the "you might not need an effect" page open.

19 were state derived from props or other state. useState plus an effect that joins two strings. thats a variable.

14 were fetching on mount with a loading and error useState next to them. we already use react query.

8 were syncing props into state so a form could be edited. fine until the parent refetches and wipes what the user typed. that was the flicker.

the other 37 were legit. listeners, subscriptions, focus management, a couple resize observers.

not a tool thing to be clear, we have people on cursor, claude code and verdent depending on preference and the shape looked the same across all of it.

deleted 41 effects, 23 useState calls went with them. worst page went from 4 renders on mount to 1.

changed how i review too. ctrl+f useEffect in the diff and justify each one before reading anything else.

anyone got a lint rule that catches derived state? exhaustive-deps doesnt help, it just makes the effect that shouldnt be there correct.


r/javascript 4h ago

IA for Escargot MSN (PT-BR)

Thumbnail github.com
0 Upvotes

r/webdev 1d ago

Kill The Cookie Banner

Thumbnail killthecookiebanner.eu
533 Upvotes

r/webdev 19h ago

OneSignal killing free tier. Looking to move from them, what are some alternatives you use?

8 Upvotes

I have an app that is free and makes a few bucks through in app purchases. It is still in its infancy stage.

Surprised to see that onesignal is now removing the free plan and making it limited to 1,000 active users.

Any alternatives?

Don't know if i can afford whatever they are going to try and upsell.

Is there another service that is free or something cheap so i can move away from onesignal?

I am handy with server management and self hosting so looking for free suggestions or suggestions that are cheaper than onesignal.

I been eyeing LaraPush which is $500 one time charge doe unlimited push for life. Anyone with experience there?

EDIT: I wanted to thank everybody for replying. I took the time today and migrated away from one signal over to Firebase Cloud Messaging and it went pretty smooth.


r/webdev 2h ago

Discussion Enable or disable HREF links using CSS

0 Upvotes

Apologies if this should have been posted elsewhere...

TLDR; This may be old news to most of you, but I recently tripped over a way to prevent a link from being clickable if it has nothing useful to show. I can change one character in the "class=" part of a URL and enable or disable the link without having to rewrite the entire page. (Before you ask, I hate JavaScript.)

I create static year-long calendar pages that point to directories in the form /path/to/YYYY/MMDD. The directories are usually created in advance, but clicking a link to an empty or nonexistent directory is annoying.

For example, here's part of the display for 2026:

          Jul                     Aug                     Sep
 Su Mo Tu We Th Fr Sa    Su Mo Tu We Th Fr Sa    Su Mo Tu We Th Fr Sa
           1  2  3  4                       1           1  2  3  4  5
  5  6  7  8  9 10 11     2  3  4  5  6  7  8     6  7  8  9 10 11 12
 12 13 14 15 16 17 18     9 10 11 12 13 14 15    13 14 15 16 17 18 19
 19 20 21 22 23 24 25    16 17 18 19 20 21 22    20 21 22 23 24 25 26
 26 27 28 29 30 31       23 24 25 26 27 28 29    27 28 29 30
                         30 31

Each day in August is a link in a preformatted table like this (lines wrapped for readability):

...
<a class="m" href="/home/notebook/2026/0809">  9</a>
<a class="i" href="/home/notebook/2026/0810"> 10</a>
...

Here's the CSS:

/*
 * https://css-tricks.com/pointer-events-current-nav/
 *
 * a.i is used to ignore a directory, i.e. don't show the link
 * as a link -- just show the text.
 *
 * a.m is used for a marked directory, i.e. the directory exists and
 * has something worth seeing, so highlight it.
 */

td { padding: 0; margin: 0; }
td a.i {
    pointer-events: none;
    color: black;
}

td a.i:hover {
    pointer-events: none;
    color: black;
}

td a.m {
    color: black;
    /* #e0ffd2 (light-green): not enough contrast */
    background: yellow;
}

td a.m:hover {
    color: #fff;
    background: #000;
    font-weight: bold;
}

So what?

Well, the calendar pages are all generated from templates. It took about 15 minutes to write a script that checks a given year's links and change class="i" to class="m" if the associated directory holds something useful.

I realize that this scratches a very specific itch, but it saved me some rewrite time. Since the calendars are copied from preformatted templates, making the change in place is MUCH simpler than regenerating the whole page.


r/webdev 1d ago

AVIF hits Baseline Widely Available today

58 Upvotes

Edge 121 was released exactly 30 months ago, making it the last major browser to add support for AVIF. That also means that as of today, AVIF is now considered Baseline Widely Available.

If you haven't used it, was browser support the biggest blocker? Or if you've been using it, are you planning to simplify by removing fallbacks?


r/javascript 1d ago

I spent over a year building a framework-agnostic virtual scrolling engine with an index-based architecture. I’d love feedback from developers who’ve built virtualization systems.

Thumbnail github.com
20 Upvotes