Skip to content

Use native Emojis on platforms which natively support Emojis

Description

Currently we're using Emoji One images spritesheet for showing Emojis on GitLab at various places. Here are pros and cons of having PNG spritesheet.

Pros

  • Consistent Emoji look and feel on any browser/OS combination.
  • Ability to support new Emojis as they are standardised by UNICODE.

Cons

  • Emoji spritesheet is over 1 MB in size. This becomes a large download if image is not cached

  • Spritesheet and individual emoji icon images are PNG files with regular resolutions for standard and x2 resolution for high DPI screens, this can grow download size quickly as new emojis are standardized.

  • If a page with several types of emoji reactions made, will involve network requests for each reaction image file.

    • Eg; Open browser DevTools and navigate to !7196, once page is loaded, go to Network Tab and filter image requests with path /assets.
  • We adopted to use system fonts for GitLab to make GitLab feel more integrated with Operating System, having Emojis which doesn't match the look of system Emojis contradicts our own argument.

Proposal

We can utilize platform's Emoji support and rely on our traditional emoji mechanism only on unsupported platform, i.e. Progressive Enhancement for Emojis. This is already being done by GitHub.

Here's how GitHub issues page looks on different platforms.

Chrome on Linux (Ubuntu)

Screenshot_from_2017-01-05_15-01-26

Chrome on Android

Screenshot_20170105-145521

Chrome on Windows 10

Screenshot_from_2017-01-05_15-03-26

State of Emoji support on different platforms

Let's look at current state of Emoji support in different Operating Systems.

macOS (formerly, OS X)

macOS 10.10 Yosemite or higher

  • All browsers and Chrome 41+.

Windows

Windows 7 or higher

  • Windows 7 added support for B&W Emojis, color Emojis supported starting Windows 8.
  • Chrome 53 added support for Emojis under Windows.

iOS

iOS 5 or higher

Android

Android 4.4 Kitkat or higher

Linux

Emoji support on Linux desktops is inconsistent for different desktop environments, and Chrome on Linux doesn't support Color Emojis. However, it is possible to enable Emoji support on Linux by manually installing EmojiOne fonts.

Links / references