Supabase Realtime - difference between subscribe() and channel()

309 views Asked by At

The realtime docs overview shows this method to subscribe to changes:

// Initialize the JS client
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY)

// Create a function to handle inserts
const handleInserts = (payload) => {
  console.log('Change received!', payload)
}

// Listen to inserts
const { data: todos, error } = await supabase.from('todos').on('INSERT', handleInserts).subscribe()

However, in the usage guide for Postgres Changes, there is a completely different method:

supabase
    .channel('schema-db-changes')
    .on(
      'postgres_changes',
      {
        event: '*',
        schema: 'public',
      },
      (payload) => console.log(payload)
    )
    .subscribe()

And in fact, I can't seem to find the first method anywhere else. How are they different? When should each be used? Thanks.

1

There are 1 answers

0
dshukertjr On BEST ANSWER

Thanks for finding this. The first method is an old deprecated method, and does not exist in the current client libraries. You should use the second method. I will update the docs.