emoji-datasource-apple

Apple's official emoji spritesheets and matching JSON metadata, packaged as an installable npm module for building emoji pickers and chat UIs.

Library
npm
v16.0.0
2,798 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
58 /100 Fair
Development Activity 48
Maintenance 4
Community 80
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
51 /100 Fair
Architecture 55
Code Quality 40
Innovation 35
Learning Curve 75

emoji-datasource-apple is one of several platform-specific npm packages published from the emoji-data monorepo (iamcal/emoji-data), the dataset that underpins the emoji pickers used across Slack-style chat apps, editors, and messaging clients. Rather than shipping raw Unicode data alone, this package bundles Apple’s rendered emoji spritesheets at multiple resolutions (16, 20, 32, 64px) together with a JSON index that maps every emoji’s unified codepoint, short name, category, and skin-tone variants to its exact sheet_x/sheet_y coordinates on the sheet.

Consumers install it purely as a data/asset dependency: import emoji.json (or the richer emoji_pretty.json) for lookup metadata, and reference the shipped PNG spritesheets directly for rendering, with ‘clean’ (no-fallback) and quantized (128/256-color) variants available for teams concerned about file size or the licensing of Apple’s original artwork.

What You Get

  • Apple emoji spritesheets at 16px, 20px, 32px, and 64px, each with a 1px transparent border per glyph for precise sheet_x/sheet_y cropping
  • ‘Clean’ spritesheet variants that omit fallback glyphs, avoiding ambiguity around Apple’s image licensing for missing emoji
  • Indexed-color spritesheets (128 and 256 color) for teams that need smaller asset payloads than the full 24-bit sheets
  • emoji.json / emoji_pretty.json metadata covering unified codepoints, short names, categories, sort order, and skin-tone variation mappings
  • Individual 64px PNGs per emoji (img-apple-64/) for consumers that render single glyphs instead of cropping a shared sheet
  • Coverage tracking against the current Unicode Emoji version, updated release-over-release as Apple ships new glyphs in macOS/iOS

Common Use Cases

  • Rendering an Apple-style emoji picker in a chat, comment, or messaging product without shipping your own emoji artwork
  • Mapping :short_name: colon-syntax input to the correct Apple glyph and sprite position in a text editor or composer
  • Building an emoji autocomplete/search feature keyed off category, subcategory, or short-name metadata
  • Serving emoji images from a CDN by pointing at the versioned spritesheet paths (e.g. via jsDelivr) instead of bundling every PNG
  • Cross-referencing skin-tone variant codepoints for products that support Fitzpatrick modifiers

Under The Hood

Architecture The published npm package is a build artifact of the iamcal/emoji-data monorepo: PHP scripts under build/ (build_image.php, build_map.php, build_catalog.php) consume raw per-vendor image sources and Unicode data files (data_emoji_names_v*.txt, data_variations.txt) to regenerate emoji.json/emoji_pretty.json and the per-platform spritesheets on every Unicode Emoji release. The npm package itself ships no executable code — it is a static bundle of the generated JSON index plus PNG assets, so its ‘architecture’ from a consumer’s perspective is a data contract (fixed JSON schema keyed by unified codepoint) plus a coordinate system (sheet_x/sheet_y against a fixed cell size) rather than any runtime logic.

Tech Stack The generation pipeline is PHP-based (build_*.php, common.php), invoked against raw Unicode data text files and per-vendor source images; the repo also contains a Perl helper (find_missing_summary.php and related). None of this is exposed to or required by npm consumers, whose only dependency surface is static JSON and PNG files declared in package.json’s files array. No build tooling, bundler, or runtime framework is part of the published artifact.

Code Quality There is no test suite in the conventional sense — correctness is enforced by comparing generated sheets/JSON against CHANGES.md-tracked known counts of “missing images” per vendor per Unicode version, and by manual visual review of spritesheets. No CI configuration is present in the repository. This is consistent with a data-generation project rather than an application: the risk surface is data accuracy (correct codepoint-to-image mapping) rather than program logic, and the maintainer has historically caught regressions (e.g. an incorrect Scotland flag, missing non_qualified fields) via community bug reports rather than automated checks.

API Design There is no API surface beyond the JSON schema itself and the documented sprite-coordinate formula (x = sheet_x * (sheet_size + 2) + 1). The schema is stable and well-documented in the README (every field enumerated with its meaning), and the same field names are shared across every platform-specific package (apple/google/twitter/facebook), so a consumer who has integrated one platform’s package can swap to another with no code changes beyond the sheet path. The main ergonomic cost is that consumers must implement their own sprite-cropping and short-name lookup logic — the package provides data, not a rendering component.

Used by 5 apps in this directory

Python
47%
MIT

Docs

CMS · File Storage

16,868

Open-source collaborative knowledge platform with real-time editing, AI writing tools, and full self-hosting control — built by the French and German governments.

View details
88
Repo Health
81
Technical
68
Dependency
Built with
Python 47%
TypeScript 45%
Updated 4 days ago
TypeScript
51%
Other

Mattermost

Collaboration · Devops · Team Chat

39,203

Open core, self-hosted team collaboration with chat, AI agents, voice calling, and deep DevOps integrations — all under your control.

View details
96
Repo Health
87
Technical
65
Dependency
Built with
TypeScript 51%
Go 40%
Updated 4 days ago
TypeScript
51%
Other

Mattermost

Collaboration · Devops · Team Chat

39,203

Open core, self-hosted team collaboration with chat, AI agents, voice calling, and deep DevOps integrations — all under your control.

View details
96
Repo Health
87
Technical
65
Dependency
Built with
TypeScript 51%
Go 40%
Updated 4 days ago
Python
57%
Apache 2.0

Zulip

Team Chat

25,962

Topic-based team chat that brings the structure of email threads to real-time messaging, so distributed teams never lose context across hundreds of concurrent conversations.

View details
96
Repo Health
86
Technical
61
Dependency
Built with
Python 57%
TypeScript 19%
JavaScript 10%
Updated 5 days ago
Python
57%
Apache 2.0

Zulip

Team Chat

25,962

Topic-based team chat that brings the structure of email threads to real-time messaging, so distributed teams never lose context across hundreds of concurrent conversations.

View details
96
Repo Health
86
Technical
61
Dependency
Built with
Python 57%
TypeScript 19%
JavaScript 10%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers