Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(artwork): adds small blurred placeholder image #8209

Merged
merged 1 commit into from Aug 18, 2021

Conversation

dzucconi
Copy link
Member

@dzucconi dzucconi commented Aug 13, 2021

Closes: GRO-484

So initially I thought LCP would be triggered if we loaded a small (like 20x20) image blown up to fill out the container. This turns out not to be the case in my testing. We have to use an image that's at least 1px larger than the primary image. We can just compress this a huge amount and use a CSS blur. These tend to be around 2kb (as compared to ~50-100kb for the fullsize images). Once this happens these do get picked up as the LCP. Combined with a preload tag this should always win and improve our LCP. Feels a bit hacky but adding a blurred placeholder seems like an actual UX improvement. Granted there's way better ways to implement this than this. Let's let this hang out in draft then merge on Monday and see if the Calibre scores for LCP move at all.

Here's what navigating through a gallery looks like with my network throttling on Fast 3G:

Copy link
Member

@damassi damassi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

One q I have that you may have alluded to (and forgive my ignorance here) is: I've noticed on certain sites in the past that large images like this often "progressively" download (right term?) and I'm wondering why we don't go that route? It seems like a codec / encoding thing but not too sure.

@dzucconi dzucconi force-pushed the dzucconi/feat/GRO-484--blurred-placeholder branch from a19c3fa to daf9ffd Compare August 18, 2021 16:33
@dzucconi dzucconi marked this pull request as ready for review August 18, 2021 16:43
@dzucconi dzucconi force-pushed the dzucconi/feat/GRO-484--blurred-placeholder branch from daf9ffd to 707748f Compare August 18, 2021 18:08
@dzucconi
Copy link
Member Author

Google has a bit on why they don't support progressive in WebP here: https://developers.google.com/speed/webp/faq#does_webp_support_progressive_or_interlaced_display

There's some very interesting threads here:
w3c/largest-contentful-paint#68
w3c/largest-contentful-paint#71

One of the other things I'm thinking might be good to add to Gemini is supporting blurhash: https://blurha.sh/ + https://github.com/Gargron/blurhash
cc @jonallured

@damassi
Copy link
Member

damassi commented Aug 18, 2021

Alternatively, WebP offers incremental decoding, where all available incoming bytes of the bitstream are used to try and produce a displayable sample row as soon as possible. This both saves memory, CPU and re-paint effort on the client while providing visual cues about the download status. The incremental decoding feature is available through the Advanced Decoding API.

Interesting

@dzucconi dzucconi merged commit 8218895 into master Aug 18, 2021
@dzucconi dzucconi deleted the dzucconi/feat/GRO-484--blurred-placeholder branch August 18, 2021 19:37
@artsy-peril artsy-peril bot mentioned this pull request Aug 18, 2021
The-Beez-Kneez added a commit that referenced this pull request Aug 23, 2021
* chore(deps): update cimg/base docker tag to v2021

* Migrate Conversation from v2 to v3

* fix a statement condition

* feature: Slim Lodash

Round 2 of slim lodash, it turns out that lodash the lodash webpack
plugin is aggressive by default. An extra configuration option was
requried to allow all of the functionality we used to be included.

* feat: Temporarilly load recaptcha in form

* Disable site link for marketing page

