NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4331 most downloaded on pub.dev
Bones_API - A powerful API backend framework for Dart. It comes with a built-in HTTP Server, route handler, entity handler, SQL translator, and DB adapters.
Last release 4 days ago
04 Oct 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
355 releases · first in 2021
Dart 3.3.0 compatibility. - sdk: '>=3.3.0 <4.0.0' - data_serializer: ^1.1.0 - yaml_writer: ^2.0.0 - project_template: ^1.1.0 - hotreloader: ^4.2.0
Dart 3.3.0 compatibility.
sdk: '>=3.3.0 <4.0.0'
data_serializer: ^1.1.0
yaml_writer: ^2.0.0
project_template: ^1.1.0
hotreloader: ^4.2.0
ClassReflectionEntityHandler.getFields: optimize using reflection.getFieldsValues.
ClassReflectionEntityHandler.getFields: optimize using reflection.getFieldsValues.
async_events: ^1.1.0
reflection_factory: ^2.3.0
One column per quarter.
Added generateAddUniqueConstraintAlterTableSQL.
SQLGenerator:
generateAddUniqueConstraintAlterTableSQL.DBSQLAdapter:
_checkDBTablesImpl: Added check for missingReferenceConstraintsSQLs, missingUniqueConstraintsSQLs and missingEnumConstraintsSQLs.TableUniqueConstraint.EntityHandler:
getFieldsEnumTypes, getFieldsEntityTypes and getAllFieldsWithEntityAnnotation.DBException and TransactionErrorResolver.DBAdapterException:
previousError.DBPostgreSQLAdapter:
resolveError: pass previousError.RecursiveToString.RecursiveToString interface to EntityFieldInvalid and TransactionOperation.Added index for relationship tables.
DBSQLMemoryAdapter:
InitializationStatus:
_initializingTime and _initializedTime.Fix DBPostgreSQLAdapter._parseConstraint.
DBPostgreSQLAdapter._parseConstraint.APIModuleProxyCallerListener: fix resolveResponse for null response.
APIModuleProxyCallerListener: fix resolveResponse for null response.Added toJsonEncodable (moved from APIServer).
EntityAccessRules:
toJsonEncodable (moved from APIServer).New APIModuleProxyCallerListener base class.
APIModuleProxyDirectCaller:
responsesAsJson.reflection_factory: ^2.2.8
New TableConstraint, TablePrimaryKeyConstraint and TableEnumConstraint.
DBAdapterCapability:
constraintSupport.TableScheme:
constraints.TableConstraint, TablePrimaryKeyConstraint and TableEnumConstraint.SQLGenerator:
generateAddEnumConstraintAlterTableSQL.MapAsCacheExtension:
_checkCachedEntry to handle TimedMap.checkEntry._resolveRequestParameterValueAsBytes: allow hex:... format.
APIRouteBuilder:
_resolveRequestParameterValueAsBytes: allow hex:... format.Better error message for null getRepositoryAdapterByTableName and getEntityRepositoryByType.
getRepositoryAdapterByTableName and getEntityRepositoryByType.- New DateTimeToTimeExtension: - New toTime. - reflection_factory: ^2.2.7 - coverage: ^1.7.2
New DateTimeToTimeExtension:
toTime.reflection_factory: ^2.2.7
coverage: ^1.7.2
- shelf_gzip: ^4.1.0
- APIServerWorker: - Improve error 500 logging.
APIServerWorker:
added resolveBodySync -APIRequest, APIResponse and Transaction.
APIServer:
resolveBodySync
-APIRequest, APIResponse and Transaction.disposeAsync.APIServerWorker:
_processAPIResponse: optimize Response resolution.APIResponse.disposeAsync instead of .dispose.-APIRequest, APIResponse and Transaction.
-APIRequest, APIResponse and Transaction.
dispose.APIServerWorker._processAPIResponse: call APIResponse.dispose.DBMySQLAdapter and DBPostgreSQLAdapter:
DBMySQLAdapter and DBPostgreSQLAdapter:
bones_api.log.max_file_length, bones_api.log.max_rotation_files.
LoggerHandlerIO:
APIPlatform properties:
bones_api.log.max_file_length, bones_api.log.max_rotation_files.LogFileRotate:
needRotation.APIPlatform:
getPropertyAs, propertiesKeys, setProperty and applyProperties.DBAdapter:
isConnectionValid: added parameter checkUsage.Added properties: cacheStaticFilesResponses, staticFilesCacheMaxMemorySize and staticFilesCacheMaxContentLength.
APIServerConfig:
cacheStaticFilesResponses, staticFilesCacheMaxMemorySize and staticFilesCacheMaxContentLength.APIConfig:
getAs and getPath: also tries to parse the value to the returned type.- New APIServerResponseCache.
APIServerResponseCache.printZoneError: reduce print calls.
printZoneError: reduce print calls.
shared_map: ^1.1.7
petitparser: ^6.0.2
- reflection_factory: ^2.2.5 - shared_map: ^1.1.6
Added _resolveTransaction: improve current Transaction resolution.
EntityHandler:
_resolveTransaction: improve current Transaction resolution.DBSQLMemoryAdapter:
catchFromPool/releaseIntoPool to simulate connection/context usage
and indicate heavy use of connections in tests.generateCreateTableSQL: fix CONSTRAINT of fields with EntityReference.
SQLGenerator:
generateCreateTableSQL: fix CONSTRAINT of fields with EntityReference.- APIRepository: - Expose countByQuery.
APIRepository:
countByQuery.- lints: ^3.0.0 - Apply new lints fixes. - shared_map: ^1.1.5
Ensure that _sessionSet (APISessionSet) is using _sharedStoreField.
APISecurity:
_sessionSet (APISessionSet) is using _sharedStoreField.APITokenStore:
_resolveSharedTokensByUsername from constructor, to fully pre-initialize it.shared_map: ^1.1.4
- shared_map: ^1.1.1
Fix name and version resolution
APIServerConfig:
name and version resolutionHolds the configuration need for APIServer and APIServerWorker.
new APIServerConfig:
APIServer and APIServerWorker.Created an abstract base class _APIServerBase for APIServer and APIServerWorker.
start and stop methods, delegating to startImpl and stopImpl.isStarting to determine if the server is in the process of starting.APIServer
APIServerWorker instances using isolates. Main worker starts normally.New APIServerWorker to handle multi-worker APIServer.
_processWhileInitializing to handle API requests while the server is still initializing,
including a timeout for initialization.APIRequest:
transactions field, automatically populated with all the Transactions of the request.APIRequest and APIResponse:
description parameter.Transactions duration to Server-Timing.APIRoot:
isIsolateCopy.DBAdapterCapability:
multiIsolateSupport;DBAdapter
auxiliaryMode and enableAuxiliaryMode.DBSQLMemoryAdapter and DBObjectMemoryAdapter don't support auxiliaryMode, since they don't support multiIsolateSupport.SQLGenerator.generateCreateTableSQL: skip annotated hidden fields.
APISessionSet: using SharedStoreField and SharedMapField to store the the sessions.
New APITokenStore:
Isolates.shared_map: ^1.0.10
args_simple: ^1.1.0
coverage: ^1.7.1
vm_service: ^13.0.0
Simple workaround for Kernel/Fasta issue https://github.com/dart-lang/sdk/issues/54062
sdk: '>=3.2.0 <4.0.0'
reflection_factory: ^2.2.4
Fix cached file parent directory creation.
DBObjectGCSAdapter:
APIConfig: fix resolution of variables keys.
APIConfig: fix resolution of variables keys.
DBAdapter:
populateSourceVariables: allow variables in populate source.Improved related tests.
data_serializer: ^1.0.12
hotreloader: ^4.1.0
DBSQLMemoryAdapter._findFieldsReferencedTables: Fix referenced field name.
DBSQLMemoryAdapter._findFieldsReferencedTables: Fix referenced field name.Fix _findFieldsReferencedTables:
APIConfig: added field test.DBSQLMemoryAdapter:
_findFieldsReferencedTables:
DBSQLAdapter:
_checkDBTableScheme:
checkDBTableField:
EntityReferenceList fields.EntityReferenceBase: added isNotNull.
EntityReferenceBase: added isNotNull.NullEntityReferenceBaseExtension and NullEntityReferenceExtension.APIModuleProxy: added ignoreMethods.
APIModuleProxy: added ignoreMethods.Added EntityHandler.constructors.
Added EntityHandler.constructors.
EntityHandler._createFromMapDefaultImpl: improve UnsupportedError message.
statistics: ^1.0.26
data_serializer: ^1.0.11
docker_commander: ^2.1.5
postgres: ^2.6.3
archive: ^3.4.5
collection: ^1.18.0
dependency_validator: ^3.2.3
coverage: ^1.6.4
test: ^1.24.7
New factory constructor fetchTypes.
EntityResolutionRules:
fetchTypes.docker_commander: ^2.1.2
New abstract class DBConnectionWrapper:
New abstract class DBConnectionWrapper:
DBMySqlConnectionWrapper and PostgreSQLConnectionWrapper.Pool
createPoolElementForced (non-nullable)._catchFromPopulatedPool: now can return null.DBAdapter:
connectionInactivityLimit.isConnectionValid:
MySQL and PostgreSQL: checking connection.isInactive.Using Graph to resolve the correct order of CreateTableSQL and to populate samples.
Checking SQLBuilder order and warning invalid orders.
EntityReferenceList.fromJson:
APIRouteBuilder._apiMethodInvocation:
FutureOr<APIResponse> or return an APIResponse.error.graph_explorer: ^1.0.2
ascii_art_tree: ^1.0.6
docker_commander: ^2.1.1
petitparser: ^6.0.1
archive: ^3.3.9
getTableScheme, getTableSchemeImpl and getTableSchemeForEntityRepository:
getTableScheme, getTableSchemeImpl and getTableSchemeForEntityRepository:
contextID parameter to allow multiple calls with the
same contextID to share internal caches.DBMySQLAdapter and DBPostgreSQLAdapter:
getTableScheme and getRepositoriesSchemes
with use of contextID and internal shared caches.async_extension: ^1.2.5
_checkDBTableScheme: ignore fields annotated with EntityField.hidden.
DBSQLAdapter:
_checkDBTableScheme: ignore fields annotated with EntityField.hidden.Integrate LetsEncrypt logger with APIServer logger.
APIServer:
LetsEncrypt logger with APIServer logger.bestOrder: fix dependencies order of table relationships.
SQLBuilderListExtension:
bestOrder: fix dependencies order of table relationships.EntityRepositoryProviderExtension:
storeAllFromJson: store by allRepositories orders.- async_extension: ^1.2.3 - docker_commander: ^2.1.0
New FutureOrAPIResponseExtension and FutureAPIResponseExtension.
New FutureOrAPIResponseExtension and FutureAPIResponseExtension.
async_extension: ^1.2.2
reflection_factory: ^2.2.0
Better resolution of MimeType when content-type header is not provided.
APIServer:
_resolvePayload:
MimeType when content-type header is not provided.MimeTypes: use charsetEncoding to decode the String.Uint8List.async_extension: ^1.2.0
data_serializer: ^1.0.10
gcloud: ^0.8.11
test: ^1.24.6
vm_service: ^11.9.0
resolveValueToCompatibleType: force DateTime.toUtc() to avoid DB adapter issues.
ConditionSQLEncoder:
resolveValueToCompatibleType: force DateTime.toUtc() to avoid DB adapter issues.Transaction
waitOperation.
timeout parameter.EntityRepository:
ensureStored implementations (DBRelationalEntityRepository, DBEntityRepository, IterableEntityRepository):
store of the same entity in the same [Transaction].
RecursiveRelationshipLoopError if a loop is detected.EntityFieldInvalid:
operation.Added missing APIRequestMethod.HEAD.
EntityHandler:
_validateFieldValueImpl.APIDBModule:
HTMLInput).LogFileRotate:
needRotation for a log file not created yet.async_events: ^1.0.12
stream_channel: ^2.1.2
gcloud: ^0.8.10
postgres: ^2.6.2
petitparser: ^5.4.0
Better alias naming for _ref and _rel tables.
ConditionElement:
parent.isInner.EncodingContext:
resolveEntityAlias:
_ref and _rel tables.DBRelationalEntityRepository._getCachedEntitiesRelationships:
EntityReferenceList and EntityReference values.New LogFileRotate (used by default when logging to files).
APIServer: log Response.internalServerError (error 500 responses) as severe.
shelf_letsencrypt: ^1.2.1
http: ^1.1.0
Update bones_api_template.tar.gz.
bones_api_template.tar.gz.encodeEncodingValueList: fix SQL encoding of empty list as ( null ) and not ( ).
ConditionEncoder:
encodeEncodingValueList: fix SQL encoding of empty list as ( null ) and not ( ).logErrorMessage and logDBMessage: fix resolution of MessageLogger.
logErrorMessage and logDBMessage: fix resolution of MessageLogger.Allow log.all, log.error and log.db to files.
log.all, log.error and log.db to files.DBAdapter:
boot hierarchy.registerAsDbLogger loggers of implementations of DBAdapter.LoggerHandler:
resolveLogDestiny and logBuffered.DBAdapterException:
operation.Use internal Quick Sort algorithm for better pivot selection (producing a better order of elements).
SQLBuilderListExtension:
bestOrder:
Ignores framework methods from APIModule that could be interpreted as routes.
APIRouteBuilder.apiMethod:
APIModule that could be interpreted as routes.SQLBuilder:
mainTable getter.
sorteByName).resource_portable: ^3.1.0
collection: ^1.17.2
test: ^1.24.4
vm_service: ^11.8.0
Initializable._finalizeInitializationWithDeps:
Initializable._finalizeInitializationWithDeps:
Initializable: wait for still initializing dependencies.InitializationChain._completeCircularDependency:
Completer is already completed before call complete.ConditionSQLEncoder.keyFieldReferenceToSQL: throw exception when a field can't by found in table.
GroupConditionOR.cast.ConditionSQLEncoder.keyFieldReferenceToSQL: throw exception when a field can't by found in table.Added APIModuleProxyCaller and APIModuleProxyDirectCaller.
APIModuleProxyCaller and APIModuleProxyDirectCaller.APIModuleHttpProxy to APIModuleProxyHttpCaller.Added StringUtils.toLowerCaseSimpleCached.
Added StringUtils.toLowerCaseSimpleCached.
Optimize Json.defaultFieldNameResolver.
Optimize FieldsFromMap.getFieldsValuesFromMap.
async_extension: ^1.1.1
reflection_factory: ^2.1.4
_onErrorZoneUncaughtError: get the error's Transaction and pass it to printZoneError as message.
New WeakList.
Added DBAdapter.instances.
Transaction:
_onErrorZoneUncaughtError: get the error's Transaction and pass it to printZoneError as message.Transaction.openInstances.canPropagate to indicated that a Transaction can have multiple operations.initTime, endTime and duration getters._onExecutionError: only logs and rethrows the error in the 1st error notification._abortImpl:
_transactionCompleter.complete instead of completeError to avoid issues with hidden error Zone.TransactionOperation:
initTime, endTime and duration getters.TransactionAbortedError:
abortError to error.abortStackTrace to errorStackTrace.Added APIRouteConfig.
APIRouteHandler.call: log response time.
DBMySQLAdapter and DBPostgreSQLAdapter.
minConnections and maxConnections from config.getTableSchemeImpl and getTableFieldsTypesImpl: fix releaseIntoPool and disposePoolElement behavior.DBEntityRepository: optimize _getRelationshipFields.
DBAdapter:
isTransactionWithSingleOperation.executeTransactionOperation: identify single operation transactions.createPoolElement: respect maxConnections with correct poolAliveElementsSize calculation.cancelTransactionResultWithError, throwTransactionResultWithErrorandresolveTransactionResult`.
openTransaction result resolution.Pool:
poolDisposedElementsCount to also count _invalidatedElementsCount._catchFromEmptyPool:
createPoolElement(force: true) if reached the limit and can't catch a reused element.InitializationStatus:
finalizing status.InitializationChain:
_isParent
initializable if it exists in the parent's tree.Initializable
_doInitializationImpl: allow circular initialization with timeout.lints: ^2.1.1
build_runner: ^2.4.5
_resolveEntitiesSubEntities: fix passing of parameter resolutionRules on special case.
DBEntityRepository
_resolveEntitiesSubEntities: fix passing of parameter resolutionRules on special case.args: ^2.4.2
Your coding agent can read these notes before it upgrades. Set up the MCP server →