• bellsDoSing@lemm.ee
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    To add, edge functions (powered by deno) are one of the bigger pain points of supabase. At least that’s my own practical experience and the experience of quite a few others on their github (discussions and issues).

    In my current project, I started of optimistically (“Should be doable, they say you feel right at home coming from nodejs!”), tried rewriting some existing nodejs code and use edge functions just like your average nodejs powered serverless functions.

    But in the end, things just didn’t work out:

    • deno’s crypto module just wasn’t up to scratch yet re nodejs compatibility (for my rather humble needs)
    • supabase uses --no-npm flag re its use of “deno deploy runtime”, which means node: specifiers for imports aren’t supported
    • the fact that unlike for serverless functions, which update their runtime only once you yourself trigger a new deployment (e.g. nodejs on vercel), “deno deploy runtime” is continously being updated to latest version, which to me still feels pretty strange for production use, considering how serverless functions handle runtime updates.

    In the end I changed my architecture yet again, moved most of the code to an expressjs backend and only use edge functions as a kind of “tender” proxy layer with minimal dependencies (mostly just deno and some esm.sh imports; e.g. supabase-js).

    Don’t get me wrong, supabase overall is a great thing and they do many things well! I’m still using them going forward. But edge functions just have the potential for being such a pain point in a project and many have already wished for also having the option for “classic” serverless functions.

    • body_by_make@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      Yeah, I really wish they’d gone a different way, it’s rough. I think they went the way they did because of the control they have over the run time environment, the ability to disable so much like writing to disk through flags makes it really easy for them to “trust” the edge functions, but man deno is rough.