Releases: PocketBaseExtended/PocketbaseExtended
1.0.0
Changelog
[1.0.0] - 2026-03-18
Overview
v1.0.0 is a complete rewrite of the library, previously known as PocketbaseArduino. The API has been significantly expanded with a structured response type, a full authentication system, new endpoints, and a multi-file architecture. Existing v0.x sketches remain source-compatible via a typedef alias.
Breaking Changes
- Library renamed from
PocketbaseArduinotoPocketbaseExtended. Update your#includeand constructor. APocketbaseArduinotypedef alias is retained — existing sketches still compile without changes. - Header includes removed from sketch requirement.
<ESP8266HTTPClient.h>,<BearSSLHelpers.h>, and<WiFiClientSecure.h>are now included internally. Remove them from your sketches. - Debug logging is now off by default. Call
pb.setDebug(true)to re-enable it.
New Features
PBResponse — Structured Response Type
All Ex methods return a PBResponse struct instead of a raw String:
struct PBResponse {
bool ok; // true when HTTP status is 2xx
int statusCode; // 0 if the connection itself failed
String body; // raw JSON response body
String error; // human-readable error description on failure
};Authentication
| Method | Description |
|---|---|
authWithPassword(identity, password) |
Authenticate with email/username + password. JWT stored automatically. |
authRefresh() |
Exchange the current token for a fresh one. Useful on long-running devices. |
setAuthToken(token) |
Manually restore a token (e.g. from flash storage). |
getAuthToken() |
Read the currently stored token. |
clearAuthToken() |
Remove the stored token (effective logout). |
All requests automatically include Authorization: Bearer <token> once authenticated.
Ex Variants for All Record Methods
Every record method now has an Ex counterpart returning PBResponse:
Convenience (String) |
Extended (PBResponse) |
|---|---|
getOne() |
getOneEx() |
getList() |
getListEx() |
create() |
createEx() |
update() |
updateEx() |
deleteRecord() |
deleteRecordEx() |
New Methods
update()/updateEx()—PATCHpartial record update. Was missing in v0.x.authRefresh()— Token refresh without re-entering credentials.checkHealth()—GET /api/healthconnectivity probe. No collection needed.getFileUrl(recordId, filename, thumb?)— Builds a PocketBase file attachment URL without making an HTTP request.
New Query Parameters
getOne/getOneEx and getList/getListEx now accept:
| Parameter | Description |
|---|---|
expand |
Comma-separated relation fields to auto-expand, e.g. "author,tags.name" |
fields |
Comma-separated fields to return, e.g. "id,title,created" |
skipTotal |
Pass "1" to omit totalItems/totalPages for faster list queries |
Configuration
| Method | Default | Description |
|---|---|---|
setTimeout(ms) |
10000 |
HTTP request timeout in milliseconds |
setInsecureTLS(bool) |
true |
Skip TLS cert verification. Set false in production. |
setDebug(bool) |
false |
Print URLs, status codes, and bodies to Serial |
Bug Fixes
getListquery parameter mapping fixed. In v0.x,skipTotalwas incorrectly written as the filter value, corrupting query strings when both were used. All parameters now map correctly.
Internal Changes
- Split into dedicated source files:
PocketbaseTransport.cpp,PocketbaseAuth.cpp,PocketbaseRecords.cpp - Single unified HTTP dispatcher handles GET, POST, PATCH, and DELETE
baseUrltrailing slash normalisation handled internally
Migration from v0.x
| v0.x | v1.0.0 |
|---|---|
#include <PocketbaseArduino.h> |
#include <PocketbaseExtended.h> |
PocketbaseArduino pb(...) |
PocketbaseExtended pb(...) — old name still compiles as alias |
| Manual platform header includes | Remove — included internally |
All methods return String |
Convenience variants still return String; use Ex variants for full response |
No update() |
update() / updateEx() added |
| No authentication | Full auth system added |
| Debug always on | Off by default — pb.setDebug(true) to enable |
getList skipTotal/filter bug |
Fixed |
What's Changed
Full Changelog: 0.4.0...1.0.0
0.4.0
🚀PocketbaseExtended 0.4.0
Changes
- renamed
PocketbaseArduinotoPocketbaseExtendedin compliance to Arduino library name specifications - add
examplesfolder - add
library.propertiesconfiguration
What's next?
- Improve documentation
- add
create()function - improve syntax for other body parameters
Wanna know what Pocketbase is?: https://pocketbase.io/
Full Changelog: 0.3.5...0.4.0
0.3.5
🚀PocketbaseArduino 0.3.5
Changes
- Fixed README typos
- add
deleteRecord()documentation - Updated README!
What's next?
- Improve documentation
- add
create()function - improve syntax for other body parameters
Wanna know what Pocketbase is?: https://pocketbase.io/
What's Changed
Full Changelog: 0.3.1...0.3.5
0.3.1
🚀PocketbaseArduino 0.3.1
Changes
- Add
deleteRecord()function - Updated README!
record = pb.collection("notes").deleteRecord("50p6wpaeu4h5j9x");What's next?
- Improve documentation
- add
create()function - improve syntax for other body parameters (having to place nullptr works for now, but is very inconvenient for developers)
// current implementation
String record = pb.collection("websites").getOne("1", "websites");
// "wtf i need to place nullptr just because its optional?" - some random dev
String record = pb.collection("websites").getOne("1", nullptr);
....
// and instead use
String record = pb.collection("websites").getOne("1").expand("websites");chain methods is makes it much more flexible in terms of how developers will write the syntax and using this library (hopefully 😀)
Wanna know what Pocketbase is?: https://pocketbase.io/
What's Changed
Full Changelog: 0.2.0...0.3.1
0.2.0
🚀PocketbaseArduino 0.2.0
What's Changed?
- Add
getList()function
pb.collection("notes").getList("page", "perPage", "sort", "filter", "skipTotal", "expand", "fields");- Improved function for
GETRequestto support for both ESP8266 and ESP32 (needs further testing!!)
What's next?
- Improve documentation
- add
create()function - improve syntax for other body parameters (having to place nullptr works for now, but is very inconvenient for developers)
// current implementation
String record = pb.collection("websites").getOne("1", "websites");
// "wtf i need to place nullptr just because its optional?" - some random dev
String record = pb.collection("websites").getOne("1", nullptr);
....
// and instead use
String record = pb.collection("websites").getOne("1").expand("websites");chain methods is much more flexible in terms of how developers will write syntax (hopefully 😀)
Wanna know what Pocketbase is?: https://pocketbase.io/
Full Changelog: https://github.com/jeoooo/PocketbaseArduino/commits/0.1.0
What's Changed
- separated expand and fields to a chain method by @jeoooo in #1
- implemented getList function by @jeoooo in #2
New Contributors
Full Changelog: 0.1.0...0.2.0
0.1.0
🚀PocketbaseArduino 0.1.0
Changes
- Support for
httpsandhttprequests. Forhttprequests please use the following commands to setup Pocketbase on your local machine.
./pocketbase serve --http="YOUR_IP_ADDRESS:8090"- Add PocketbaseArduino initialization
PocketbaseArduino pb("POCKETBASE_BASE_URL"); - Add PocketbaseArduino
getOne()function
PocketbaseArduino pb("POCKETBASE_BASE_URL");
String record = pb.collection("collectionName").getOne("record_id");- Add initial implementation PocketbaseArduino
getList()function
PocketbaseArduino pb("POCKETBASE_BASE_URL");
String result = pb.collection("notes").getList("1", "10", "createdAt", "category=important", "authors", "title,body");What's next?
- Implement other CRUD operations
- Update README
- Documentation Website
- Add Contributing guidelines
Wanna know what Pocketbase is?: https://pocketbase.io/
Full Changelog: https://github.com/jeoooo/PocketbaseArduino/commits/0.1.0