Cesium
Implement CesiumJS solutions with minimal assumptions and production-safe defaults.
Workflow
- Confirm runtime assumptions first: framework (vanilla/Vite/React), CesiumJS version, and whether Cesium Ion is available.
- Start with the smallest runnable viewer setup before adding terrain, 3D Tiles, or heavy data layers.
- Keep token handling out of source code; use environment variables and project config wiring.
- Add data layers incrementally and verify camera framing after each step.
- For rendering/perf issues, reduce scene complexity first, then tune request/render settings.
Implementation guardrails
- Prefer explicit imports from
cesiumand avoid hidden globals. - Use
requestRenderModefor mostly static scenes to reduce GPU/CPU usage. - Dispose resources in teardown paths (
viewer.destroy()) in SPA route changes/unmounts. - For large datasets, prefer 3D Tiles over huge entity collections when possible.
- Keep picking logic resilient: handle
undefinedpicks and mixed primitive/entity results.
Debugging checklist
- Blank globe: verify CSS container height/width and render loop not blocked.
- Missing terrain/tiles: verify network access, token, and dataset permissions.
- Misplaced data: verify CRS and coordinate order (lon, lat, height).
- Memory/GPU pressure: profile number of entities/primitives and texture-heavy layers.
Reference docs in this skill
- Read
{baseDir}/references/patterns.mdwhen generating or fixing Cesium code.