| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| DiceBear 10.3 - Release Notes source code.tar.gz | 2026-06-13 | 5.2 MB | |
| DiceBear 10.3 - Release Notes source code.zip | 2026-06-13 | 5.5 MB | |
| README.md | 2026-06-13 | 2.8 kB | |
| Totals: 3 Items | 10.7 MB | 0 | |
For 10.3 we searched public code on GitHub to find which language was calling the DiceBear API the most without a native library of its own. The answer was Dart, mostly from Flutter apps: DiceBear now speaks Dart 🎯
That makes six official implementations: JavaScript, PHP, Python, Rust, Go, and now Dart. The API is the same in all of them, and the same seed and style definition produce byte-identical SVGs everywhere.
🎯 Dart Support
DiceBear is now available as a Dart package (Dart 3.4+), and it runs in Flutter apps too. As with the other languages, you need two packages: the core library dicebear_core and the avatar style definitions dicebear_styles. Each style is a string constant in its own library, so a compiled app only embeds the styles it actually imports.
- https://www.dicebear.com/how-to-use/dart-library/
- https://pub.dev/packages/dicebear_core
- https://pub.dev/packages/dicebear_styles
Example:
:::sh
dart pub add dicebear_core
dart pub add dicebear_styles
:::dart
import 'package:dicebear_core/dicebear_core.dart';
import 'package:dicebear_styles/lorelei.dart';
final style = Style.parse(lorelei);
final avatar = Avatar(style, {
'seed': 'Felix',
// ... other options
});
final svg = avatar.svg;
🧩 The same Avatar(style, …) call everywhere
Dart, Rust, and Go already required you to wrap a definition in a Style before building an avatar. With this release the JavaScript, PHP, and Python libraries move the same way, so every port now constructs an avatar with the same Avatar(style, options) call.
Passing a raw style definition straight to Avatar is therefore deprecated in JavaScript, PHP, and Python. Wrap it in a Style first:
:::js
import { Style, Avatar } from '@dicebear/core';
import lorelei from '@dicebear/styles/lorelei.json' with { type: 'json' };
const style = new Style(lorelei);
const avatar = new Avatar(style, { seed: 'Felix' });
The old definition input still works and renders identically, but it now emits a deprecation warning (a one-time console.warn in JS, E_USER_DEPRECATED in PHP, DeprecationWarning in Python) and will be removed in v11. Building the Style once also lets you reuse it across many avatars instead of re-validating the definition every time.
To make that wrapping step shorter, PHP and Python gained a constructor that takes a raw JSON string directly:
- PHP:
Style::fromJson($json) - Python:
Style.from_json(json)
No more separate json_decode(..., true) or json.loads(...) call. Malformed JSON raises the language's native parse error, and an invalid definition raises the usual StyleValidationError. This mirrors Style::from_str in Rust and Style.parse in Dart.