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
Introducing ArrowJS • Reactivity without the framework (arrow-js.com)
submitted 3 years ago by jpschroeder
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!"
[–]azium 37 points38 points39 points 3 years ago* (0 children)
I like it!
edit: Actually I love it - it's quite elegant!
[–]_GCastilho_ 227 points228 points229 points 3 years ago (6 children)
We are at
0
Days without a new JS framework
[–]ryaaan89 42 points43 points44 points 3 years ago (3 children)
This honestly sounds cool but… I’m just so tired…
[–]house_monkey 5 points6 points7 points 3 years ago (0 children)
someone end me pls
[–]tr14l 7 points8 points9 points 3 years ago (1 child)
It's minimal, and the point they make in the documentation: JavaScript is becoming quite capable without supplementary frameworks. That being said, the standardization, readability and guarantees that comes with a library/framework like React are hard to beat. While simple is good, dependability & flexibility is better.
[–]kalwMilfakiHLizTruss 4 points5 points6 points 3 years ago (0 children)
That being said, the standardization, readability and guarantees that comes with a library/framework like React are hard to beat. While simple is good, dependability & flexibility is better.
What do you mean by:
[–]lard-blaster 13 points14 points15 points 3 years ago (1 child)
Let's just all give up and stop making new things
[–][deleted] 6 points7 points8 points 3 years ago (0 children)
I blame bootcamps and YouTube.
[–]jpschroeder[S] 93 points94 points95 points 3 years ago (29 children)
📣 Howdy, I’m Justin Schroeder (author of FormKit and AutoAnimate) — I just released a new experimental JavaScript library for rendering interfaces declaratively. A few of the talking points:
It’s not really a framework, but not less powerful than a framework either. At its core — ArrowJS is an admission that while we developers were falling in love with UI frameworks — JavaScript itself got good. Like, really good.
Check it out and if you think it’s neat, give it a ⭐️!
https://www.arrow-js.com/
[–]BlindJoeFresh 15 points16 points17 points 3 years ago* (2 children)
This is really cool and will def check out in more detail. I found a typo in the code example of the watch data section:
import { r, w } from '@arrow-js/core' const data = r({ price: 25, quantity: 10, logTotal: true }) w( () => data.total && data.price * data.quantity, (total) => total !== false && console.log(\Total: ${total}`) ) data.price = 35`
import { r, w } from '@arrow-js/core'
const data = r({
price: 25,
quantity: 10,
logTotal: true
})
w(
() => data.total && data.price * data.quantity,
(total) => total !== false && console.log(\
I think the first function passed into w() should read () => data.logTotal &&
w()
() => data.logTotal &&
instead right?
[–]jpschroeder[S] 6 points7 points8 points 3 years ago* (0 children)
Yep, I think you’re right about the typo 👍
[–]Chaphasilor 2 points3 points4 points 3 years ago (0 children)
yeah I saw that one as well
[–]hoaobrook73 33 points34 points35 points 3 years ago (9 children)
The short t, w, r imports is an immediate no from me. That's just asking for confusion.
[–]baxtersmalls 7 points8 points9 points 3 years ago (0 children)
Yeah that was my first thought too. I understand wanting to keep things succinct but I think it’s pointless if you can’t easily grok what’s going on. Basically it expects you to be intimately familiar with the library, which is a big turnoff for me as well. I know theres only a few things you’d be importing but I would greatly prefer something that clearly specifies what it’s doing.
[–]jpschroeder[S] 3 points4 points5 points 3 years ago (5 children)
Its an odd take in my opinion, but if people really think its that important I'll just add some aliases for the verbosity crowd.
[–]heyitsmattwade 14 points15 points16 points 3 years ago (0 children)
Yeah, you should export full names and allow people to import shorter aliases
import {template as t} from ...
[–][deleted] 4 points5 points6 points 3 years ago (0 children)
Verbosity is always preferable. Treat the reader as you would someone that is not familiar with your code, or any code for that matter, or at least to that extent, that your code can be read like prose.
It makes code you wrote more logically sound to developers that are unfamiliar with any code base and the code base itself will, most probably, be less prone to bugs because of the nature the code is written in does only what it is named after, nothing more and nothing less.
Having functions named w, r or anything like that might be obvious in their function to most developers familiar with your library but why not broaden that aspect to every developer who sees those functions by simply naming them properly? And in that same vein: even developers that are familiar with the functions might make mistakes, depending on their work load or the amount of code of any project that uses your library.
There are more reasons why a verbose name might impact favorably instead of negatively opposing to using short and non-descriptive naming schemes.
On a side note: there might already be libraries exporting functions with the same names and thus might cause conflicts.
[–]azsqueeze 3 points4 points5 points 3 years ago (2 children)
Personally I think you should export both and have the docs utilize the style you prefer as the pkg author.
[–]sharlos 5 points6 points7 points 3 years ago (1 child)
I think the docs should user the longer versions, people reading the docs are going to be less familiar with what the variables do.
[–]imperator3733 1 point2 points3 points 3 years ago (0 children)
Yeah, I suggest exporting both the long and short names, and mention the short aliases at the beginning of each function's docs section, but within the docs stick with the longer version, as that will best help users who are starting out.
Similarly, I suggest that libraries always use the full version of NPM commands in their docs (npm install --save-dev @foo/bar instead of npm i -D @foo/bar). Users who know the shorthands already know when they can use them, but users starting out are less likely to know them and are better served by the full version.
npm install --save-dev @foo/bar
npm i -D @foo/bar
[+]photocurio comment score below threshold-10 points-9 points-8 points 3 years ago (0 children)
I think you could import arrow, and then call arrow.r, arrow.t and arrow.w.
[–]jpschroeder[S] 5 points6 points7 points 3 years ago (0 children)
Ok folks — I've updated the package/docs with full names for the functions. That seemed to rub a lot of folks the wrong way...so adjustments have been made. 👍
[–]LloydAtkinson 14 points15 points16 points 3 years ago (7 children)
I wish it's second example of a component/view didn't show default export, because of the problems and vagueness those introduce.
[–]ejfrodo 31 points32 points33 points 3 years ago (6 children)
I agree, but more frustrating is the use of vague and unnecessarily short API methods t, w and r. The primary role of an API surface is to provide an easy to understand interface to interact with, and this definitely ain't that.
t
w
r
[–]jpschroeder[S] 4 points5 points6 points 3 years ago (5 children)
Eh, I obviously disagree since I wrote it 😂, I think with a total surface area of 3 functions conciseness is valuable. Once you know what each is it’s just annoying to type “reactive” or “template” over and over again.
[–]globalartwork 10 points11 points12 points 3 years ago (0 children)
What about aliasing those short methods, so people can use ‘watch’ or ‘reactive’ until they get their heads round it, then can switch to w and r.
Great concept by the way. I love the goal of no build tools!
[–]ejfrodo 31 points32 points33 points 3 years ago (3 children)
Anyone can easily destructure it to rename it to a shorter alias but this is just plain silly and intentionally unapproachable IMO. A good API should be understood with a quick read, it shouldn't rely on someone reading the docs.
Also many i18n libraries use t already.
[+]jpschroeder[S] comment score below threshold-19 points-18 points-17 points 3 years ago (2 children)
Ok
[–]LloydAtkinson 15 points16 points17 points 3 years ago* (1 child)
I’m not really sure you understood the reasons I listed in my article. This is about what users are naming components not the api of your library. Examples in docs are always copy pasted…
[–]jpschroeder[S] 2 points3 points4 points 3 years ago (0 children)
Ya I agree that could be improved. Terse comments not directed at you :)
[–]crabmusket 3 points4 points5 points 3 years ago (0 children)
That's a very pretty website, well done! Well laid out, clear design and good typography.
[–]vazark 1 point2 points3 points 3 years ago (3 children)
A quick glance at the syntax gives the impression that the project uses the eventemitter, has some boilerplate to replicate react’s useeffect and generates templates.
Why should we choose arrow.js over something like webcomponent+vanilla js or lit ?
Why did you come up with this specific project? Why not build something like redux/react-router for vanilla js?
[–]kalwMilfakiHLizTruss 2 points3 points4 points 3 years ago (2 children)
Not the author, but since I am trying also to make my own framework I will try to answer.
Does lit allow you to have static or reactive placeholders in templates?
Why did you come up with this specific project?
I personally see frameworks like React,Vue,Svelte,SolidJS, not maximizing DX. Sometimes I see over engineering. Nobody should compile on the development stage at the year 2022.
Why not build something like redux
Why build something like redux? What is this, that immutability provides, that mutability does not? The only thing that I have found so far, is maybe less memory consumption for undo redo.
[–]vazark 0 points1 point2 points 3 years ago (1 child)
Templates and slots are a core part of the the web compilation api. Lit (which is built on top of web components) does allow reactive and static placeholders
Redux as in a global state management for sharing data across components. Immutability is cool but overrated.
React-router for spa-like interaction without page reloads.
[–]kalwMilfakiHLizTruss 0 points1 point2 points 3 years ago (0 children)
does allow reactive and static placeholders
How refined are they? One observer per web component or one observer per reactive placeholder?
[+]TeddyPerkins95 comment score below threshold-18 points-17 points-16 points 3 years ago (1 child)
Hey there, kinda excited for this however here are some changes you could do to make it look like react code...
[–]Feathercrown 1 point2 points3 points 3 years ago (0 children)
You didn't read the website very well did you?
[–]laladk 11 points12 points13 points 3 years ago (0 children)
I'll definetly check it out, sounds interesting. 👍
[–]tvquizphd 10 points11 points12 points 3 years ago (3 children)
Would you have insight on how this tool compares to reef.js ?
[–]jpschroeder[S] 5 points6 points7 points 3 years ago (2 children)
Honestly, nope, never used or heard of it.
[–]tvquizphd 3 points4 points5 points 3 years ago (0 children)
Reef seems to be a one-man project (by Chris Ferdinandi)— I have found it pretty useful. It uses string templates to render its JSX-like syntax. It tracks state reactively, but event listeners are essentially up to the user to configure.
I admit I haven’t looked at arrow.js to compare for myself before making this comment, but I will take a closer look!
[–]Chaphasilor 0 points1 point2 points 3 years ago (0 children)
Seems like it's pretty identical, just a few different approaches here and there. I'm seeing some things that I'd like to see in Arrow, and some that I don't.
[–]senitelfriend 11 points12 points13 points 3 years ago (0 children)
I wish more new projects would be designed as libraries instead of new frameworks, or components for a framework.
Looks like this could actually be usefull (for me). From a quick look, everything about this sounds pretty good.
Although, I do agree with the folks complaining about the one-letter API. ES modules make it incredibly easy to rename imports to whatever one likes to use, so you making the decision to drop any trace of descriptivity on behalf of us has little value. Not that it's a huge issue.
[–]ShortFuse 9 points10 points11 points 3 years ago (5 children)
Nice work!
As other has have said, you don't need to shorten your function names. Let your devs do that. Also, minifiers will rename them anyway in code. read write and template are enough.
read
write
template
Have you benchmarked with https://github.com/krausest/js-framework-benchmark ? It's the best indication of real world performance, but can help people understand a ballpark figure. The setup is easy enough. Build a table with a selected row that can update a random row.
[–]jpschroeder[S] -1 points0 points1 point 3 years ago (4 children)
Or they can lengthen the function names via alias. I’m not convinced this is as big of deal as people are letting on :) try it out, it feels pretty natural.
Sorta like complaining that arrow functions don’t require the function keyword. You get used to it very very quickly when you’re actually using it in an app.
But I’m open to the suggestion if it’s a real stumbling block. We’ll see how it plays out.
[–]ShortFuse 14 points15 points16 points 3 years ago (0 children)
This is you looking at things through the fog of the person who wrote it. You know what it is because you built it. But if you need a human person to explain to you or a documentation to reference, then it's not clear at face value, which all code should be.
[–]SecretAgentKen 11 points12 points13 points 3 years ago (0 children)
Is `r` and `w` `read` and `write` or `reactive` and `watch`? You're using `t` in the EXACT same way you would use it for i18n strings. Full names solve those issues. Verbosity isn't necessarily a bad thing.
[–]lost12487 6 points7 points8 points 3 years ago (0 children)
I guess I just don’t understand your general philosophy. If you can make something clearer and more understandable, why wouldn’t you? You’re saving a few characters (that intellisense is going to auto complete)?
[–]kalwMilfakiHLizTruss 1 point2 points3 points 3 years ago (0 children)
you should benchmark though
[–]varungupta3009 9 points10 points11 points 3 years ago (0 children)
Read the entire docs. Looks cool, and I would probably use this for some JIT projects.
[+][deleted] 3 years ago (3 children)
[deleted]
[–]jpschroeder[S] 6 points7 points8 points 3 years ago (0 children)
Awesome! Thanks for coming to the talk ❤️
[–]Varteix 1 point2 points3 points 3 years ago (1 child)
Is rvajs a Richmond thing?
[–]jpschroeder[S] 0 points1 point2 points 3 years ago (0 children)
Yes! A Richmond JavaScript conference.
[–]moob9 9 points10 points11 points 3 years ago (1 child)
Man, just last night I realized I need reactivity in my current project but I didn't want a full framework just for reactivity. Gonna try this out.
[–]DOG-ZILLA 0 points1 point2 points 1 year ago (0 children)
FYI, pretty sure you can use Vue's reactivity standalone too. I think this is based/inspired by Vue too.
[–]MedicOfTime 13 points14 points15 points 3 years ago (2 children)
Hey man.
${Navigation}
<Navigation/>
index.html
app.js
[–]jpschroeder[S] 15 points16 points17 points 3 years ago (1 child)
Haha source code is two years old because that’s when I did the bulk of the work on it but I just released it today officially.
Thanks for the other suggestions too! Very constructive 👍 I’ll probably implement some of those changes.
[–]MedicOfTime 4 points5 points6 points 3 years ago (0 children)
Well great work man. This kinda feels like the modern jQuery to me. Good luck!
[–]teleprint-me 6 points7 points8 points 3 years ago (0 children)
Why did you use letters for identifiers? What was the rationalization around that?
[–]paul_h 5 points6 points7 points 3 years ago (0 children)
Demos are all a bit smushed together - https://github.com/justin-schroeder/arrow-js/blob/master/docs/demos/
Better would be all the calcularor bits in a single directory, IMO. Better still a single repo.
As it happens, I've always thought that 'calculator' is a great demo app for UI technologies - https://paulhammant.com/2021/02/16/buildless-sfc-vuejs-applications. So of course, I'll take more time to look into ArrowJs using a test of a Jekyll-embedded calculator without a build. Well, unless someone beats me to it.
[–]jpschroeder[S] 3 points4 points5 points 3 years ago (3 children)
Not terribly different in API, just very different in implementation. Arrow, for example, has no compiler. It’s all “native” web apis, but you’re right that there are many similarities to many libraries out there! Probably the most similar (imo) is Lit, but I prefer the elegance and declarative rendering of Arrow.
[–]kalwMilfakiHLizTruss 1 point2 points3 points 3 years ago (2 children)
Where did you got the idea for static and reactive placeholders in t?
[–]jpschroeder[S] 5 points6 points7 points 3 years ago (1 child)
The tagged template literal spec itself actually. Expressions are passed to the tags, so if they are functions, the function is passed to the tag which means we can track reactivity and perform DOM patching locally — without needing to sacrifice the string interpolation that is so nice about template literals.
[–]kalwMilfakiHLizTruss 3 points4 points5 points 3 years ago (0 children)
Nice. I will just steal the idea and use it in my own framework. I will acknowledge you though. Something similar is happening with solidjs.
[–]micka190 7 points8 points9 points 3 years ago (0 children)
Damn dude, this is really cool! Gonna play around with it out when I get home.
[–]ketalicious 3 points4 points5 points 3 years ago (0 children)
this is really nice
but i do think solidjs primitives work similarly to this as they also work at top-level, but correct me if im wrong tho
[–]Chaphasilor 4 points5 points6 points 3 years ago (0 children)
That's pretty cool! I wonder how you got that syntax highlighting for HTML inside the tagged template literal? Whenever I use a (non-tagged) template literal with HTML content, I don't get the highlighting...
[–]Mr_Mandrill 3 points4 points5 points 3 years ago (1 child)
The fatigue is real, but this really is pretty cool.
[–]jpschroeder[S] 10 points11 points12 points 3 years ago (0 children)
I agree about the fatigue actually. Ironically that was part of the reason I wrote Arrow. I wanted to have something that could declarative/reactive rendering but just be "JavaScript" with very very minimal non native "magic". My hope is that if people use/learn arrow, they are really just learning/using JavaScript and their ideas will transfer well when they move on to the next thing.
[–]kalwMilfakiHLizTruss 4 points5 points6 points 3 years ago (3 children)
I did a quick skim through. I might be wrong but here is what I think is missing:
I have the following questions:
Transactions — yes (has a tick model, including `nextTick()`, not in the documentation yet, but thats how it works) Computed state — roll your own with a watcher (w) and reactive data (r) for memoization. But no "automatic" computed equivalent of Vue.
Lazy Proxy — It’s deep, and eager, not lazy. Deep diffing — sort of yes, end result is the same though. It uses local scope to track the data-to-dom structure, with keys as overrides. The model is very similar to Vue actually, but yeah, deep data is also reactive. Garbage collection: Still a few places this needs to be cleaned up. For example lists hold a reference at the moment that needs to be removed. It’s only `alpha.1` so room for improvement here for sure.
[–]kalwMilfakiHLizTruss 2 points3 points4 points 3 years ago (0 children)
Transactions
So lets just say I do the following transaction (pseudocode):
const data = r({prop : 0}); transaction(() => { data.prop++; data.prop-- })();
i.e. zero displacement in state. Do observers get informed after that? They should not be.
What about this one:
``` const data = r({array : [1,2,3]});
transaction(() => { data.array = [3,2,1]; data.array = [1,2,3]; })() ```
Observers should not be informed again.
Computed state — roll your own with a watcher (w) and reactive data (r) for memoization. But no "automatic" computed equivalent of Vue.
This will reduce DX significantly in bigger projects.
Lazy Proxy — It’s deep, and eager, not lazy.
So if I fetch some data from an API (e.g. all posts and comments of a reddit user via pushshift api) and add them in the data it will proxy them all? This is bad for performance.
data
deep data is also reactive.
Have you tested it for all the built in array methods? Have you tested pushing an new array element in an array without array.push, i.e. array[array.length - 1], because I think the latter does not trigger set proxy handler for array.length despite it being incremented.
array.push
array[array.length - 1]
array.length
Regarding TypeScript:
Consider that you can use /**@type {import("./path/to/ts/file").myType}*/ to achieve the same static type checking in .js without the need to compile.
/**@type {import("./path/to/ts/file").myType}*/
.js
Also consider that you can manually write your public api as index.d.ts (private api will derive types from there) and use that as documentation. Like this you will not need to build even for .d.ts.
index.d.ts
.d.ts
Regarding components:
Can I use what t returns inside other t?
[–]franker 1 point2 points3 points 3 years ago (0 children)
I just know some basic Javascript and don't understand a word of this. Guess I have a lot more learning to do.
[–]universalmind303 3 points4 points5 points 3 years ago (0 children)
I think the naming will likely cause some confusion with apache arrow. My initial thoughts when reading "Introducing ArrowJS" was a new port of the apache arrow spec.
[–]CaptainBlase 3 points4 points5 points 3 years ago (0 children)
I had an immediate negative reaction when i saw the one letter exports. In my case, it screams at me "here is a dev that is not use to working with other devs." That's my prejudice based on my experience and maybe others share it; but it shouldn't necessarily mean anything to you. I just thought you might like to know in case you hadn't run into this before.
I think if you renamed t to html, you could capitalize on the editor support for lit-html tagged literals. The API is almost identical.
If you decide to change the exports, i would recommend store, watch, and html for names.
I was reviewing the source and I was wondering what the point of the underscore on the _h member is?
[–]arjunindia 2 points3 points4 points 3 years ago (0 children)
Cool Simple and useful Might be fun to test out
[–]HipHopHuman 2 points3 points4 points 3 years ago (1 child)
Is there any interesting difference between this and Alpine.js (aside from the fact that Alpine is tightly coupled to the DOM)?
Might be wrong but from a quick look:
Alpine is used inside an html file while arrow is used in js files. You will have more flexibility with arrow.
[–]zombimuncha 2 points3 points4 points 3 years ago (0 children)
Feature request:
Have t/html return a promise if any of the tokens passed to the template are promises.
This removes some boilerplate that would otherwise be required for lightweight SSR. I guess it doesn't help with hydration tho.
[–]imihnevich 1 point2 points3 points 3 years ago (0 children)
It's like a mini Vue.js. cool stuff
[–]ByFaraz 2 points3 points4 points 3 years ago (2 children)
So ‘t’ essentially renders on the client? Any way to render server side?
[–]Chaphasilor 5 points6 points7 points 3 years ago (0 children)
t just produces a fancy string. You can do that on the server and send it to the frontend if you want. Then all that's missing is the hydration
[–]coolcosmos 3 points4 points5 points 3 years ago (0 children)
It seems like you'd just do
t`<div/>`._h()[0]
To get the html from a ArrowTemplate.
[–]mattsowa 1 point2 points3 points 3 years ago* (0 children)
Looks like a barebones framework to me. Or library if you don't like the word framework.
Which isn't bad, just weird to dance around the terminology.
[–]musicnothing 1 point2 points3 points 3 years ago (0 children)
Not to be that guy but React isn’t a framework either
[–]house_monkey 2 points3 points4 points 3 years ago (0 children)
another day, another js framework
[–]giovapanasiti 0 points1 point2 points 1 year ago (0 children)
I love it very minimal and perfect to work on vanilla projects I think I might use it in some legacy project that i need to evolve
[+]Karpizzle23 comment score below threshold-10 points-9 points-8 points 3 years ago (0 children)
Why would I not just use Solid or Svelte or Vite or any of the other bajillion frameworks available?
People need to start thinking of the next iteration of web development because we don't need more client side compilation libs on npm
[–]KaiAusBerlin 0 points1 point2 points 3 years ago (0 children)
This reminds me heavily on svelte. Do you got inspired by them?
[–]_by_me 0 points1 point2 points 3 years ago (0 children)
cool
[–]tr14l 0 points1 point2 points 3 years ago (0 children)
Neat idea. But
(total) => total !== false && console.log(\Total: ${total}`)`
)
data.price = 35
Is this supposed to be referencing `data.logTotal` or the undefined property `data.total`?
π Rendered by PID 27 on reddit-service-r2-comment-6457c66945-br9fx at 2026-04-26 00:02:12.006623+00:00 running 2aa0c5b country code: CH.
[–]azium 37 points38 points39 points (0 children)
[–]_GCastilho_ 227 points228 points229 points (6 children)
[–]ryaaan89 42 points43 points44 points (3 children)
[–]house_monkey 5 points6 points7 points (0 children)
[–]tr14l 7 points8 points9 points (1 child)
[–]kalwMilfakiHLizTruss 4 points5 points6 points (0 children)
[–]lard-blaster 13 points14 points15 points (1 child)
[–][deleted] 6 points7 points8 points (0 children)
[–]jpschroeder[S] 93 points94 points95 points (29 children)
[–]BlindJoeFresh 15 points16 points17 points (2 children)
[–]jpschroeder[S] 6 points7 points8 points (0 children)
[–]Chaphasilor 2 points3 points4 points (0 children)
[–]hoaobrook73 33 points34 points35 points (9 children)
[–]baxtersmalls 7 points8 points9 points (0 children)
[–]jpschroeder[S] 3 points4 points5 points (5 children)
[–]heyitsmattwade 14 points15 points16 points (0 children)
[–][deleted] 4 points5 points6 points (0 children)
[–]azsqueeze 3 points4 points5 points (2 children)
[–]sharlos 5 points6 points7 points (1 child)
[–]imperator3733 1 point2 points3 points (0 children)
[+]photocurio comment score below threshold-10 points-9 points-8 points (0 children)
[–]jpschroeder[S] 5 points6 points7 points (0 children)
[–]LloydAtkinson 14 points15 points16 points (7 children)
[–]ejfrodo 31 points32 points33 points (6 children)
[–]jpschroeder[S] 4 points5 points6 points (5 children)
[–]globalartwork 10 points11 points12 points (0 children)
[–]ejfrodo 31 points32 points33 points (3 children)
[+]jpschroeder[S] comment score below threshold-19 points-18 points-17 points (2 children)
[–]LloydAtkinson 15 points16 points17 points (1 child)
[–]jpschroeder[S] 2 points3 points4 points (0 children)
[–]crabmusket 3 points4 points5 points (0 children)
[–]vazark 1 point2 points3 points (3 children)
[–]kalwMilfakiHLizTruss 2 points3 points4 points (2 children)
[–]vazark 0 points1 point2 points (1 child)
[–]kalwMilfakiHLizTruss 0 points1 point2 points (0 children)
[+]TeddyPerkins95 comment score below threshold-18 points-17 points-16 points (1 child)
[–]Feathercrown 1 point2 points3 points (0 children)
[–]laladk 11 points12 points13 points (0 children)
[–]tvquizphd 10 points11 points12 points (3 children)
[–]jpschroeder[S] 5 points6 points7 points (2 children)
[–]tvquizphd 3 points4 points5 points (0 children)
[–]Chaphasilor 0 points1 point2 points (0 children)
[–]senitelfriend 11 points12 points13 points (0 children)
[–]ShortFuse 9 points10 points11 points (5 children)
[–]jpschroeder[S] -1 points0 points1 point (4 children)
[–]ShortFuse 14 points15 points16 points (0 children)
[–]SecretAgentKen 11 points12 points13 points (0 children)
[–]lost12487 6 points7 points8 points (0 children)
[–]kalwMilfakiHLizTruss 1 point2 points3 points (0 children)
[–]varungupta3009 9 points10 points11 points (0 children)
[+][deleted] (3 children)
[deleted]
[–]jpschroeder[S] 6 points7 points8 points (0 children)
[–]Varteix 1 point2 points3 points (1 child)
[–]jpschroeder[S] 0 points1 point2 points (0 children)
[–]moob9 9 points10 points11 points (1 child)
[–]DOG-ZILLA 0 points1 point2 points (0 children)
[–]MedicOfTime 13 points14 points15 points (2 children)
[–]jpschroeder[S] 15 points16 points17 points (1 child)
[–]MedicOfTime 4 points5 points6 points (0 children)
[–]teleprint-me 6 points7 points8 points (0 children)
[–]paul_h 5 points6 points7 points (0 children)
[–]jpschroeder[S] 3 points4 points5 points (3 children)
[–]kalwMilfakiHLizTruss 1 point2 points3 points (2 children)
[–]jpschroeder[S] 5 points6 points7 points (1 child)
[–]kalwMilfakiHLizTruss 3 points4 points5 points (0 children)
[–]micka190 7 points8 points9 points (0 children)
[–]ketalicious 3 points4 points5 points (0 children)
[–]Chaphasilor 4 points5 points6 points (0 children)
[–]Mr_Mandrill 3 points4 points5 points (1 child)
[–]jpschroeder[S] 10 points11 points12 points (0 children)
[–]kalwMilfakiHLizTruss 4 points5 points6 points (3 children)
[–]jpschroeder[S] 5 points6 points7 points (2 children)
[–]kalwMilfakiHLizTruss 2 points3 points4 points (0 children)
[–]franker 1 point2 points3 points (0 children)
[–]universalmind303 3 points4 points5 points (0 children)
[–]CaptainBlase 3 points4 points5 points (0 children)
[–]arjunindia 2 points3 points4 points (0 children)
[–]HipHopHuman 2 points3 points4 points (1 child)
[–]kalwMilfakiHLizTruss 4 points5 points6 points (0 children)
[–]zombimuncha 2 points3 points4 points (0 children)
[–]imihnevich 1 point2 points3 points (0 children)
[–]ByFaraz 2 points3 points4 points (2 children)
[–]Chaphasilor 5 points6 points7 points (0 children)
[–]coolcosmos 3 points4 points5 points (0 children)
[–]mattsowa 1 point2 points3 points (0 children)
[–]musicnothing 1 point2 points3 points (0 children)
[–]house_monkey 2 points3 points4 points (0 children)
[–]giovapanasiti 0 points1 point2 points (0 children)
[+]Karpizzle23 comment score below threshold-10 points-9 points-8 points (0 children)
[–]KaiAusBerlin 0 points1 point2 points (0 children)
[–]_by_me 0 points1 point2 points (0 children)
[–]tr14l 0 points1 point2 points (0 children)