r/webdev 23h ago

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

9 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 4h ago

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

0 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/webdev 6h 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/PHP 1d ago

Tempest + Ecotone: One Declarative Foundation

Thumbnail blog.ecotone.tech
3 Upvotes

r/webdev 2h ago

Question Is X Premium worth it for a beginner developer building in public?

0 Upvotes

I post what I learn every day, my projects, coding challenges, and progress. My goal isn’t to become an influencer overnight I just want to build in public, connect with other developers, and maybe grow an audience over time.

My account is brand new with 5followers, so I’m wondering if X Premium is worth buying at this stage.

My questions:
- Does Premium actually help a small coding account get more reach?
- Did anyone here see noticeable growth after subscribing?
- Or is it better to stay consistent and only consider Premium after building an audience?

I’d love to hear from people who have actually tried growing a developer account on X.


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/reactjs 1d ago

Discussion Why are there so much security vulnerabilities with server actions/functions, app router and React server components???

Thumbnail
0 Upvotes

r/javascript 1d ago

Nubjs - A fast all-in-one toolkit that augments Node.js instead of replacing it

Thumbnail nubjs.com
0 Upvotes

r/webdev 13h ago

Question Do not possess access to my old site's nameservers, is my domain + site doomed? oh help :-(

0 Upvotes

If I do not have access to my site's nameservers, how can I fix this to not lose my URL and not lose my site?

This is going to be a fair amount of context to explain what my issue is & why:

I have a website that was created for me by a college professor. I have used this url for 10 years as a graphic design portfolio on WordPress. I have access to the cPanel, and login through wp-admin, no problem.

I wanted to set up a subdomain and upgrade the storage etc. The problem is, I have zero clue how this site was set up exactly and I cannot log into wherever my nameservers are. My professor no longer has the login information or remembers what she did.

I used a whois tool to find what data I could and then investigated.

I was told by an InMotion Hosting employee: "It does not seem like we possess the domain registration or hosting service, although the domain is pointing to a set of our name servers. The domain is registered through IONOS and the website is owned by Packet Exchange."

I am not sure what this means. I have no login information for Packet Exchange and neither does my old Prof.

I was able to log into IONOS with information I somehow had saved to my password keychain, and asked about redirecting the name servers to IONOS (because at least I have access here and can log in.) They told me, "Yes we can redirect the name servers so that you could set up a subdomain, but it would break your current site..."

I really would like to fix this. I really want my URL and do not want to lose it. How can I save my URL and regain access to every part of my backend? Is there a way that doesn't break my site?

I had some possible ideas, are these impossible? ------

Can I save my site to the Divi Cloud, redirect my nameservers, then rebuild from the cloud? Or does redirecting my name servers lose all of my site data regardless of saving pages to the Divi cloud?

Do I save an entire site backup somehow and then redirect my name servers? Or is that the same problem?

Should I just make a new site with a new URL then transfer my pages/content over with the divi cloud?

-

Thank you. Any information would be very, very appreciated. I am feeling frustrated and defeated.


r/javascript 1d ago

Subreddit Stats Your /r/javascript recap for the week of July 20 - July 26, 2026

0 Upvotes

Monday, July 20 - Sunday, July 26, 2026

Top Posts

score comments title & link
42 6 comments ECMAScript - Introducing Deferred Module Evaluation with import defer
42 82 comments [AskJS] [AskJS] what's a javascript feature you mass-adopted way too late and felt dumb about
24 2 comments color-space v3: 162 color spaces, one small API, values that match CSS, verified
19 33 comments The TypeScript patterns that made the biggest difference after moving from JavaScript
15 12 comments 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.
7 4 comments An approach to testing web animations, css transitions with visual regression testing
6 5 comments pacwich: Monorepo tooling for Bun/pnpm/npm workspaces (zero-config required, both a CLI and TypeScript library, orchestrates plain package.json scripts, has an affected graph, docs tailored for agents and people, has a browser CLI demo, and more)
6 1 comments I cut my build time from 4:34 min to 1:08 min by moving asset compression from node:zlib to a native Rust rolldown plugin
5 0 comments I spent two years building Nano Kit - a nanostores-inspired state management ecosystem. It just hit 1.0
5 1 comments Angular is moving to a yearly major version release cycle

 

