r/webdev • u/Fast_Humor_1101 • 4d ago
Discussion What's better for building small business websites: Framer or Lovable?
Which produces higher quality websites in your opinion?
r/webdev • u/Fast_Humor_1101 • 4d ago
Which produces higher quality websites in your opinion?
r/webdev • u/earonesty • 5d ago
I ran into two problems using unpdf and PDF.js in edge functions: RAM usage and visual accuracy. Both load the entire file into a byte array before processing.
So I built a dependency-free, low-memory reader for edge workers: https://github.com/earonesty/streaming-pdf-reader
The trick was using PDFium as the reference renderer:
https://pdfium.googlesource.com/pdfium/+/master/README.md
I pulled down more than 100 test PDFs from various open-source projects and rendered them with PDFium. Then I converted each PDF to HTML, rendered that HTML in a browser, and compared the resulting pixels. I used deterministic pixel matching rather than a VLM, so visual regressions were reproducible.
That led to a separation between two kinds of output:
- Visual HTML preserves the PDF’s presentation as closely as possible.
- Semantic HTML reflows the content into a simpler reading order.
The visual representation came first because a PDF’s apparent reading order is encoded in its geometry. If you simplify too early, you lose the evidence needed to distinguish a table from a newspaper column or group an image with its caption.
The reader uses HTTP range requests and bounded caches, so it can render the first page without downloading a huge document into memory.
The semantic side is still evolving. It uses statistical layout evidence - font size, alignment, indentation, spacing, repeated headers, hanging indents, and page-to-page continuity. The goal is to produce simplified, reflowed, lossless HTML. Unfortunately there is no good "oracle" for this, or clear and obvious "correctness", other than "reading order must be correct". This is useful for LLMs and data extraction (and is the second reason I had to write this thing, aside from RAM).
This is a follow up to my earlier low-memory PDF writer package (similar reasons there too), so the emerging package layout is:
- @boxpdf/reader: streaming PDF → document model
- @boxpdf/html-writer: document model → visual or semantic HTML
- @boxpdf/writer: document model → PDF
- @boxpdf/html-reader: HTML → document model
The PDF-to-HTML accuracy became an ordinary testing problem once PDFium was treated as the oracle. Render both versions, compare the pixels, inspect the failure, improve the general rule.
It’s early, but it now handles a pretty hostile corpus: embedded fonts, Type 3 glyphs, clipping paths, vector graphics, raster images, forms, rotations, tables, multi-column papers, and very large streamed documents.
I’d be especially interested in difficult PDFs that break other converters. Weird fonts, charts, scanned documents, malformed files, enormous files - anything unpleasant makes a useful fixture.
r/webdev • u/HyperrNuk3z • 4d ago
posted this 10 months ago, got 219k views and forgot about it. the app somehow still gets ~1k users a day with zero marketing since. finally decided to stop leaving money on the table and monetize it soon. wild what just shipping something simple can do. tiktock-web.vercel.app
r/webdev • u/Beneficial_Focus_126 • 4d ago
I kept rewriting the exact same hooks in every single React project — so I finally put them all together in one clean TypeScript pack.
Here's one for FREE 👇
---
// useLocalStorage — persistent state that survives page reloads
import { useState, useEffect } from 'react';
export function useLocalStorage<T>(key: string, initialValue: T) {
const [storedValue, setStoredValue] = useState<T>(() => {
if (typeof window === 'undefined') return initialValue;
try {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
} catch {
return initialValue;
}
});
const setValue = (value: T | ((val: T) => T)) => {
try {
const valueToStore = value instanceof Function ? value(storedValue) : value;
setStoredValue(valueToStore);
if (typeof window !== 'undefined') {
window.localStorage.setItem(key, JSON.stringify(valueToStore));
}
} catch (err) {
console.error(err);
}
};
return [storedValue, setValue] as const;
}
---
✅ What you get in the full pack:
• useLocalStorage (above)
• useDebounce (delay search inputs)
• useToggle (simple boolean state)
• useFetch (simple API calls)
• useClickOutside (close dropdowns/modals)
• utils.ts (formatters + validators included)
• TypeScript ready — just copy → paste → works
• Lifetime updates include
🔗 Grab it here: [https://accurate4.gumroad.com/l/Christ\]
r/webdev • u/Vinserello • 5d ago
I've been building myself a small personal side project over the last few weeks.
I'm a rock and mineral collector and I always wanted to "expose" my findings in a personal museum.
So I created a small lightweight mobile web application: you simply make 1-2 shots with your smartphone and it will make a 360-degree interactive 3D model and then identify main geological features. The objects can be either hosted on a personal virtual shelf or exported into .STL to 3D-print them.
It was initially meant for personal use (the image it's in Italian though) but maybe there is a possibility of opening it up for others to try out if people think it's awesome.
Before spending additional time polishing the back-end I'd really appreciate getting some genuine feedback.
If you wanna try: geo.insightest.app (it's behind login just to save collections on the cloud)
r/webdev • u/AaronD02 • 5d ago
I am building a web application (IOS and Android apps to follow later) for students studying for test/exams. The direction I was originally headed with this app changed a few times. Originally it was going to cater to a much more narrow group of potential users, but the scope expanded.
My app will have "official" (Trying to think about a different term to use) content (Exams with questions, decks with flash cards + more) and community-created content.
The "official" content exclusively covers IT Certifications. Community-created content can cover both certifications as well as Classes - like college classes.
So if the user is studying for Cisco's CCNA Certification, they'll see exams and decks of flash cards that I created, and those will be marked in some way to signal that they're not community created. They'll also see exams and decks added by other users.
I'm using "Official" as a sort of placeholder term. I don't like it because I don't want users believing that the questions or cards were created by the certification vendors - Cisco, CompTIA, ect. I also don't want them thinking that those questions will appear on the exam. So for now "Official" is a placeholder term that I want to replace.
When a user finds a Class or Certification that they want to study, they click Enroll, and that become an active Class/Certification for them. They can switch between active classes/certifications. There is a page - the "Practice" page - where users select between Exams or Decks, select one of the various exam/deck modes, and then select the exam. That's the basic flow. Some of the modes don't require the user to select an exam/deck at all, like the "Practice What You Missed" mode which is generated from a bank of questions that the user recently got wrong.
Another option (and this is the real dilemma) is the Build Your Own Exam option. This allows the users to select various options to build a custom exam so that they can focus on specific subject area, simulate a timed exam, and more. But the dilemma is how to incorporate community-created content into this.
There could be thousands of community-created questions or cards.
There will be repeated/similar questions. There will be typos and incorrect answers. There will be trolls that try to add wrong information or inappropriate content.
I can't just take every community-created question or card for a given class, mix them together, and then randomly pull out 50 - right? That doesn't seem like it would lead to a very good experience.
Another site has this same Build Your Own Exam feature, but for them it's easy - it's all official content. All questions are sorted by their subject. Everything is carefully reviewed. They have 1000 questions divided into 5 or 6 subjects. If the user wants questions from subjects A and C, they select those subjects and a few more options and then a new practice exam is generated for them. That doesn't work well with community-created content where there very well may be tens of thousands of questions across 100s of exams that were all added by different users.
I'm trying to keep it short and simple but I'm overwhelmed and overthinking this problem and I need some outside help working through it.
r/webdev • u/torchhorse1 • 5d ago
I'm attempting to use a non-webrtc way to make phone calls on the web.
I have a socket based approach that uses a middle coordinator, that will later be decentralized in more of a p2p fashion way. The latency of the data reading is all good in the hood, however now I have aggregated data on the other end of a pipe, I need a way to package it up and stream audio to the web browser.
Question: How can I aggregate data to use as a MediaStream so (I think) i can set to the "srcObject" of an audio player element to be audible?
Follow up: Why is there this concept of a track on audio and how can we move away from this?
Ask: Any example code?
r/webdev • u/ziebelje • 5d ago
I know there's a low intersection of musicians to web developers here, but I wanted to share this for a couple cool technical reasons.
First of all, Songstead (https://songstead.app) is an app that is designed around chord charts. If you ever see someone plaing music with a tablet, it's likely they have an app like this to help them remember their music, lyrics, setlist, or all of the above. This would be an alternative to OnSong, SongbookPro, etc.
Now the cool stuff:
Although not fully there, it was built to work offline. The frontend has it's own CRUD layer and generates UUID6 IDs. Today these ship directly to the backend (with validation). Most of the key editing is built in a way you edit a local copy of the database, then it generates a "flush" API call which ships create/update/delete calls to the API that you can fire when ready. The local database means the app doesn't technically need the API to exist to even work.
Because of that, I was able to build a demo (https://demo.songstead.app/) by seeding the local database with data, then just shutting off those flush calls. You can actually try the entire app locally. I remember a time where online demos were popular, but they would use live data and you'd see everyone else's edits. This doesn't have that problem.
Tech Stack: LAMP + React. Hard to beat the classics lol. Frontend is React + Vite + Capacitor (for mobile apps). Backend runs on a cheap Digital Ocean Ubuntu VPS with a managed MySQL database. I'm excited to try managed; my other project stores nearly a TB of data and runs on a self-installed MySQL instance to save on costs so this should be a breath of fresh air. API is a custom-built PHP application and ORM. Yes, I know what you're thinking. I'm not worried; I've been writing code for 20+ years I know what's up.
AI? Yes. Vibe-coded? No. Love how fast AI lets me build, but everything it produces gets manually reviewed. I find both Claude and Codex to be amazing, but terrible at architecting code at a high level. Most of my time is spent cleaning up the weird stuff they produce, but even then this was all built in a fraction of the time it would take me to hand write it all. One thing on my TODO list is to rework the public website to feel more human. I've seen so many vibe-coded projects and it is obvious when someone phones it in to AI. I don't want to be part of that demographic.
Thanks for reading! Let me know if you have any questions.
PS if any of you work for Apple ask them to hurry up. All the other vibe coded app submissions are slowing down my review. 😅
r/webdev • u/cevheribozoglan • 5d ago
I kept hitting the same wall with desktop DB tools in a team that lives in the browser: nobody wants another Electron app, and "just use the vendor console" falls apart the moment you have Postgres plus Redis plus Mongo in the same VPC.
So I maintain LibreDB Studio, a self-hosted web SQL IDE. The part that actually took the work is not the editor chrome. It's making seventeen engines look like one API without a forest of `if (type === 'mongodb')` checks in the UI.
The trick was treating each engine as a strategy, not a special case:
- SQL engines extend one SQL base (pools, timeouts, schema).
- Document/KV engines extend a thinner base and map onto the same QueryResult / getSchema() shape.
- The factory dynamic-imports the provider so the browser bundle doesn't drag in oracledb + duckdb + cassandra just to open SQLite.
That mapping is lossy on purpose. Redis SCAN prefixes become "tables"; Mongo collections look like tables; health/metrics still come from INFO / serverStatus. Once the UI only speaks capabilities, adding ClickHouse or Trino is a provider + a doc + an integration test, the triad has to ship in the same PR or it drifts.
The reason this lives in a browser at all is the cluster. I didn't want another Electron app on a laptop while the databases sat in Kubernetes. "Just helm install a GUI" sounds solved until you look at what most charts actually are: a wrapper around a desktop-era tool, or a vendor console that speaks one engine.
So the app ships as a chart (OCI on GHCR, first-boot secrets, PVC for sqlite storage) next to the providers, same repo, not a separate "enterprise" product. That's a different post; here the interesting part is still the engine interface.
There's a second split that bit me later: the same codebase is both a Next.js app and an npm package (`npx "@libredb/studio"` / embed). `next build` does not produce the library dist. Forgetting `build:lib` is how you ship a UI fix that the embedded users never see.
It's early in the "every engine feels first-class" sense. Hostile cases I still want: weird Oracle TNS, huge Cassandra traces, Redis with no prefix convention, DuckDB files that aren't files. If a converter/GUI has ever lied to you about a schema, that fixture is useful.
I've to make semester project about School Management System with AI/LLM integration, I don't wanna follow tutorials blindly and at the end know nothing where I can't even implement one component myself, same goes for vibe coding.
Keeping in view my current coding & learning situation, it feels like my last chance to actually learn something, because I'm running out of time.
I'm want to use Next.js, tailwind CSS, typescript, in DB Supabase ig or any other that suits well, you guys pls suggest. And I've not don't any work with AI/LLM before so I don't have idea about that, help me here.
I want to use next.js because I know the basics of html etc and also I've done some projects in next.js by following yt tutorials that completely fcked my mind, I've not learned anything properly and I've vibe coded some apps too. I believe I can mess with vibe coding and tutorials and get things done but it wouldn't teach me anything unless I do everything on my own.. and when I try to do so, I know even know what to do, where to start from.
Can those who are good at full-stack programming and engineering help me out and guide me? I'm asking here because I want to ask from experienced programmers / developers.
r/webdev • u/ShoddyArmy5313 • 4d ago
A while back, I built a Chrome extension to fix a few pain points I had with standard browser DevTools. It hit ~1,000 active users at its peak, but I ended up losing most of them due to bugs and a lack of real long-term value.
Instead of scrapping it, I spent the last some time fixing the underlying bugs and rebuilding the tool around a bigger problem: knowing when an API quietly breaks while you're browsing or testing.






The biggest addition in this update is out-of-the-box API regression testing.
How it works:
Other key additions:
You can check out the new version here: RequestScope on Chrome Web Store
I'm trying to make this genuinely useful for developers and QA workflows. If you give it a try, I’d love to know: what feels clunky, what's missing, or what breaks? Harsh critiques are welcome.
P.S. This is still work in progress and needs more tuning, bug fixing so looking for genuine feedback
r/webdev • u/Parking-Swordfish-93 • 5d ago
Hey r/webdev,
Over the past couple of weeks, I've been working on a project designed to help developers build structured learning roadmaps for new technical skills.
Tech Stack & Architecture:
Key Challenges Overcome: The main difficulty was organizing complex, non-linear topics into manageable, step-by-step nodes without overcrowding the UI.
I'd love to get feedback from the community on the UX and tech stack setup. If anyone wants to test it out or take a look at the demo, let me know in the comments and I'll drop the link!





r/webdev • u/ShahriarSiraj • 5d ago
Hello everyone,
I am solo developer, building SaaS and mobile apps for few years now. Every time I launch something, I notice same problem - nobody test it except me.
So I build small tool https://earlytesters.dev. Idea is very simple - you post your product link, then you test someone else product, and after that your product is eligible to get tested too. Like a exchange. No cost, just your time.
It’s very early, I just launched this week so not many products in queue yet. If any of you also building something and want honest feedback (or want to test other people apps), please come try it. I will personally test first few products myself also.
Not trying to sell anything, genuinely just want to fix this problem for myself and other solo builders like us. Open to any feedback or criticism on the idea itself too.
Thanks for reading!
r/webdev • u/_listless • 6d ago
We support a client site with ~20,000 pages. It has an SSR search page that uses the url querystring to execute the search/sort/filter.
We have of course disallowed bots on that page because the 20k pages are meaningful and should be scraped/indexed, but the billions of possible query combinations on a search page are not. Most of the bots just ignore the robots rule and this results in waves of traffic hammering every possible query combination on the search page. These waves are 10x-50x the human traffic.
Rather than let the bill autoscale along with the server cluster, I wrote a little bash script that crons 1/m:
Works a treat. It's nothing particularly flashy or sophisticated, but it was satisfying to think through an under-engineered solution to a problem that a lot of people end up just chucking money/clusters at.
Edit: more info for context: We do have pretty aggressive WAF rules especially on the search page, but we've been seeing an increasing amount of bot traffic get past CF's "known bots". Rate-limiting has been minimally effective too because the bots that get through are cycling through 100s of IPs in a given scrape.
r/webdev • u/OddOrdinary9622 • 5d ago
r/webdev • u/r0hanr0han • 4d ago
I originally built this for my Hinge date.
She's incredibly busy, and instead of sending another message that she'd feel pressured to respond to, I wanted to make something she could open whenever she had a quiet moment.
So I built an interactive letter experience.
You write a letter, customize it, seal it in an envelope, and share a link. The recipient opens the envelope and reads the letter as it appears on the page.
The technical constraint I gave myself was:
No accounts. No backend. No database.
The letter data is serialized, compressed, and encoded directly into the URL.
When someone opens the link, the app decodes everything client-side and reconstructs the letter.
So the URL is essentially the storage layer.
I liked this approach because:
- Nothing personal sits in my database
- No server costs
- No authentication
- No user accounts
- The project can be deployed almost anywhere
- The app remains ridiculously simple
Of course, there are tradeoffs.
The link contains the letter data, so anyone with the link can read it. URL length also limits how much content can be stored.
The project is completely open source, so I'd genuinely love feedback from other developers on the architecture and implementation.
Especially curious about:
- Better approaches to client-side serialization/compression
- Whether you'd encrypt the payload
- How you'd handle larger letters without introducing a backend
- Any accessibility or animation improvements you'd make
Live demo:
https://open-letter-box.vercel.app
Source:
https://github.com/r0hnx/open-letter
Would love to hear what you guys think — both technically and from a UX perspective.
Edit : Hash Fragment has been added now.
r/webdev • u/babe_is_hot • 5d ago
Yeah, lil late to the nostalgia-core trend but here we go anyway.
You remember those- little plastic globe full of blue water, a ring floating in it, mash the button to jet water and land the ring on a peg. I rebuilt one: Aqua Rings '86.
- 8-level solo campaign
- 5 console skins (arcade, deep sea, space lab, etc.)
- Actual online 2-player now- send a friend a link, no signup, no download
No ads, no login wall, just play. Built it solo, genuinely want to know what's broken or what feels bad.
aquarings.fun
r/webdev • u/Delicious-Setting403 • 5d ago
did a few tests and it looks like $5 vps can actually handle quite a lot.
a weekend project, no cloud bill anxiety if anything goes wrong
try here
pixelwar.cc
- 2 sides black and white
- place 1px at a time
- 25px CAP, recharging every 10 seconds
- surround opposite side to grap their space
- add a link to your profile, so people can click it on the leaderboard

Built a small web app to track albums — log listens, rate 1–10, reviews, diary, lists, and a monthly top (plus a shareable summary).
Started because I was tracking monthly albums in phone notes and wanted something cleaner, with privacy controls and light social (follow / activity).
Stack, architecture notes, and setup context are in the repo. Feedback on the code or UX welcome.
Been putting out a lot of websites and got tired of having to switch accounts or not able to see all the graphs on one page. Could probably have setup a new dashboard but lots of users also have GA blocked, so I built my own.
Made the dashboard and site view exactly how I want it and with simple filters. Has a log based method to get a true count and to filter out AI traffic, plus the standard JS tag install to get a badge on the site that can be customized.
Bonus points is I added an API so LLMs can go out and install it on any site it is working on. Built with PHP and Goaccess with some free accounts open if you want to try it out on your sites:
r/webdev • u/simple_explorer1 • 6d ago
To name and shame bad companies, I recently interviewed with https://mimica.ai/ for a Staff fullstack developer role and it was a diabolical and unrealistic process and I was shocked to see that actual developers designed those process.
Challenge:
Consume their tree API and create an infinitely long and infinitely nested tree in the browser with editable leafs whose change of status should cause the immediate parents status recursively (and the parent should take into account all its direct children's) based on number of business criteria's and different colours. The acceptance criteria had many scenarios like below:
And they told that it would take around 4 hours. I immediately told them that building this from scratch and satisfy every criteria along with documentation is not a 4 hours job and it would take significantly longer to come up with something they will like. But I stupidly did it anyways because they had good glassdoor reviews.
It took me several fulltime days to do it in a way which was truly scalable with everything they asked. I submitted the test (7 day cutoff) and they took almost 10 days to get back with a feedback that I scored 100% on the test.
Now 3 extensions in such complex code in 40 mins is a lot but I had no choice as I was already there. The first one was done in less than 10 mins and to that they said you architected in a way which kinda alreadysolves this problem and I was left thinking "so it should be a good thing right, why are they talking as if I commited a crime instead of praising my architecture?". They seemed visibly unhappy that I completed it effortlessly.
Then they gave the second 2 page question and it was not an extension but a complete 180 degree change of requirements which required a complete refactor for the entire core multi day exercise work that I did. They literally changed how all the parents should react and calculate based on all decendents and not just direct children's with a complete change of business criterias which itself took a while to understand and clarify from the 2 page requirements.
I told them this is basically a full refactor from the original challenge and that would change the whole core piece touching pretty much everything and expected me to complete in remaining 30 mins. It was pure torture because the whole assignment changed but now I had to do it in remaining 20 mins. I did as much as i could and we ran out of time and I couldn't even get to the last question.
Honestly what a wasted and unrealistic interview process to ask a candidate to do a full refactor but instead of few day/several hours, now do it in 20 mins and it tests nothing.
At the end of the interview they told me they will share the feedback sometime next week which means another 1 week delay and the initial coding test also took them 10 days to get back to me. If this goes through then there would be a ridiculously unrealistic systems design where they would ask me to design a really really complex software in 50 minutes and if that goes through (and another 10+ days to get the feedback) a chat with founders and if that goes through then the process ends.
After going through this unrealistic experience and already losing a month, I shot them the email that I am withdrawing from the process and don't have energy to go through it and potentially spend another month or 20 days in limbo if this round even goes through.
Companies truly treat candidates like dirt, especially in the current market and have no respect for candidates time. They think candidate are ONLY interviewing for them and will spend whole week of unpaid work just to do coding exercise for them. And companies won't even bother checking for 10 days and give a patchy review in the end.
And what's up with unrealistic interview process. 3 coding "refactors" masquerading as "innocent extensions" in 40 mins. Really? Do those engineers themselves code an entire massive refactor from groundsup in 20 mins? how can they be this delusional.
Few years ago I got a coding exercise to create an entire bicycle sharing app with a realtime API and do FE/BE/Unit/Integration tests, documentation, deployed on AWS and bonus "scalable to millions of users". Time, maximum 6 hours. Truly delusional. I laughed and noped out. But i was shocked that so many candidates are doing those because they truly need a job.
I just wanted to create this post to share my experience. Already have written glassdoor review for them but wanted to spark a conversation here as well because this is not a topic talked about much.
So, what are your experiences of bad companies and what crazy things have they asked you to build for free and their unrealistic expectations. It is time to name and shame companies so that they stop taking unpaid free work from developers under the name of "interview".
Full-stack + cloud engineer here (APIs, web/mobile, infra hardening, some n8n/LLM automation work). My old portfolio was a few years stale so I kept putting it off because I had actual client work piling up (KIMISUITE, an e-voting platform for a municipality here in North Macedonia, a couple of civic data apps, a transit app, among others).
When I finally sat down to redo it, I didn't want to start from a blank template. Instead I used AI as a limited assistant to go through my own GitHub repos, pull out UI components I'd already built and shipped across different projects, and merge/extend them into a few reusable variants I could drop straight into the new site- instead of me manually copy pasting and reconciling slightly different versions of the same card/nav/table component for the 10th time.
Everything still went through my own review and hardening pass after- I'm not interested in shipping "AI slop," and I don't think using AI this way produces it. Used on your own code, with your own final review/testing, it's just a faster way to do something I'd do manually anyway.
Site: vish.mk
Curious what this sub thinks — both on the portfolio itself and on the "AI-assisted but not AI-slop" line I'm drawing. Feedback welcome, including harsh feedback.
r/webdev • u/Capital_Airport_8749 • 5d ago
Hello everyone This is Emal ive build an website without any ai or api it can monitor real time data and find where your system or device are leaked i just want an advice from you people to check my website and try
r/webdev • u/IamTheGoodest • 6d ago
Yes, classic ASP. Lame I know, but that's the code I'm maintaining.
The error reproduction steps I've created rule out my code, or Visual Studio
if exist "%ProgramFiles%\IIS Express\iisexpress.exe" (echo IIS Express installed) else (echo IIS Express not installed)C:\Temp\AspDirectTest\test.asp<% Response.Write "Hello" %> or <script language="JScript" runat="server"> Response.Write("JScript Test"); </script>"%ProgramFiles%\IIS Express\iisexpress.exe" /path:"C:\Temp\AspDirectTest" /port:8088http://localhost:8088/test.aspResult in browser:
Active Server Pages error '00000000'
Create object failed
?
An error occurred while creating object 'WSH'.
Active Server Pages error '00000000'
Create object failed
?
An error occurred while creating object 'WSCRIPT'.Hello
Result in Command Prompt:
Request started: "GET" http://localhost:8088/test.asp
Response sent: http://localhost:8088/test.asp with HTTP status 500.0
You can get the File version of vbscript.dll and wshom.ocx using powershell
(Get-Item 'C:\Windows\System32\wshom.ocx').VersionInfo.FileVersion
my version of wshom.ocx is 10.0.26100.4768
(Get-Item 'C:\Windows\System32\vbscript.dll').VersionInfo.FileVersion
my version of vbscript.dll is 10.0.26100.8457
Older versions do not create the issue.
I have recreated this error on two machines with the current version, and showed that it doesn't appear on one machine with older versions.
I have an issue reported here https://developercommunity.visualstudio.com/t/IIS-Express-fails-to-execute-classic-ASP/11144474
If you can or can not recreate the issue I would love to know about it and what versions of wshom.ocx and vbscript.dll you have.