Design and Implementation of JD Skinning PaaS Platform
This article details the background, research, system architecture, specific implementation, SDK integration, and future planning of JD's skinning PaaS platform, which unifies UI theming across web and native apps, supports dark mode, and optimizes resource management.
Background
After two years of evolution, JD's skinning system has supported major promotions such as 11.11 and 618, offering personalized skins and nearing feature completeness. To improve platform universality and provide the same capability to other apps while reducing redundant development, a skinning PaaS solution was proposed.
Research Analysis
We first examined the existing view update solution on JD's main site, which uses dynamic API delivery for each module, offering fine-grained control but lacking uniformity for large-scale redesigns or holiday themes. Research on other apps showed no unified skinning service, confirming the need for a centralized solution.
System Design
We decided to complement existing strengths by providing a unified platform that centrally manages static views, caches them locally, and updates them via notifications. To enable cross‑app integration, core functionalities were extracted into an SDK for easy adoption by other JD apps.
Key design points include:
Unified skin control at the skin level with module‑level decomposition and permission management.
SDK extraction for component‑based integration across different sites.
Comprehensive support for component attributes, backgrounds, animations, and dark‑mode assets.
Data‑localization and resource‑file management to improve UI update speed and avoid redundant downloads.
Overall Architecture
The CMS backend creates applications identified by a unique code, generates default skins, and manages assets such as text, images, Lottie animations, and files. Assets can be version‑controlled and linked to multiple skins, with optional dark‑mode counterparts stored locally for quick switching.
The SDK, using the application code, requests skin data, downloads required resources (icons, Lottie files, etc.), stores them in a local database, and notifies modules to refresh their views. It also handles network requests, file downloads, login state monitoring, dark‑mode detection, and data persistence.
Integration
Native clients integrate the SDK to handle data fetching and file downloading. If an app already has its own network verification, it can use the SDK solely for downloading and storage; otherwise, the SDK can manage the entire skinning workflow.
On the CMS side, administrators create applications, configure assets, and set permissions before the skinning process can be used.
Planning and Development
As JD's business expands, flexible and efficient configuration becomes essential. Ongoing efforts focus on reducing integration overhead, supporting special holiday themes, simplifying CMS operations, and extending the system to more business scenarios. The solution has already been deployed on JD Fast Edition and the main site senior version, with demo screenshots of normal and dark‑mode navigation shown.
If you are interested in JD's skinning system or have suggestions, please contact: [email protected]
JD Retail Technology
Official platform of JD Retail Technology, delivering insightful R&D news and a deep look into the lives and work of technologists.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.