<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="112060" data-post-id="112060">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jdumont" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jdumont/120/2353_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jdumont
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="AstonJ" data-post="116" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/astonj/48/15_2.png" class="avatar"> AstonJ:</div>
<blockquote>
<p>why waste time on working on stuff with React that you may not end up using? So my vote is that I’d work on the other stuff for now too</p>
</blockquote>
</aside>
<p>Exactly the approach I’m taking at the moment. I’ve got a small prototype built out with Drab to check the premise works well for my use-case, but beyond that; I’m leaving anything frontend for the time being.</p>
<p>I prefer dividing my work in backend and frontend “sprints” anyway…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112060" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/117">Post #116</a>
	                </div>
	            </div>
              <div id="likers-container-112060" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112060"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #116"></div>
  </section>
</div>
    <div class="postbit" id="112079" data-post-id="112079">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lee" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/120/13472_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lee
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="AstonJ" data-post="116" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/astonj/48/15_2.png" class="avatar"> AstonJ:</div>
<blockquote>
<p>I think we might see it soon too. Chris has been pretty good on keeping to his estimates and even though he doesn’t give concrete dates (as missing them could cause issues for people), he does give you an idea, eg, “after Phoenix 1.4 is out” and “currently balancing the book and LV” etc</p>
</blockquote>
</aside>
<p>I can completely appreciate not giving definitive dates. I’m very much of the ‘<em>it’s done when it’s done</em>’ brigade. If it hasn’t yet been released, I’m sure there’s a reason for it.</p>
<p>All I’m really holding out for at this stage is a <em>rough-ish</em> timeline. Like - are there a bunch of pretty massive features that still need implementing, or is it cosmetic stuff? Are there parts of Phoenix that a release is blocking on? Does Chris want to align LV’s release with, say, Phoenix 1.5? Having some idea would make planning commercial projects / selling it to other team members that much easier.</p>
<p>Of course, none of this is directly Chris’ concern, nor should third parties factor into/pressure a release timetable. It’d just be useful to know!</p>
<aside class="quote no-group" data-username="tme_317" data-post="115" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/t/0ea827/48.png" class="avatar"> tme_317:</div>
<blockquote>
<p>I guess if it’s not out when my context app backlog dries up then it’s back to React.</p>
</blockquote>
</aside>
<p>Hopefully doesn’t come to that. In my current project, LV all but eradicates client-side JS. With React being quite an opinionated view layer that tends to bundle both mark-up and business logic, refactoring to LV later would be tantamount to a rewrite in my case. So React isn’t really an ideal plan B this time around.</p>
<p>Instead of an SPA, I’ll prob stick with plain HTML and a thin JS layer on top. Hopefully that’ll be a bit easier to refactor for LV when it lands.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112079" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/118">Post #117</a>
	                </div>
	            </div>
              <div id="likers-container-112079" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112079"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #117"></div>
  </section>
</div>
    <div class="postbit" id="112083" data-post-id="112083">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AstonJ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AstonJ/120/15_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AstonJ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="lee" data-post="118" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>Are there parts of Phoenix that a release is blocking on?</p>
</blockquote>
</aside>
<p>Phoenix 1.4 is out <img src="https://forum.elixirforum.com/uploads/default/original/2X/6/6c3193d1dd46244da3c8c6f719c9f5e2abdd5ae8.gif?v=15" title=":003:" class="emoji emoji-custom" alt=":003:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="lee" data-post="118" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>Does Chris want to align LV’s release with, say, Phoenix 1.5?</p>
</blockquote>
</aside>
<p>He has not said so, in fact he’s said we’ll see LV after 1.4 so I would take that as <em>not</em> wanting to wait till 1.5.</p>
<p>This is why I reckon it won’t be too long before we see LV <img src="https://forum.elixirforum.com/uploads/default/original/2X/a/a1c41c89c299189a3f85edfeb4973563d8bac781.gif?v=15" title=":023:" class="emoji emoji-custom" alt=":023:" loading="lazy" width="20" height="20"> (though this is just a guess like everyone else’s <img src="https://forum.elixirforum.com/uploads/default/original/2X/7/776053aa22968f83c10e90c98b23aa0ddd5c9d47.gif?v=15" title=":lol:" class="emoji emoji-custom" alt=":lol:" loading="lazy" width="20" height="20">)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112083" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/119">Post #118</a>
	                </div>
	            </div>
              <div id="likers-container-112083" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112083"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #118"></div>
  </section>
</div>
    <div class="postbit" id="112179" data-post-id="112179">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="liberza" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/liberza/120/12566_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  liberza
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="lee" data-post="109" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>Aside from a few tinfoil-hat wearing types and explicitly locked-down corporate environments (which is exceedingly rare), who disables JS these days? That hasn’t been a concern since at least the mid-2000s.</p>
</blockquote>
</aside>
<p>Perhaps it has not been a concern since the mid-2000s for most front-end JS devs <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20">. For security-conscious individuals though, disabling JS and re-enabling only as needed is an easy way to prevent all kinds of undesirable garbage from executing on one’s computer. When a website depends on 30 different scripts, and I only need to enable 2 of them to get full functionality of the site, why waste my local machine’s resources to execute the other 28 scripts that are just there to track you and who knows what else?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112179" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/120">Post #119</a>
	                </div>
	            </div>
              <div id="likers-container-112179" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112179"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #119"></div>
  </section>
</div>
    <div class="postbit" id="112252" data-post-id="112252">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lee" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/120/13472_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lee
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This was discussed at length in a JS thread that split from this one, and has since been deleted, so I won’t go into the technical counter points again for the sake of re-opening a can of worms.</p>
<p>But suffice to summarise that the vast majority (99%+) don’t share your browsing habits, so commercially designing for a ROI on the remaining fraction is often not worth doing.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112252" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/121">Post #120</a>
	                </div>
	            </div>
              <div id="likers-container-112252" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112252"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #120"></div>
  </section>
</div>
    <div class="postbit" id="112483" data-post-id="112483">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="liberza" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/liberza/120/12566_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  liberza
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>In terms of dev-hours I’d agree that for most web apps today it isn’t worth it to put much effort into design for users with JS disabled beyond some basic graceful degradation, especially for fancy stuff like graphs / charts. I think this is partly the fault of our tools though - one thing about LiveView that seems interesting is the potential to make it easier to fallback to server-side-rendering only.</p>
<p>I realize this probably is not a priority for the project especially in the beginning, but it’s certainly interesting to think about giving devs an easier fallback path without requiring a ton of extra work.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112483" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/122">Post #121</a>
	                </div>
	            </div>
              <div id="likers-container-112483" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112483"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #121"></div>
  </section>
</div>
    <div class="postbit" id="112521" data-post-id="112521">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lee" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/120/13472_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lee
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="liberza" data-post="122" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/liberza/48/12566_2.png" class="avatar"> liberza:</div>
<blockquote>
<p>I realize this probably is not a priority for the project especially in the beginning, but it’s certainly interesting to think about giving devs an easier fallback path without requiring a ton of extra work.</p>
</blockquote>
</aside>
<p>I had an example of how a fallback <em>might</em> work in the deleted JS thread, but it got really messy, fast.</p>
<p>The problem is, there’s no real substitute for the JS API in the absence of JS. Let’s say an <code>onClick</code> handler is attached to a (non-submitted) button that should send a GraphQL request via a WebSocket, get some data, and update the local state which in turn refreshes the DOM without a full page reload. How do you simulate that in plain HTML? Form handlers won’t work - you’d need to explicitly submit a form by either hitting <em></em> inside <code>&lt;input&gt;</code> tags, or click a button with <code>type=submit</code>. Even then, you’re limited to POST data, which would mean preserving some kind of state. This was the domain of <a href="http://ASP.NET" rel="noopener nofollow ugc">ASP.NET</a> view state, years back, and even that (IIRC) required some level of JS buy-in.</p>
<p>Unless you’re doing the absolute most basics - submitting forms, and clicking <code>&lt;a&gt;</code> links - there’s really no ‘graceful degradation’ these days for even rudimentary parity with basic app expectations.</p>
<p>JS is 99%+ supported, by default. No plugins, no workarounds - it works in 995 out of 1,000+ visits. For those other 5 out of 1,000 edge cases, you need to make a business decision as to a) <em>why</em> those users have JS disabled and b) whether there’s a ROI working around it.</p>
<p>I’d argue that for the majority of cases, in all but very few exceptions, a simple message asking users to enable JS would be sufficient.</p>
<p>As I said elsewhere, not once in the last 10 years of building <em>anything</em> for online (across many verticals, covering many demographies and geographies) have I ever encountered a scenario where it was necessary to design for a non-JS environment. This has nothing to do with designing Javascript <em>properly</em>, btw. There are plenty of examples of where it’s done badly. But done right - with good asset loading strategies, minification, and efficient code that won’t kill resource-constrained devices, there has been zero occasions where a customer/user has ever written in to complain that the site/app required JS support.</p>
<p>If there’s a need to consume parts of your site/app outside of JS, that’s what REST endpoints are for.</p>
<p>It’s just not a design consideration today. Back in 1998 when I started, absolutely it was a concern. Even in the mid-2000s, when JS support was patchy and non-standard, there was an argument for it. But in 2019, when virtually every mainstream web browser released in the last decade has it enabled by default? This is an old problem that really doesn’t warrant workarounds, for all but the slimmest of use-cases.</p>
<p><em>(Apologies <a class="mention" href="/u/astonj" rel="nofollow">@AstonJ</a> if this risks repeating the previous JS thread… this is intended to conclude the point rather than branch off into a separate discussion!)</em></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112521" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/123">Post #122</a>
	                </div>
	            </div>
              <div id="likers-container-112521" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112521"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #122"></div>
  </section>
