Slide 1

Slide 1 text

What’s new in Firebase Google Developer Expert in Firebase Jirawat Karanwittayakarn Firebase Dev Day 2023 GDG Bangkok Firebase Thailand Organized by

Slide 2

Slide 2 text

#FirebaseDevDay2023 Help developers succeed by making it easy to build and grow apps Our Mission

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

#FirebaseDevDay2023 Survey 2023 Firebase Thailand

Slide 5

Slide 5 text

#FirebaseDevDay2023 Firebase services Thai developers use in 2023

Slide 6

Slide 6 text

#FirebaseDevDay2023 Platforms Thai developers use with Firebase in 2023

Slide 7

Slide 7 text

#FirebaseDevDay2023 Firebase plans Thai developers use in 2023 Blaze Plan (Pay as you go) Spark Plan (No cost)

Slide 8

Slide 8 text

#FirebaseDevDay2023 Accelerate app development Run your app

Slide 9

Slide 9 text

Accelerate app development

Slide 10

Slide 10 text

#FirebaseDevDay2023

Slide 11

Slide 11 text

#FirebaseDevDay2023

Slide 12

Slide 12 text

#FirebaseDevDay2023 COUNT() function PREVIEW New!

Slide 13

Slide 13 text

#FirebaseDevDay2023 COUNT() aggregation const collectionRef = db.collection('cities'); const query = collectionRef.where('state', '==', 'CA'); const snapshot = await query.count().get(); console.log(snapshot.data().count);

Slide 14

Slide 14 text

#FirebaseDevDay2023

Slide 15

Slide 15 text

#FirebaseDevDay2023 Scalable BaaS New!

Slide 16

Slide 16 text

#FirebaseDevDay2023 Removing hard limits 1.No maximum reads per second. 2.No maximum writes per second. 3.No maximum concurrent, real-time, connections Cloud Firestore

Slide 17

Slide 17 text

#FirebaseDevDay2023

Slide 18

Slide 18 text

#FirebaseDevDay2023 Time To Live New!

Slide 19

Slide 19 text

#FirebaseDevDay2023

Slide 20

Slide 20 text

#FirebaseDevDay2023 Projects Document project_id: 111 user: “sparky”, status: “not_started” Document project_id: 222 user: “amy”, status: “complete” Document project_id: 333 user: “bob”, status: “complete” Document project_id: 444 user: “alice”, status: “dropped” Document project_id: 111 user: “sparky”, status: “in_progress” Document project_id: 444 user: “alice”, status: “dropped” const q = query(projectsRef, or(where('user', '==', 'sparky'), where('status', '!=', 'complete') ) );

Slide 21

Slide 21 text

#FirebaseDevDay2023 OR queries New!

Slide 22

Slide 22 text

#FirebaseDevDay2023 Combination of OR and AND operations const q = query(collection(db, "cities"), and( where('state', '==', 'CA'), or( where('capital', '==', true), where('population', '>=', 1000000) ) ));

Slide 23

Slide 23 text

#FirebaseDevDay2023 Next.js

Slide 24

Slide 24 text

#FirebaseDevDay2023

Slide 25

Slide 25 text

#FirebaseDevDay2023 Support for dynamic frameworks PREVIEW

Slide 26

Slide 26 text

#FirebaseDevDay2023

Slide 27

Slide 27 text

#FirebaseDevDay2023

Slide 28

Slide 28 text

#FirebaseDevDay2023 +

Slide 29

Slide 29 text

#FirebaseDevDay2023 MFA OIDC & SAML Blocking Functions Audit & Activity logging New!

Slide 30

Slide 30 text

#FirebaseDevDay2023 Blocking Functions import {identity} from "firebase-functions/v2"; export const blockauth = identity.beforeUserCreated((event) => { });

Slide 31

Slide 31 text

#FirebaseDevDay2023 Blocking Functions import {identity} from "firebase-functions/v2"; export const blockauth = identity.beforeUserCreated((event) => { const email = event?.data?.email || ""; // Ensure only google.com emails can log into the changelog app if (!(email.includes("@google.com"))) { throw new identity.HttpsError( "permission-denied", "Only @google.com are allowed to register."); } });

