Unveil.js for Rails

Lazy loaded images on rails. If you want a quick start using unveil.js with rails there is now a gem for that.

By loading your images as they appear in the viewport rather than on load you can improve your rails application's page speed.


Add the unveil-rails gem into your Gemfile:

gem 'unveil-rails', '~> 0.2.1'

Install unveil.js and initializer into your rails app:

bin/rails g unveil:rails:install

Include the unveil.js initializer in app/assets/javascripts/application.js:

//= require unveil_init

Now use the helper method where ever you want lazy images:

<%= lazy_image_tag('an-image.png') %>
<%= lazy_image_tag('an-image.png', retina: 'a-retina-image.png') %>
<%= lazy_image_tag('an-image.png', placeholder: 'placeholder.png') %>


The installation generator will have added an initializer to your application. In this file there are a couple of settings you can change.


Unveil::Rails.config.threshold = 200

Setting this variable to an integer will set the unveil threshold setting as documented here.

Default placeholder

You may set an alternative default placeholder image:

Unveil::Rails.config.default_placeholder = 'default.jpg'

You can set the placeholder per lazy image by passing in the placeholder option:

<%= lazy_image_tag('an-image.png', placeholder: 'placeholder.png') %>



Developed and maintained by Made Tech. Key contributions:

And of course Luís Almeida creator of unveil.js.


Copyright © 2014 Made Tech Ltd. It is free software, and may be redistributed under the terms specified in the LICENSE file.