Repository navigation
v0.2.0
π Major Features - React/JS SDK Feature Parity
New Transaction System (tx namespace)
- β
Added fluent
txnamespace API for cleaner transactions (db.tx['entity'][id].update({})) - β
Implemented
transactChunk()method for transaction chunks - β
Added
merge()operation for deep nested object updates - β
Added
link()andunlink()operations for entity relationships - β
Implemented
lookup()references to reference entities by attributes instead of IDs
Advanced Query Operators
- β
Added comparison operators:
$gt,$gte,$lt,$lte,$ne - β
Added string pattern matching:
$like,$ilikewith wildcard support - β
Added array operations:
$contains,$size,$in,$nin - β
Added existence operators:
$exists,$isNull - β
Enhanced logical operators: improved
$and,$or,$notsupport
Room-based Presence System
- β
Added
joinRoom()API returning scopedInstantRoominstances - β Implemented room-specific presence operations (scoped to individual rooms)
- β
Added topic-based pub/sub messaging with
publishTopic()andsubscribeTopic() - β Complete room isolation - presence data separated between rooms
- β Backward compatible with existing direct room ID APIs
API Improvements
- β
Added
subscribeQuery()alias for reactive queries (matches React SDK) - β
Implemented
queryOnce()for one-time query execution - β
Added
getAuth()andsubscribeAuth()convenience methods - β Improved error handling and validation
π§ͺ Testing & Quality
- β 150 total tests passing (up from 118 tests)
- β Added comprehensive test suite for all new features
- β Performance testing for large datasets and query caching
- β Room-based presence system testing with isolation validation
π Bug Fixes & Performance Improvements
- β Fixed transaction conversion for real-time sync - transactions now properly convert to tx-steps with actual data instead of sending 0 steps
- β Fixed duplicate entity issue during sync - implemented deduplication logic to prevent locally-created entities from being re-applied during refresh-ok
- β
Fixed entity type resolution during sync - entities from server now properly stored with correct type (e.g.,
todos:idinstead ofunknown:id) - β Fixed delete synchronization between instances - implemented differential sync to detect and apply deletions when entities are missing from server responses, including handling empty entity lists
- β Fixed presence reactions not appearing in peer instances - implemented proper refresh-presence message handling to convert reaction data to visible UI reactions
- β Fixed cursors, typing indicators, and avatars not working in peer instances - implemented complete presence data detection and routing in refresh-presence messages to handle all presence types
- β Fixed avatars page showing only 1 user instead of both users - preserved local user's presence when processing refresh-presence messages to match React SDK behavior
- β Fixed avatar presence data extraction and room ID consistency - corrected nested data structure extraction from refresh-presence messages and unified room key format usage
- β Fixed typing indicators showing 'Someone' instead of actual user names - updated typing page to set initial presence with userName and display actual user names in typing indicators
- β
Added comprehensive hierarchical logging system - using
loggingpackage for better debugging and monitoring of sync operations - β Enhanced sync engine with proper attribute UUID mapping - transactions now use correct InstantDB attribute UUIDs instead of attribute names
π Documentation
- β Updated README with all new APIs and examples
- β
Created
ADVANCED_FEATURES.mdcomprehensive feature guide - β
Added
MIGRATION_GUIDE.mdfor upgrading existing code - β Updated example applications showcasing new room-based presence APIs
π± Example Applications Updated
- β Cursors demo updated to use room-based presence API
- β Reactions demo updated with room-scoped reactions
- β Typing indicators demo updated with room-scoped typing
- β Avatars demo updated with room-scoped presence
- β
Todos demo updated to showcase new
txnamespace API
π§ Breaking Changes
None! This release is fully backward compatible. All existing APIs continue to work.
π― Migration Path
- Immediate: New projects can use new APIs from day one
- Gradual: Existing projects can migrate incrementally at their own pace
- Optional: Migration provides better performance and developer experience but is not required