DEV Community

Guillaume Faas
Guillaume Faas

Posted on

Supabase .NET DevLog #6

Welcome to our weekly log for the Supabase .NET SDK 🎉

Following the monorepo migration, I started working towards the new major v8.0.0:

  • Upgraded all packaged to netstandard2.1
  • Enabled lockstep versioning to v8.0.0
  • Reworked the full package management, to guarantee uniform dependencies
  • Broader improvements on code styling, GitHub Actions, and repository structure
  • Migrated from Newtonsoft.Json to System.Text.Json for all packages
  • Started writing a proper migration guide for v8.0.0 (WIP)

If you want to stay tuned with what's coming in v8.0.0, have a look at this PR.

Priori to the System.Text.Json migration, I implemented a full suite of approval tests to guarantee that serialization didn't change. The codebase didn't have any, and we can't tackle such a migration without a safety net. If you wonder what Approval Testing is, just le me know. TLDR: Tests create a snapshot, and they keep getting evaluated against that snapshot. It guarantees models and queries keep producing the same output 😉

On top of all that, I created a proper quality gate for the SDK. It is executed by GitHub Actions and potentially local agents. As it's a script, it is deterministic! 🎉
It guarantees that things do not get worse (aka. stay stale or get better):

  • All tests (Unit/Contract, Approval, E2E)
  • Modified code must comply with format/style/naming guidelines specified in .editorconfig
  • Number of warnings cannot increase (goal is to get to zero and enable TreatWarningsAsErrors solution-wide)
  • No vulnerabilities on dependencies

From now on, this will be a hard requirement for all contributions, including mine. You can picture this as enforcing the "boyscout rule" to the whole codebase.

Stay tuned for more.
Have a great day, and keep coding!

Top comments (0)