* chore: Move loadenv to /lib (#8219)

* chore(deps): update dep @artsy/cohesion from 2.18.0 to v2.19.0

* Update metaphysics schema

* feat(FX-3136): Add fair organizer redirect (#8203)

* FX-3136 Added redirect logic

* FX-3136 Added ENABLE_FAIR_ORGANIZER_REDIRECT flag

* Updated cypress test

* refactor: exhibitors tab

* fix(PX-4326): Don't manually override background in Pill component in SavedAddresses (#8127)

* avoid important and themeGet instead color

* rewrote Pill to custom Default label

Co-authored-by: Serge0n <siarhei.krauchonak@artsymail.com>

* chore(deps): update dep @artsy/cohesion from 2.19.0 to v2.19.1

* Fix conversation snippet

* Refactor Details

* fix(artist): corrects v3 styling (#8226)

* fix(viewing-room): fixes mobile image header (#8227)

* feature: Enable Lodash Currying (#8228)

* fix(types): adds types for lodash-webpack-plugin (#8229)

* fix: Dont render Zendesk on inquiry artwork (#8230)

* feat(artwork): adds small blurred placeholder image (#8209)

* chore(deps): update dep @artsy/cohesion from 2.19.1 to v2.21.0

* Update metaphysics schema

* refactor(consign): converts /consign to v3 (#8233)

* chore(deps): update dep @artsy/palette from 16.0.0 to v16.0.1

* chore(deps): update dep @artsy/palette-charts from 15.0.0 to v15.0.1

* chore(deps): update dep @artsy/palette-charts from 15.0.1 to v16

* feat(FX-3077): exhibitors tab (#8192)

* feat(FX-3077): added exhibitors tab

* feat(FX-3077): added tests for exhibitors tab

* refactor(FX-3077): minor changes

* refactor(FX-3077): updated queries

* feat(FX-3077): fetch partner info from FairExhibitor type

* feat(FX-3077): env variable for rendering exhibitors tab

* [GRO-460] Update image/copy in homepage banner for logged out users (#8212)

* [WIP- dont merge] Update image and copy in homepage banner for logged out users

* Fix failing smoke test

* Add subtitle copy

* chore(deps): update dep @artsy/palette from 16.0.1 to v17 (#8236)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* fix(consign): fixes render mismatch (#8239)

* chore(deps): update dep @artsy/palette from 17.0.0 to v17.1.0

* chore(deps): update dep @artsy/palette-charts from 16.0.0 to v16.1.0

* GRO-469: Updated Trending Lots to remove closed lots (#8242)

* Updated Trending Lots to remove closed lots

* Update test

* fix: align carousel items on fair organizer page (#8244)

* feat(inquiry): roughs in full inquiry structure (#8243)

* feat(FX-3158): Fair exhibitors A-Z navigation (#8214)

* FX-3158 Added ExhibitorsLetterNav.tsx

* FX-3158 Made letter nav scrollable

* FX-3158 Updated tests

* FX-3158 Added A-Z nav to A-Z tab with scrolling down the page on click

* FX-3158 Updated tests

* FX-3158 Added spacer above A-Z nav

* FX-3158 Fixed indents

* FX-3158 Updated tests

* Updated Standout Lots with logic to exclude bidding closed lots (#8248)

* chore(deps): update dep @artsy/cohesion from 2.21.0 to v2.22.0

* Bug Fixed regarding spacing issues for empty Auction Rails

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Ivan Badyulya <ivan.badyulya@artsymail.com>
Co-authored-by: Cameron Rollheiser <cameron.rollheiser@artsymail.com>
Co-authored-by: Christopher Pappas <damassi.pappas@gmail.com>
Co-authored-by: Jon Allured <jon.allured@gmail.com>
Co-authored-by: artsy-peril[bot] <27295005+artsy-peril[bot]@users.noreply.github.com>
Co-authored-by: Anastasia <44819355+anastasiapyzhik@users.noreply.github.com>
Co-authored-by: Hanna Trapachka <trepachko.ann@gmail.com>
Co-authored-by: Hanna Trapachka <56556580+tr-ann@users.noreply.github.com>
Co-authored-by: Sergey Kravchyonok <55637696+Serge0n@users.noreply.github.com>
Co-authored-by: Serge0n <siarhei.krauchonak@artsymail.com>
Co-authored-by: Damon <mail@damonzucconi.com>
Co-authored-by: Cameron Rollheiser <icirellik@gmail.com>
Co-authored-by: Ivan <79980131+ivan-badyulya@users.noreply.github.com>
Co-authored-by: TanjieM <tanjie@democracy.works>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: AL_Sutherland <analisa.sutherland@artsymail.com>
Co-authored-by: Dima Tretyak (Dzmitry Tratsiak) <itretyak@ya.ru>
Co-authored-by: Ana Lisa Sutherland <sutherlandanalisa@gmail.com>
@artsy-peril artsy-peril bot mentioned this pull request Aug 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants