The first drawback of the no-JS approach can be mitigated by this code in the controller:
class PostsController < ApplicationController
...
def index
respond_to do |format|
format.html
format.turbo_stream { @pagy, @posts = pagy_countless(Post.all) }
end
end
...
It ensures that posts are loaded for turbo_stream requests only.