Skip to content

Magic IndexedDB v2.0.0-alpha1 Release Notes

Latest
Compare
Choose a tag to compare
@magiccodingman magiccodingman released this 28 Mar 16:39
· 24 commits to master since this release

🚀 Magic IndexedDB A New Era

The First Official Drop of Version 2 – A New Era Begins
NuGet: Magic.IndexedDb v2.0.0-alpha6
Docs: sayou.biz/Magic-IndexedDB-Index

IMPORTANT

This is an alpha release. There is ~94 unit tests on the current LINQ to IndexedDB code that're all passing. But everything from the LINQ to the basic CRUD operations have been heavily altered. This is being released under the understanding that it seems stable, but that this is the very first launch of v2.0.

HotFixes

  • alpha2 - Resolves issues with static non mapped variables within magic table class.
  • alpha3 - Changed service from Singleton to Scoped for resolving Blazor Server issues with no WASM down sides.
  • alpha4 - @yueyinqiu changes to repair access to disposed objects in Blazor Server and resolving warnings.
  • alpha5 - @yueyinqiu changes to fix delete item function call.
  • alpha6 - Fixed bulk delete.

⚠️ Heads Up: This is NOT a regular update. This is a full-blown evolution.

Magic IndexedDB v2.0.0-alpha1 marks the end of the v1.0 era and the birth of something entirely new. The codebase, architecture, query engine, and capabilities have been rebuilt from the ground up. If you're expecting minor enhancements—prepare to have your mind blown.


🔥 What’s New (At a Glance)

  • All-New Query Engine

    • Not a rewrite. A reinvention.
    • No more loading entire datasets into memory.
    • Every query is streamed, optimized, and intentionally executed.
  • True LINQ to IndexedDB — for the First Time Ever

    • Full translation of LINQ expressions into native IndexedDB operations.
    • Supports deeply nested && / || logic.
    • Real-time intent translation across all frameworks.
  • Universal Predicate Translation Layer

    • Translates LINQ expressions into a cross-framework, framework-agnostic query format.
    • Seamlessly handles logic flattening, dynamic nesting, and optimization without reflection.
  • Streaming, Not Loading

    • Data is never loaded into memory unless explicitly requested.
    • AsAsyncEnumerable() and optimized cursor streams make even massive datasets feel lightweight.
  • Syntax You’ve Never Seen Before in IndexedDB

    • StartsWith, Contains, complex null checks, .Value parsing on nullable types.
    • Nested object support, DateTime range translation, and more — natively translated.
  • Interface-Enforced Query Safety

    • Skip before Take? Not allowed.
    • Cursor-only logic? Explicit.
    • Indexed queries? Auto-optimized or enforced via smart interfaces.
  • Deep Query Magic

    • Flattened predicate operations.
    • Auto-index fallback detection.
    • Combined index optimizations.
    • True FirstOrDefault, LastOrDefault, pagination support, and so much more.

💣 Breaking Changes

  • This is a hard reset of the library's API surface.
    • v2.0.0 uses completely different syntax and architecture than v1.0.x.
    • Existing codebases will need to migrate.
    • Don’t worry—we’ve got you covered with new docs:
      👉 Migration Guide & LINQ Docs

🛠️ Still In Progress

  • Migration System Refactor
    A total overhaul of the migration pipeline is underway. For now:
    • The v1.x migration system still works.
    • A new, smarter system will be released in the coming updates.

⚡ Why This Matters

This isn’t just the next version of Magic IndexedDB —
this is the first true intent-based, LINQ-to-IndexedDB engine in the world.

You're not writing queries. You're expressing truth, and the engine takes care of the madness beneath.

There is no IndexedDB library like this in the entire Blazor ecosystem — or anywhere, really.


🧠 Before You Dive In

Make sure to check the following:

  • 📚 Full Setup Docs
  • 🧭 Learn the new Query<T>() system
  • ⚙ Understand indexed vs. cursor queries
  • ✅ Read the "Ordering & Pagination" section (IndexedDB is weird—Magic makes it sane)

🧪 Feedback Welcome

This is an alpha drop — but it’s already miles ahead of anything else.
Your feedback will help refine the final shape of v2.0.


🧙 Closing Words

The simple goal of bringing IndexedDB to Blazor turned into the first LINQ to IndexedDB framework to exist in this capacity for any language. This library will be opening up to additional programming communities in the future. But for now, Blazor developers gets the first drop.