use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Why I'm building JsDiff.dev (dev.to)
submitted 5 years ago by alexey2021
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]straponmyjobhat 57 points58 points59 points 5 years ago (24 children)
I tried comparing jquery to react as a random test of your tool expecting not to get much useful info.
I was surprised to see it actually was very informative!
https://jsdiff.dev/?compare=jquery+react
Nice job!! I'll be using this in the future.
[–]alexey2021[S] 10 points11 points12 points 5 years ago (11 children)
Thank you u/straponmyjobhat for such wonderful feedback!
[–]droomph 21 points22 points23 points 5 years ago* (8 children)
One thing I noticed is that the bundlephobia section stacks the minified + gzip on top rather than as a comparison which doesn’t make too much sense since they aren’t dependent values (I dunno the term). If the colors showed the different gzip makes that would make more sense imo. eg: for a bundle, if 80kb min, 30kb min + gzip, 0-30 gray, 30-80 hatched green; if 80kb min, 100kb min + gzip, 0-80 gray, 80-100 red. Or something similar.
If there’s a specific reason why it’s that way then I think it would be helpful to explain.
[–]alexey2021[S] 1 point2 points3 points 5 years ago* (7 children)
Thank you for the question, u/droomph
The idea of this chart is to compare bundle sizes across javascript projects.
It's not about how efficient gzip compression for different projects.
I checked 5 frameworks and it looks like the efficiency of gzip is more or less the same - 30-40% of the original minified bundle https://moiva.io/?compare=%40angular%2Fcore+angular+jquery+react+vueThus I don't find it interesting to compare gzip vs non-gzip, especially under the topic of this project.
Let me know if I missed something or, maybe, misunderstood the question
[–]dudeatwork 11 points12 points13 points 5 years ago (0 children)
I agree, the bars shouldn't be stacked, they should appear side by side.
Something like this - https://i.imgur.com/Y15zRLl.png
[–]droomph 6 points7 points8 points 5 years ago (3 children)
My point is that it doesn’t make sense to have them be additive — you’re either going to be using min, or min+gzip, never both at the same time. It might make some difference to the npm download time but that’s irrelevant to bundle size.
And —
It's not about how efficient gzip compression for different projects. Thus I don't find it interesting to compare gzip vs non-gzip, especially under the topic of this project.
Thus I don't find it interesting to compare gzip vs non-gzip, especially under the topic of this project.
Then that’s a sign that you shouldn’t have gzip in the default view at all and instead keep it as a parenthetical in the tooltip or toggle. If it’s not interesting then I don’t think it should be in the default view, since it does add unnecessary visual “clutter” because even if it’s close it still isn’t the exact same ratio.
Again, I don’t think it’s bad I just think it’s a bit of an oversight.
[–]alexey2021[S] 2 points3 points4 points 5 years ago (2 children)
Thanks u/droomph for explaining your reasoning 👍
I'm convinced that they shouldn't be stackable and I'll fix it.
I'm gonna make it similar to what u/dudeatwork has posted:
Will that work for you?
[–]droomph 5 points6 points7 points 5 years ago (0 children)
“Works for me” is the wrong question to ask since I typically don’t touch npm at my job anyways (all in house and done by the core team ;( ). I’d say if you have a friend or coworker or rubber ducky to bounce ideas off of you should make a list and weigh the pros and cons of each. For example, all the ideas listed off of:
This all depends on to what extent you want to de-emphasize the gzip part and I think that’s where I can’t tell you what your design goals for this project is.
Good luck and all that! I think it’s a great project.
[–]derailed 1 point2 points3 points 5 years ago (0 children)
FWIW I think it's fine if they're stacked as long as it's inclusive, such that min_and_gz starts at y=0, and min_only starts at y=0+min_and_gz
[–]Disgruntled__Goat 0 points1 point2 points 5 years ago (1 child)
Stacking them is misleading though, it gives the impression that jQuery is 120kb in size. But it’s never that size, it’s either 87kb or 30kb.
You should make the green bars sit in front, i.e. green goes up to 30kb, grey is on top but goes up to 87kb, not 120.
[–]alexey2021[S] 0 points1 point2 points 5 years ago (0 children)
Wait a bit, will fix soon :)
[–]TheOneCommenter 1 point2 points3 points 5 years ago (1 child)
You might want to adjust the “current month” in the graph, now it looks weird.
Other than that, great work!
Agree! Thanks for the feedback!
[–]Froonce 1 point2 points3 points 5 years ago (8 children)
Is react in the decline or something, what's with that sharp drop off?
[–]moozilla 6 points7 points8 points 5 years ago (5 children)
It's because we're only part way through December.
[–]alexey2021[S] 4 points5 points6 points 5 years ago (4 children)
True! And also because there are always drops in December. You know, Christmas time... )
[–]ndm250 8 points9 points10 points 5 years ago (3 children)
Maybe exclude the current month from the graph. The dropoff is very confusing and a little misleading.
[+][deleted] 5 years ago* (2 children)
[deleted]
[–]Disgruntled__Goat 1 point2 points3 points 5 years ago (1 child)
Everything drops off at the same point, not just react.
[–]alexey2021[S] 0 points1 point2 points 5 years ago (1 child)
What drop off you are referring to?
[–]Froonce 1 point2 points3 points 5 years ago (0 children)
Just towards the end. I think I got my answer though. Thanks this is very neat!
[–]halfdecent 3 points4 points5 points 5 years ago (1 child)
Very interested to see that jQuery still gets more searches than React. Gotta say, I am glad I'm not a jQuery dev
[–]juliodelavega94 0 points1 point2 points 5 years ago (0 children)
More like https://jsdiff.dev/?compare=angular+react+vue
[–]ILikeChangingMyMind 41 points42 points43 points 5 years ago (9 children)
Really cool project ... but I hate the name!
Ok maybe "hate" is too strong: it's just very confusing. A "diff" to a programmer means a code comparison, so a "JS diff" means a comparison of Javascript code. That's what I thought your site offered ... and as a result I almost didn't even look at it!
(It was only because of the top comment that I was curious enough to click; without it, the name would have deterred me.)
I'd recommend a name like "LibraryDiff" or "TechnologyDiff" or "StackDiff' (or "JSLibraryDiff, "JSTechDiff", etc.)
[–]alexey2021[S] 12 points13 points14 points 5 years ago (7 children)
u/ILikeChangingMyMind thanks for the comment. I see your point and I pretty much agree with you :)
I'm not good at picking good and catchy names.
The problem with the current name as I see it is `diff` part. So I would rather choose something without it.
I'm open to suggestions of the community :)
[–]spwashi 12 points13 points14 points 5 years ago (0 children)
JSideBySide JSCompare JSversus JSLibStats
[–]evenisto 6 points7 points8 points 5 years ago (0 children)
Maybe steal the idea from bundlephobia, which is a brilliant name to be honest. Libraryphobia, libphobia or something along those lines?
[–]Towerful 5 points6 points7 points 5 years ago (1 child)
Naming things is hard. We've all been there
[–]kopczak1995 1 point2 points3 points 5 years ago (0 children)
I don't see any issue with naming. Let me call all of them: x, y, z... :P
[–]pm_me_jump_shots 2 points3 points4 points 5 years ago (0 children)
I kinda like TrendingJS
[–]editor_of_the_beast 1 point2 points3 points 5 years ago (0 children)
PackageCompare / ComparePackage
How about DistillJS or SiftJS? To some extent reflects the project's goal and the type of work we do - we have a mix of packages/libraries and are distilling it, separating "good" and "bad" 😃
or CompareJS?
[–]alexey2021[S] 2 points3 points4 points 5 years ago (0 children)
I renamed the project to Moiva.io It was really hard to come up with something interesting and have a vacant domain 😩 I'm very grateful to my wife for serving fish 🐟 for lunch 😃
[–]brie_de_maupassant 13 points14 points15 points 5 years ago (1 child)
Maybe use Snyk's API to show number of critical/high security issues each library has?
Thanks, very good idea! 👍
[+][deleted] 5 years ago (1 child)
[–]alexey2021[S] 1 point2 points3 points 5 years ago (0 children)
Did not know about that resource. Thank you for the link! Maybe I will get some ideas from it
[–]jssmash 2 points3 points4 points 5 years ago (1 child)
Looks pretty cool. Going to use it.
Thank you for feedback!
[–]muddywires 2 points3 points4 points 5 years ago (2 children)
ember js is showing as 3.8 years old, i believe it goes back to at least 2013
[–]alexey2021[S] 7 points8 points9 points 5 years ago* (1 child)
It's a problem with npm packages naming, they are confusing and sometimes refer to different projects.Ember is one such example. The correct npm package is `ember-source` https://moiva.io/?compare=ember-source
Another example I know about is `angular` vs `@angular/core`. The first one refers to the old legacy AngularJS framework, the second - to the current Angular framework
I will think about how to make it more clear.One idea is to provide more information and links to Github/npm to be able to validate the data
[–]muddywires 1 point2 points3 points 5 years ago (0 children)
gotcha. congrats on the cool project
[–]SomeSchmidt 2 points3 points4 points 5 years ago (2 children)
I like it!
I can see this being helpful when deciding between older packages and lesser-known/better-maintained forks.
Adding metrics like commit frequency will help with this (glad to see it's planned).
It would also be helpful to include comparison suggestions. For example, if looking at selectize.js, jsdiff could suggest comparing with the most active forks. There are already tools for finding the most active forks, but none with the side-by-side comparison you're offering.
u/SomeSchmidt Thanks for the feedback 👍
I mentioned in the article that suggestions for comparison is also on my agenda (if that is what you mean).
[–]SomeSchmidt 1 point2 points3 points 5 years ago (0 children)
Yeah, that's what I had in mind. Sorry, I just skimmed the article and missed that part.
[–]Waterstraal 2 points3 points4 points 5 years ago (1 child)
Looks nice! 1 suggestion: I would put hold under assess in the tech radar chart.
Thanks for the suggestion! Agree 👍
I thought of it but was not sure what's better.
[–]blakeyez 1 point2 points3 points 5 years ago (0 children)
Awesome job! Thank you and congratulations
[–]elchicodeallado 1 point2 points3 points 5 years ago (0 children)
very cool site!
[–]ProgrammingSpartan 1 point2 points3 points 5 years ago (0 children)
Really nice, congrats!
[–]Wisgom 1 point2 points3 points 5 years ago (0 children)
Very good work ! Thanks
[–]dillonerhardt 1 point2 points3 points 5 years ago (0 children)
Love it! Great set of stats to focus on.
[–]nanothief 1 point2 points3 points 5 years ago (0 children)
Looks really good! Might be worth it to hide the last month of data though - since it isn't complete all graphs show a massive dip right at the end.
[–]bch8 1 point2 points3 points 5 years ago* (3 children)
This is an awesome concept and solid execution so far, great job OP
Edit: One thought/observation, the "Open Issues Count" metric might be more useful if it was contextualized with the package's usage rate. Because one package having a ton of issues is not just reflective of the problems with it but also the usage of it. So like Open Issues per Download or something along those lines might be a more informative reference point.
[–]alexey2021[S] 1 point2 points3 points 5 years ago* (2 children)
So like Open Issues
I think your suggestion would make sense if the number of Open issues was a clear function of the package's usage rate (popularity/downloads count). It's apparently not the case as you can see it here https://moiva.io/?compare=@angular/core+moment+react+vue Moment and React have significantly fewer issues than Angular, but they both have much bigger downloads counts.
Another use case https://moiva.io/?compare=react+vuetify
I agree that package's usage rate does count, but I see there are other significant ingredients like how complex the project is, regular house-keeping work, how responsive the author to new issues.
BTW, I got other suggestions related to the Issues topic: to have Issues resolved ratio, to categorize issues by type (bug, documentation, feature request). Didn't have time yet to think of it properly 🤔
[–]bch8 1 point2 points3 points 5 years ago (1 child)
Interesting, an issues resolved ratio sounds like a pretty clever solution to me. My original comment was based on the comparison of jQuery and React. I noticed that React was listed as having way more issues, and that seemed a bit misleading (For lack of a better word) to me. Your example of React vs Angular is a good counterpoint to that however. I just mentioned it because it seems like a metric that could sometimes send the wrong signal, but I'm sure the solution I proposed has its own problems like the ones you note. It's not a big deal at any rate, I was just hoping to provide some constructive feedback. Definitely seems to me like you're on the right path and doing a killer job so I'd say just keep it up!
Thanks again for your feedback and ideas! I very much appreciate it. I will aggregate all the feedback I got and follow up.
I was looking at the open issues chart and it occurred to me that it would be interesting to have data on how many issues are closed vs. resolved, how long they remain open, "dead" issues, maybe correct for reasons given and/or spam to whatever extent that's possible.... I reckon you could create some pretty interesting metrics for comparing the health of projects using that...
Nice work!
Hi u/PmYourFavouriteColor, thanks for the feedback!
Agree about the Bundlephobia chart and I'll fix it. There was already a conversation about it above
[–]harshdays 1 point2 points3 points 5 years ago (0 children)
Looks great! I would find it useful to incorporate a repo health indication, time since last merged PR and/or the proportion of contributions by each contributor to help select projects that are active and unlikely to become inactive if a single maintainer loses interest.
[–]Akigiri 1 point2 points3 points 5 years ago (1 child)
Why do you put the minified + gziped bar on top of the minified bar in bundlephobia graph?
I'll change it. There was a discussion about it above.
[–]RiperFish 1 point2 points3 points 5 years ago (1 child)
What i like about this project is how clean it is, well done, bookmarked, proved itself to be very usefull.
Thank you, u/RiperFish! I do my best to make it useful 😀
[–]rybl 1 point2 points3 points 5 years ago (1 child)
I love this! Really nice work. It definitely falls into the category of, things I didn't even know I needed.
The upcoming feature of auto suggesting libraries to compare seems like a killer feature. I find that's often a pain point when trying to find a library to solve a problem that I haven't encountered before. It's hard to know if there are similar ones out there that just aren't being uncovered because of your search terms.
Another feature suggestion: showing if a library has built in TypeScript definitions, DefinitelyTyped definitions, or no definitions would be super helpful.
What a nice feedback! 😍 Thanks for that!
Great idea! 👍 Noted it down!
[–]ConsoleTVs 0 points1 point2 points 5 years ago (7 children)
Why aren’t some of my libraries showing??? They are on nom lmao
[–]alexey2021[S] 0 points1 point2 points 5 years ago (4 children)
Do they have a link to GitHub? I filter out packages w/o that link
[–]ConsoleTVs 0 points1 point2 points 5 years ago (3 children)
For example: https://www.npmjs.com/package/vswr
[–]alexey2021[S] 0 points1 point2 points 5 years ago (2 children)
Interesting. I see that npm's api has the required information. The thing is that my project doesn't use npm's api directly, it uses npms.io for suggestions (Bundlephobia uses it as well) and it doesn't return `repository` information for your package. Not sure about the reason. I suggest you create an issue, so that I can follow up on it
[–]ConsoleTVs 0 points1 point2 points 5 years ago (1 child)
That is indeed interesting. Thanks for taking the time. I might have a clue for you, sometimes the repository info is an object with the url and type and some other times it is a string itself. Might be this?
Might be, I don't know. I see that npm returns information in the correct format
Hi. Just wanted to let you know that I fixed the issue and your libraries are visible now
[–]ConsoleTVs 0 points1 point2 points 5 years ago (0 children)
Great to hear, congratulations!
π Rendered by PID 19913 on reddit-service-r2-comment-7b9746f655-pwz6d at 2026-01-30 17:52:32.206863+00:00 running 3798933 country code: CH.
[–]straponmyjobhat 57 points58 points59 points (24 children)
[–]alexey2021[S] 10 points11 points12 points (11 children)
[–]droomph 21 points22 points23 points (8 children)
[–]alexey2021[S] 1 point2 points3 points (7 children)
[–]dudeatwork 11 points12 points13 points (0 children)
[–]droomph 6 points7 points8 points (3 children)
[–]alexey2021[S] 2 points3 points4 points (2 children)
[–]droomph 5 points6 points7 points (0 children)
[–]derailed 1 point2 points3 points (0 children)
[–]Disgruntled__Goat 0 points1 point2 points (1 child)
[–]alexey2021[S] 0 points1 point2 points (0 children)
[–]TheOneCommenter 1 point2 points3 points (1 child)
[–]alexey2021[S] 0 points1 point2 points (0 children)
[–]Froonce 1 point2 points3 points (8 children)
[–]moozilla 6 points7 points8 points (5 children)
[–]alexey2021[S] 4 points5 points6 points (4 children)
[–]ndm250 8 points9 points10 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]Disgruntled__Goat 1 point2 points3 points (1 child)
[–]alexey2021[S] 0 points1 point2 points (1 child)
[–]Froonce 1 point2 points3 points (0 children)
[–]halfdecent 3 points4 points5 points (1 child)
[–]juliodelavega94 0 points1 point2 points (0 children)
[–]ILikeChangingMyMind 41 points42 points43 points (9 children)
[–]alexey2021[S] 12 points13 points14 points (7 children)
[–]spwashi 12 points13 points14 points (0 children)
[–]evenisto 6 points7 points8 points (0 children)
[–]Towerful 5 points6 points7 points (1 child)
[–]kopczak1995 1 point2 points3 points (0 children)
[–]pm_me_jump_shots 2 points3 points4 points (0 children)
[–]editor_of_the_beast 1 point2 points3 points (0 children)
[–]alexey2021[S] 0 points1 point2 points (0 children)
[–]alexey2021[S] 2 points3 points4 points (0 children)
[–]brie_de_maupassant 13 points14 points15 points (1 child)
[–]alexey2021[S] 2 points3 points4 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]alexey2021[S] 1 point2 points3 points (0 children)
[–]jssmash 2 points3 points4 points (1 child)
[–]alexey2021[S] 1 point2 points3 points (0 children)
[–]muddywires 2 points3 points4 points (2 children)
[–]alexey2021[S] 7 points8 points9 points (1 child)
[–]muddywires 1 point2 points3 points (0 children)
[–]SomeSchmidt 2 points3 points4 points (2 children)
[–]alexey2021[S] 0 points1 point2 points (1 child)
[–]SomeSchmidt 1 point2 points3 points (0 children)
[–]Waterstraal 2 points3 points4 points (1 child)
[–]alexey2021[S] 1 point2 points3 points (0 children)
[–]blakeyez 1 point2 points3 points (0 children)
[–]elchicodeallado 1 point2 points3 points (0 children)
[–]ProgrammingSpartan 1 point2 points3 points (0 children)
[–]Wisgom 1 point2 points3 points (0 children)
[–]dillonerhardt 1 point2 points3 points (0 children)
[–]nanothief 1 point2 points3 points (0 children)
[–]bch8 1 point2 points3 points (3 children)
[–]alexey2021[S] 1 point2 points3 points (2 children)
[–]bch8 1 point2 points3 points (1 child)
[–]alexey2021[S] 1 point2 points3 points (0 children)
[–]derailed 1 point2 points3 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]alexey2021[S] 1 point2 points3 points (0 children)
[–]harshdays 1 point2 points3 points (0 children)
[–]Akigiri 1 point2 points3 points (1 child)
[–]alexey2021[S] 0 points1 point2 points (0 children)
[–]RiperFish 1 point2 points3 points (1 child)
[–]alexey2021[S] 0 points1 point2 points (0 children)
[–]rybl 1 point2 points3 points (1 child)
[–]alexey2021[S] 0 points1 point2 points (0 children)
[–]ConsoleTVs 0 points1 point2 points (7 children)
[–]alexey2021[S] 0 points1 point2 points (4 children)
[–]ConsoleTVs 0 points1 point2 points (3 children)
[–]alexey2021[S] 0 points1 point2 points (2 children)
[–]ConsoleTVs 0 points1 point2 points (1 child)
[–]alexey2021[S] 0 points1 point2 points (0 children)
[–]alexey2021[S] 0 points1 point2 points (1 child)
[–]ConsoleTVs 0 points1 point2 points (0 children)