name: takumi-rs-core-skilld description: "ALWAYS use when writing code importing "@takumi-rs/core". Consult for debugging, best practices, or modifying @takumi-rs/core, takumi-rs/core, takumi-rs core, takumi rs core, takumi." metadata: version: 1.0.0-beta.3 generated_by: Claude Code · Haiku 4.5 generated_at: 2026-03-17
kane50613/takumi @takumi-rs/core
Version: 1.0.0-beta.3 Deps: @takumi-rs/helpers@0.73.1 Tags: latest: 0.73.1, beta: 1.0.0-beta.3
References: package.json — exports, entry points • README — setup, basic usage • Docs — API reference, guides • GitHub Issues — bugs, workarounds, edge cases • GitHub Discussions — Q&A, patterns, recipes • Releases — changelog, breaking changes, new APIs
Search
Use skilld search instead of grepping .skilld/ directories — hybrid semantic + keyword search across all indexed docs, issues, and releases. If skilld is unavailable, use npx -y skilld search.
skilld search "query" -p @takumi-rs/core
skilld search "issues:error handling" -p @takumi-rs/core
skilld search "releases:deprecated" -p @takumi-rs/core
Filters: docs:, issues:, releases: prefix narrows by source type.
API Changes
This section documents version-specific API changes in @takumi-rs/core v1.0.0-beta.3. Focus on breaking changes and new APIs that differ from v0.x versions.
Breaking Changes
BREAKING:
displaydefaults toinlineinstead offlex— v1.0.0 changed default layout behavior. Explicitly adddisplay: flexorflexTailwind class to containers. sourceBREAKING: Image format options are now lowercase only —
'WebP'→'webp','PNG'→'png','JPEG'→'jpeg'. All uppercase variants removed. sourceBREAKING:
AnyNodetype removed — useNodeinstead. Generic union type eliminated for type clarity. sourceBREAKING:
PersistentImagetype removed — useImageSourceinterface instead. Renamed for consistency with web standards terminology. sourceBREAKING:
purgeResourcesCache()function removed — no longer needed with v1's resource management improvements. source
New APIs
NEW:
emojioption inImageResponseconstructor — controls emoji rendering strategy. Accepts'twemoji' | 'blobmoji' | 'noto' | 'openmoji'or'from-font'to use system fonts. Available since v1.0.0-beta.3. sourceNEW: High-level
ImageResponseclass API — unified interface extending standard Response object. Works in Node.js, Edge, and browser runtimes with automatic environment detection. sourceNEW:
fromJsx()helper function from@takumi-rs/helpers/jsx— converts JSX to Takumi node tree with extracted stylesheets. Replaces Satori's JSX→SVG pipeline. sourceNEW: WASM runtime support via
@takumi-rs/image-response/wasmimport and@takumi-rs/wasmpackage — enables Takumi in Edge, Workers, and browser environments withmoduleparameter. sourceNEW: Default fonts included — Geist and Geist Mono fonts loaded automatically by default. Specify custom fonts via
fontsoption or passloadDefaultFonts: falseto opt out. source
Installation Changes
NEW:
@takumi-rs/image-responsepackage — high-level API for JSX-based image generation. Replaces directRendererusage in most cases. sourceNEW:
@takumi-rs/helperspackage — utilities for JSX→Node conversion and DOM manipulation. source
Node.js Binding Updates
In Rust, RenderOptionsBuilder removed in favor of RenderOptions::builder() for more robust builder pattern implementation.
Also changed: WASM module import path changed · @takumi-rs/wasm/next for Next.js · @takumi-rs/wasm/takumi_wasm_bg.wasm for Workers · renderer parameter now accepts pre-instantiated Renderer · module parameter required for WASM environments · signal parameter for AbortSignal support added
Best Practices
Reuse the
Rendererinstance across multiple renders rather than creating new instances each time — significantly improves performance by maintaining resource caches. For Cloudflare Workers, initialize the renderer outside thefetch()handler to avoid repeated initialization on every request. sourcePreload frequently used images via persistent images to avoid redundant decoding on every render — pass images to the renderer constructor as
persistentImagesand reference them by key insrcattributes or CSSbackground-image/mask-imageproperties. sourcePrefer TTF fonts over WOFF2 for better rendering performance — WOFF2 requires decompression before use while TTF can be used directly. Only use WOFF2 if minimizing file size is more critical than render speed. source
Manually extract and fetch external image URLs using
extractResourceUrls()andfetchResources()— Takumi does not handle fetching internally, so you must call these helpers and passfetchedResourcestorender()orrenderAnimation(). sourceUse stylesheet
@keyframesinstead of structuredkeyframesobjects when animation definitions should travel with the JSX tree — stylesheets stay embedded in the node while structured keyframes require passing to the renderer separately. sourcePass
persistentImagesto the Renderer constructor, not the render call, for use withrenderAnimation()— images passed during construction are available to all animation frames, avoiding per-frame overhead. sourceEnable
drawDebugBorderoption when debugging layout problems — renders visible borders around layout elements to diagnose incorrect spacing, sizing, or positioning issues. sourceUse
extractEmojis()helper with a provider (twemoji, noto, etc.) for dynamic emoji rendering when not using theImageResponseAPI — the function separates emoji segments from text nodes and prepares them for fetching. sourceOmit
heightinImageResponseorrender()to enable auto-sizing based on content — Takumi can calculate height automatically when width is provided, useful for dynamic-height layouts like variable-length lists or text blocks. source