Slide 32

Slide 32 text

#FirebaseDevDay2023 Cross Service Rules New!

Slide 33

Slide 33 text

#FirebaseDevDay2023 service firebase.storage { match /b/{bucket}/o { match releases/{releaseId}/file/{fileId} { // Release authors can create, update, and delete files // Universally readable allow read: if true; } } } allow write: if firestore.get(/databases/(default)/documents/releases/$(releaseId)). data.author.uid == request.auth.uid;

Slide 34

Slide 34 text

#FirebaseDevDay2023

Slide 35

Slide 35 text

#FirebaseDevDay2023 Realtime Database Cloud Firestore Hosting Cloud Storage Authentication GA GA GA GA GA

Slide 36

Slide 36 text

#FirebaseDevDay2023 Firebase App Check

Slide 37

Slide 37 text

#FirebaseDevDay2023 Firebase App Check Already supported New!

Slide 38

Slide 38 text

#FirebaseDevDay2023

Slide 39

Slide 39 text

#FirebaseDevDay2023

Slide 40

Slide 40 text

#FirebaseDevDay2023

Slide 41

Slide 41 text

Manage Marketing with Mailchimp Run Subscription Payments with Stripe Search with Algolia Resize Images Translate Text Trigger Email Export Collections to BigQuery Shorten URLs Distributed Counter Delete User Data Send Messages with MessageBird Send Messages with Twilio Make Payments with Google Pay Snapchat Sticker Generator Search Firestore with Typesense Enable In-App Purchases with RevenueCat Authenticate with Stream Feeds Track Shipping Labels with ShipEngine Analyze Toxicity with Perspective API Search with Elastic App Search

Slide 42

Slide 42 text

#FirebaseDevDay2023 Extensions Marketplace New!

Slide 43

Slide 43 text

#FirebaseDevDay2023 Extensions.dev

Slide 44

Slide 44 text

#FirebaseDevDay2023 Extensions.dev

Slide 45

Slide 45 text

#FirebaseDevDay2023 New!

Slide 46

Slide 46 text

Run your app with confidence

Slide 47

Slide 47 text

#FirebaseDevDay2023

Slide 48

Slide 48 text

#FirebaseDevDay2023

Slide 49

Slide 49 text

#FirebaseDevDay2023 Support for Gradle Managed Devices New! +

Slide 50

Slide 50 text

#FirebaseDevDay2023 dependencies { classpath 'com.android.tools.build:gradle:8.0.0-alpha05' ... }

Slide 51

Slide 51 text

#FirebaseDevDay2023 testOptions { managedDevices { devices { device1 (com.google.firebase.testlab.gradle.ManagedDevice) { device = "Pixel 3" apiLevel = 30 } } } }

Slide 52

Slide 52 text

#FirebaseDevDay2023

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Download today!

Slide 55

Slide 55 text

Available in Beta!

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

#FirebaseDevDay2023

Slide 60

Slide 60 text

#FirebaseDevDay2023 Firebase Remote Config Today Fetch API Device asks the server for a new config Real-time Listener API Server tells a device there is a new config

Slide 61

Slide 61 text

#FirebaseDevDay2023 Real-time config

Slide 62

Slide 62 text

#FirebaseDevDay2023 Listen for updates in real-time remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { override fun onUpdate(configUpdate : ConfigUpdate) { if (configUpdate.updatedKeys.contains("welcome_message")) { remoteConfig.activate().addOnCompleteListener { displayWelcomeMessage() } } } override fun onError(error : FirebaseRemoteConfigException) { Log.w(TAG, "Config update error with code: " + error.code, error) } })

Slide 63

Slide 63 text

#FirebaseDevDay2023 Real-time config

Slide 64

Slide 64 text

Better Together

Slide 65

Slide 65 text

#FirebaseDevDay2023 Follow us fb.com/FirebaseThailand fb.com/groups/FirebaseDevTH youtube.com/FirebaseThailand medium.com/FirebaseThailand