</div>
    <div class="postbit" id="112544" data-post-id="112544">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tme_317" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tme_317
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If JS is disabled the client still gets the initial HTML render (no white screen of death) but no live updating as the channel/LV process won’t be subsequently instantiated.</p>
<p>I can’t find it now but I thought he mentioned in this <a href="https://devchat.tv/elixir-mix/emx-020-phoenix-and-liveview-with-chris-mccord/" rel="noopener nofollow ugc">podcast</a> if you were just doing a form you could write a fallback where it POSTs to a controller without needing form state held in the LV process.  Of course then you’d need extra code to render the validation error messages server-side after the POST.  I doubt any use-case more complex than a standard form is possible with JS disabled.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112544" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/124">Post #123</a>
	                </div>
	            </div>
              <div id="likers-container-112544" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112544"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #123"></div>
  </section>
</div>
    <div class="postbit" id="112598" data-post-id="112598">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="liberza" data-post="120" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/liberza/48/12566_2.png" class="avatar"> liberza:</div>
<blockquote>
<p>explicitly locked-down corporate environments (which is exceedingly rare), who disables JS these days?</p>
</blockquote>
</aside>
<p>Not corporate, but government here.  ^.^;</p>
<p>Although my last job (very much <em>big</em> corporate) had some terminals super locked down like that too though.</p>
<p>Not uncommon in my experiences…  ^.^;</p>
<p>On my own devices I use uMatrix though, I like fine-grained whitelisting.  Can’t recommend it enough!  ^.^</p>
<aside class="quote no-group" data-username="lee" data-post="121" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>But suffice to summarise that the vast majority (99%+) don’t share your browsing habits, so commercially designing for a ROI on the remaining fraction is often not worth doing.</p>
</blockquote>
</aside>
<p>Depends on who it’s being made for.  And it definitely doesn’t hurt to keep ADA compliance in mind anymore as it’s been hitting some places hard lately!</p>
<aside class="quote no-group" data-username="liberza" data-post="122" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/liberza/48/12566_2.png" class="avatar"> liberza:</div>
<blockquote>
<p>one thing about LiveView that seems interesting is the potential to make it easier to fallback to server-side-rendering only.</p>
</blockquote>
</aside>
<p>+1</p>
<aside class="quote no-group" data-username="lee" data-post="123" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>Unless you’re doing the absolute most basics - submitting forms, and clicking <code>&lt;a&gt;</code> links - there’s really no ‘graceful degradation’ these days for even rudimentary parity with basic app expectations.</p>
</blockquote>
</aside>
<p>That is why should always ‘start’ with the basics so you know they work, then just ‘enhance’ after that with whatever pretty things or special features or so.  Like I use GraphQL, but not on the client-page side.  ^.^</p>
<aside class="quote no-group" data-username="lee" data-post="123" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>I’d argue that for the majority of cases, in all but very few exceptions, a simple message asking users to enable JS would be sufficient.</p>
</blockquote>
</aside>
<p>Honestly such messages are <em>amazingly</em> rude to people that use screen readers.  I saw one here go off on a rant once…  &gt;.&gt;</p>
<aside class="quote no-group" data-username="lee" data-post="123" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>As I said elsewhere, not once in the last 10 years of building <em>anything</em> for online (across many verticals, covering many demographies and geographies) have I ever encountered a scenario where it was necessary to design for a non-JS environment.</p>
</blockquote>
</aside>
<p>Eh, you really aren’t that demographic though, that doesn’t make the demographic that you are in the entire world though.  Working at a college really shows me how <em>very</em> important it is to have proper fallbacks (I didn’t really care either before here to be honest…).</p>
<aside class="quote no-group" data-username="lee" data-post="123" data-topic="16427">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lee/48/13472_2.png" class="avatar"> lee:</div>
<blockquote>
<p>It’s just not a design consideration today. Back in 1998 when I started, absolutely it was a concern. Even in the mid-2000s, when JS support was patchy and non-standard, there was an argument for it. But in 2019, when virtually every mainstream web browser released in the last decade has it enabled by default? This is an old problem that really doesn’t warrant workarounds, for all but the slimmest of use-cases.</p>
</blockquote>
</aside>
<p>Eh, it’s not an “old” thing (although I am stuck on GUI-less consoles quite often) for most, but rather a compliance thing so it is actually useful.  People with visual and/or motor disabilities are far far more common than one would think.  <img src="https://forum.elixirforum.com/images/emoji/apple/frowning.png?v=15" title=":frowning:" class="emoji" alt=":frowning:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112598" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/125">Post #124</a>
	                </div>
	            </div>
              <div id="likers-container-112598" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112598"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #124"></div>
  </section>
</div>
    <div class="postbit" id="112679" data-post-id="112679">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="liberza" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/liberza/120/12566_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  liberza
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yes I thought I recalled the comment on the client getting an initial HTML render, which would be wonderful as far as I’m concerned. I wasn’t sure if I had heard that correctly though, like if it was in Chris’ video or in that Elixir Mix episode or elsewhere.</p>
<p>Either way I’m pretty stoked to mess around with this thing. It’s great how much focus there has generally been lately in the community around creating interfaces (scenic etc).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="112679" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/lets-discuss-phoenix-liveview/16427/126">Post #125</a>
	                </div>
	            </div>
              <div id="likers-container-112679" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="112679"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #125"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/16427/load_more?page=13">Load more posts (6 remaining)</a>
</div></template></turbo-stream>