v0.18.0
minitap-ai/mobile-usev0.18.0Oct 1, 2025by dswbx
Upgrading?
Release notes summary
Introduces three execution modes (UI-only, code-only, hybrid) with breaking changes to configuration property names, admin UI customizations, and media handling improvements including extended file previews.
Key Highlights
- Breaking change: `initialConfig` renamed to `config`
- Three execution modes: UI-only (default), code-only, and hybrid
- Admin UI customizations for headers, footers, custom components, and routes
- Media handling improvements with extended previews for PDF, text, and audio
- SQLite connection options including WAL mode
Breaking Changes
- Property name change from `initialConfig` to `config`
New Features
- UI-only mode for visual configuration
- Code-only mode for programmatic configuration
- Hybrid mode for development with visual config and production performance
- Admin UI customizations
- Media handling improvements
- Extended file previews
- SQLite connection options
- Externalized direct dependencies
- Cloudflare setup documentation
- S3 client service configuration
Full Release Notes
## Introducing modes: UI-only, code-only, hybrid (#249, #252, #253)
> [!WARNING]
> This is an intentionally breaking change if you were using `initialConfig`. Change this property name to `config` and it continues to work as previously (UI-only mode is the default).
The most requested feature has been configuring bknd only with code, and while the main goal of the project is to have a visually configurable backend, having the option to configure bknd with code makes perfect sense for 2 reasons:
1. you may be using bknd in a bigger context, and/or need higher precision which is only achievable if you can fully control bknd with code
2. you want to visually configure bknd while in development, and want the production instance to be read-only and as performant as possible
Because of this, bknd can now be executed in 3 modes:
* **UI-only**: This is the default mode, it allows visual configuration and saves the configuration to the database. Expects you to deploy your backend separately from your frontend.
* **Code-only**: This mode allows you to configure your backend programmatically, and define your data structure with a Drizzle-like API. Visual configuration controls are disabled.
* **Hybrid**: This mode allows you to configure your backend visually while in development, and uses the produced configuration in a code-only mode for maximum performance.
Read more about how to configure your preferred mode in the [modes section of the docs](https://docs.bknd.io/usage/introduction/#modes).
## Admin Customizations (#264, #265)
If you're rendering the Admin within your React Framework of choice, you can now customize certain aspects of it:
* add additional action items to the dropdowns to the user menu (top right), when the contents of an entity and when creating or updating an entity
* rendering a header or a footer when listing, creating or updating an entity
* rendering a custom component for an entities field (e.g. a custom rich text component)
* adding a custom route
See an example in the [Admin UI docs](https://docs.bknd.io/extending/admin/).
## Media handling improvements (#276)
Several improvements to how bknd handles media has been added, including improving various mime type handling, increasing the listing limits (in case your uploading many files to an entity) as well as extended previews: You can now see the contents of a PDF file in modal using your browsers built-in PDF reader, read the contents of text fields and play audio files. Additionally, attached files to an entity are now correctly cleaned up if the entity is deleted.
https://github.com/user-attachments/assets/7dddb12d-b5c2-46f4-91bc-b16082374c48
## SQLite Connection Options (e.g. WAL mode, #266)
When using the SQLite construct functions, you can now add a handler when the connection has been created. This allows to e.g. set the journal mode to WAL:
```ts
import { nodeSqlite, type NodeBkndConfig } from "bknd/adapter/node";
export default {
connection: nodeSqlite({
url: "file:data.db",
onCreateConnection: (db) => {
db.exec("PRAGMA journal_mode = WAL;");
},
}),
} satisfies NodeBkndConfig;
```
## Other Changes
* cli: externalize all direct dependencies to prevent being bundled by @dswbx in https://github.com/bknd-io/bknd/pull/247
* update docs: add `bknd.config.ts` example and clarify cloudflare setup by @dswbx in https://github.com/bknd-io/bknd/pull/260
* refactor: remove unique field validation from `EntityIndex` by @dswbx in https://github.com/bknd-io/bknd/pull/261
* fix: typegen: adjust field formatting and type name handling by @dswbx in https://github.com/bknd-io/bknd/pull/262
* fix: implement chunked request handling for cloudflare vite dev-fs plugin by @dswbx in https://github.com/bknd-io/bknd/pull/263
* fix: set s3 client service to s3 to produce correct headers required by minio by @dswbx in https://github.com/bknd-io/bknd/pull/275
**Full Changelog**: https://github.com/bknd-io/bknd/compare/v0.17.2...v0.18.0Related Repositories
public-apis/public-apis★ 491,635
A collective list of free APIs
NousResearch/hermes-agent★ 256,497
The agent that grows with you
yt-dlp/yt-dlp★ 200,890
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,800
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,717
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.