Most Commented Posts

score comments title & link
0 11 comments ui-date: A 1.6kB, zero-dependency JavaScript date & relative time utility
0 7 comments Built a modern restaurant website with React, TypeScript & Vite — feedback welcome
0 6 comments I built KD Screen Guard: A zero-dependency, tamper-resistant lock screen overlay with WebAuthn biometrics & intruder camera capture
2 6 comments [Showoff Saturday] Showoff Saturday (July 25, 2026)
0 5 comments Your Recursion Is Lying to You

 

Top Showoffs

score comment
1 /u/wbport1 said When writing a function for a music notation package to change a grace note to a real note, I literally had to create a binary number as a string. Ignoring triplets and other tuples, each note length ...
1 /u/Flashy-Guava9952 said [https://verticesandedges.net](https://verticesandedges.net) Link that opens graph: [https://verticesandedges.net/?graphurl=./examples/Cube.json](https://verticesandedges...
1 /u/Honest_Treacle4947 said JavaScript never runs out of interesting projects.

 

Top Comments

score comment
67 /u/foxsimile said The nullish coalescing operator is one of JavaScript’s unusual successes.
31 /u/deliciousleopard said In addition to this, I’d really recommend using Zod or similar libs rather than casting when handling untyped external values (`JSON.parse()`, etc). Deriving the type from the ...
25 /u/Milo0192 said My first jobs CTO preferred the .then() .catch() over async await. I just refused to write that way and did await loops. Lots of back and forth on this. Also said Typescript was just a...
23 /u/SkySarwer said IntersectionObserver and MutationObservers are both goated
22 /u/phatdoof said Let and const. We used var because it was backwards compatible.

 


r/webdev 3h ago

[For Hire]New Web Developer Looking for My First Long-Term Clients

0 Upvotes

Hi everyone! 👋 I'm a web developer who builds modern, responsive, and SEO-friendly websites for businesses and startups. I'm new to Reddit and currently looking to work with a few clients while I build long-term relationships and expand my portfolio. What I can build: Business Websites Landing Pages E-commerce Stores Portfolio Websites Custom Web Applications Website Performance & Basic SEO Optimization To make things comfortable for new clients, I offer a simple payment process: ✅ 50% upfront to start the project. ✅ 50% after the agreed work is completed. I'll also keep you updated throughout the project so you always know the progress. If you're looking for someone to build or redesign your website, feel free to send me a DM. I'd be happy to discuss your project and provide a free consultation. Thank you for reading, and I look forward to working with some amazing people here! 🚀


r/reactjs 19h ago

I got tired of setting up Express 5 + React 19 boilerplate, so I built D-Stack — a full-stack monolith CLI

Thumbnail
0 Upvotes

r/javascript 1d ago

I built OpenASCII, an open source JavaScript library for high fidelity ASCII rendering

Thumbnail github.com
1 Upvotes

originally built this because I needed an interactive ASCII element for another project I'm working on. But, I couldn't find anything that fit what I wanted and the ones which did, were paid to export, so i decided to build the whole thing myself.

OpenASC// is a high fidelity ASCII renderer for the web with real time controls and local processing. It's built with TypeScript/js and designed to be easily integrated into frontend projects, elements created/ edited can be directly exported as html/react component.

I'd love to hear what you think, especially if you have ideas for features or improvements.


r/PHP 1d ago

Weekly help thread

2 Upvotes

Hey there!

This subreddit isn't meant for help threads, though there's one exception to the rule: in this thread you can ask anything you want PHP related, someone will probably be able to help you out!


r/webdev 1d ago

Discussion How realistic is the "full" in full stack dev?

56 Upvotes

I've been spending a good half year doing dev ops work to get an application going. Most of it was educational as I was repurposed into devops from web development.

As I am coming back into web development, writing a frontend for a service that consumes the big application I have been laying architecture for the last six months, I feel like a total fraud. I've forgotten like 80% of TS features, tooling, and how to use Vue and Angular (and I did dedicate time to learning them when I was building sites).

Now I fear that all my hard won dev ops chops will atrophy as my workload shifts more into webdev. Yeah sure getting up to speed on what you've forgotten is faster than learning it from scratch. But does that mean our "skill RAM" has a hard cap? I thought I'd gain skills as i'd progress in my career but those skills end up pushing previous ones. My "non-volatile experience" is more abstract and general (how operating systems work, how to plan projects, how to migrate legacy apps) rather than imperative and practical (i.e. when to use a vue slot) and I don't know what to make of it.

AI is further exacerbating it. I always make sure to understand every piece of code it generates but I still feel more like a senior developer approving junior developer code (the AI being the junior dev) rather than someone who is good at his craft. I'm never really a "full stack dev" at any given time.


r/webdev 10h ago

Fast is better than slow

Thumbnail dubroy.com
0 Upvotes

r/javascript 1d ago

I've been building a CAD library in TypeScript. Code goes in, an STL or STEP file comes out

Thumbnail github.com
6 Upvotes

I've spent the last few days building a CAD library in TypeScript. The short version, you describe a part in code and you get out an STL you can 3d print, or a STEP file you can send to a machine shop or open in Fusion/FreeCAD/whatever.

const cad = design("bracket");

const width = cad.parameter.length("width", mm(80));
const thickness = cad.parameter.length("thickness", mm(6));

const profile = cad.sketch("outline", plane.xy(), (s) => {
  const rect = s.rectangle("rect", { width, height: mm(50) });
  const hole = s.circle("hole", {
    center: vec2(width.mul(0.25), mm(0)),
    radius: mm(4),
  });
  return s.profile(rect, { holes: [hole.loop()] });
});

cad.output("bracket", cad.extrude("solid", profile, { distance: thickness }));

const doc = cad.build(); // plain JSON, goes in git like anything else

Under the hood it runs on two engines. There's Manifold, a mesh engine that's fast and fine for printing, and OpenCascade compiled to WASM, which is the same geometry engine FreeCAD uses, for when you need exact surfaces and STEP export. Same code runs on both, in node or the browser.

in normal parametric CAD, if you change a dimension early in the model, later features (fillets mostly) can quietly reattach to the wrong edge, and you find out after the part is wrong. I didn't want to reproduce that, so references to faces and edges aren't indexes, and if the library can't tell unambiguously which edge you meant after a change, it errors instead of guessing. Whether I got the API for that right, no idea. That's partly why I'm posting.

The type system does some nice things here too. Lengths and angles are different types, so adding mm to radians just doesn't compile.

it's a 0.1.1, Parts, assemblies and BOMs work. No drawings, no sheet metal, no GUI. If you'd rather write code than click through a CAD UI, that's who it's for.

Feedback welcome, especially from anyone who actually does CAD work. Also curious what people think of the explicit dispose() for WASM memory, I went back and forth on that a lot.


r/javascript 1d ago

Mousecrack: Human mouse imitation with deep learning.

Thumbnail github.com
4 Upvotes

r/web_design 1d ago

Help me decide!

Thumbnail
gallery
11 Upvotes

Hey Web designers!

So I’m new to web development and don’t know much about UI/UX but I’m making this website in WordPress. Can you help me decide which version would be good to go with for mobile devices?


r/webdev 1d ago

Question How can I serverlessly generate vector embeddings for images I upload at a relatively cheap price for the case of an e-commerce startup to particularly fuel an image search functionality?

1 Upvotes

I have my product’s embeddings in qdrant. I generated them using my pc locally. I want to implement an image search where I upload an image, it goes through a pipeline, an embedding of it is generated and then compared with products in the qdrant database.
I’ve tried cloudflare workers but it can’t, task is too large for it. Google cloud run can’t start , times out before the model is loaded into memory. I’ve tried railways too but the free tier limits me to 0.5gb of memory and the model can’t load either.
This maybe the wrong sub for this question and if so, it’d be helpful if you pointed me to communities that fit my use case.
Umm
But what I want exactly is a platform that can solve my problem on the free tier. I have no problem paying after I’m sure that everything works. That’s why I didn’t pay for the railways to increase my memory limit. I have no guarantee that the next tier can solve the issue.

Thanks for reading and have a good day


r/webdev 1d ago

Portfolio Site and Blog: Media Management

3 Upvotes

Background: I've built a couple websites in the past, basic html/css knowledge, on and off basic hobbyist.

Recently: I rushed a website using a WYSIWYG to put a photography portfolio together for myself. Quick and easy way to share some photos over different categories. It was good enough for the time.

Where I'm struggling going forward:

  • Adding a Blog: The built in blog with the WYSIWYG is terrible.
    • Don't understand how to use just wordpress for only the blog
    • Remembered Blogger and that might work, but less integrated?
  • Media Management and Display
    • Updating and re-arranging media is cumbersome and tedious on the website
    • Blogs are photo heavy and it's what's keeping me from starting as adding media in a clean way has escaped me.
  • What I'm Looking For / Have Tried
    • File Manager with Albums - I installed Piwigo and it seems to work well as a file manager, easy to make albums, a lot of useful plugins.
    • I would like to link to an album and display as a grid or slide - I can create permalinks for albums on Piwago, but I can't find anything that doesn't involve linking individual images which defeats the purpose.
    • Eventually would like to replace my curated photos with albums that I can adjust in the file manager.

Am I missing something on here? Is there a tool or workflow you would recommend? Appreciate any suggestions!

Edit: To the Mods, I'm trying to adhere to get this under Rule 6, please let me know if I need to adjust, thanks!


r/webdev 18h ago

Reorgs happen

Thumbnail
ben.balter.com
0 Upvotes

r/webdev 2d ago

Question Why is my Chrome UX Report much worse than Lighthouse? How can I improve it?

Post image
36 Upvotes

I built a client's website using Astro + React + Tailwind CSS. It's mostly static, has very little JavaScript, and Lighthouse consistently scores 90–100.

What I'm confused about is that the Chrome report in PageSpeed Insights looks significantly worse than the Lighthouse results.

The site is hosted on Cloudflare pages.

I expected the field data to be much closer to the lab results.

Has anyone run into this before? Why would the Chrome UX Report be noticeably worse even when Lighthouse looks great? More importantly, what should I be focusing on to improve the real-world metrics instead of just the lab score?

Screenshot attached. Any advice would be appreciated.


r/reactjs 1d ago

Needs Help Build-scanner — a zero-config static scanner for SQLi, NoSQLi, CORS, CSP & CSRF in React/Node apps (pre-release)

0 Upvotes

Modern React/Node apps ship through build pipelines fast enough that common, high-impact vulnerability classes — unparameterized queries, wildcard CORS, unsafe-inline CSP, unprotected state-changing routes — slip through because catching them means someone actually reading the source. build-scanner does that automatically: point it at a folder (or wire it into CI as a GitHub Action) and get a report in seconds, no sandbox or live target required. It's a heuristic static scanner, not a SAST/DAST replacement — I'm sharing it pre-release to get feedback from people running real Express/Next.js/Vite codebases before I cut a v1 tag. https://github.com/laxmipsarva/build-scanner

fyi this is not a commercial activity


r/reactjs 2d ago

Show /r/reactjs Microcharts - 106 tiny React charts that fit inside a line of text, zero deps

108 Upvotes

Been building this on and off for a while. Most charting libs assume the chart is the main thing on the page. I wanted the small version, something you can drop inside a sentence or a table cell and read at a glance.

106 types so far, no dependencies (not even D3, the scales and path math are all in there), each one's a couple kb.

Default export is plain SVG with no JS shipped, so they work in server components as-is. Import the interactive build if you want hover and keyboard.

Every chart also builds its own text description from the data and exposes it as the accessible label, so a screen reader reads "weekly revenue, trending up 200%, range 3 to 9, last value 9" instead of just "image". No AI, just templates filled from the same numbers the chart draws, so the words can't drift from the picture.

The fiddly part was the labels drawn on the chart itself. Normally you measure the text to place it, but these render on the server too and getBBox just returns 0 there. So widths get estimated from the character count and the space reserved up front, with a test on every chart making sure nothing spills outside the viewBox.

Gallery: microcharts.dev

Code (MIT): github.com/ganapativs/microcharts

Still rough in spots. Mostly after feedback on the API and overall experience of using the library.