Slide 1

Slide 1 text

What’s New in Firebase GDE Firebase @jirawatee Jirawat Karanwittayakarn GDE Firebase @naluinui Somjintana Korbut

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

monthly active apps 3M+

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Run your app with confidence Accelerate app development

Slide 6

Slide 6 text

Accelerate app development

Slide 7

Slide 7 text

BETA

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Events NEW! BETA

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Events BETA

Slide 13

Slide 13 text

Events BETA

Slide 14

Slide 14 text

CFO

Slide 15

Slide 15 text

CFO Full text search in 3 steps 1. Setup TypeSense Cluster & Add schema 2. Install Extensions to sync data from Firestore 3. Write search UI ✨

Slide 16

Slide 16 text

Emulators BETA

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Environment variables NEW!

Slide 19

Slide 19 text

.env (.env.local .env.dev .env.prod)

Slide 20

Slide 20 text

process.env.VARIABLE

Slide 21

Slide 21 text

Store and access sensitive configuration NEW! Cloud Secret Manager

Slide 22

Slide 22 text

NEW! Cloud Functions v2 Public Preview

Slide 23

Slide 23 text

Cloud Build Cloud Run Eventarc Cloud Functions Generation 2

Slide 24

Slide 24 text

One request per instance Many requests per instance

Slide 25

Slide 25 text

Firebase Alerts Events Crashlytics App Distribution Billing

Slide 26

Slide 26 text

Changes and enhancements in Cloud Functions v2 ⚡Concurrency 🌐 Secure your callable and HTTP functions with a new CORS 🚨 Firebase Alerts events 🔌 Firebase Extension events ✔ Task Queue functions ⏳ Long-running in HTTP Functions (Up to 1 hour timeout) 🖥 Modern JavaScript (config functions globally, options objects, and modular imports)

Slide 27

Slide 27 text

NEW! PREVIEW Web Updates

Slide 28

Slide 28 text

Phones Desktops Wearables Thermostats TVs Laptops Tablets React, Angular, Vue, Next.js, Nuxt, Astro, Gatsby, Remix, and many more!

Slide 29

Slide 29 text

Firebase Deploy to the rescue naluinui-macbook$ firebase deploy

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

NEW! Data Viewer

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Slide notes: ● A user accessing an app on a variety of device types

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

of Flutter developers use Firebase 62%

Slide 36

Slide 36 text

Fully-supported Integration

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Updates for Flutter NEW!

Slide 39

Slide 39 text

import ‘package:firebase_crashlytics/firebase_crashlytics.dart’; // Initialize Firebase. await Firebase.initializeApp(); Firebase Flutter X

Slide 40

Slide 40 text

recordFlutterFatalError (FlutterErrorDetails flutterErrorDetails ; recordError(dynamic exception, StackTrace? stack, {dynamic reason, Iterable information = const [], bool? printDetails, bool fatal = false}) async; Firebase Flutter X

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

struct Review { init?(dictionary: [String : Any]) { guard let name = dictionary["name"] as? String, let category = dictionary["category"] as? String, let city = dictionary["city"] as? String, let price = dictionary["price"] as? Int, let ratingCount = dictionary["numRatings"] as? Int, let averageRating = dictionary["avgRating"] as? Float, let photo = (dictionary["photo"] as? String).flatMap(URL.init(string:)) else { return nil } self.init(name: name, category: category, city: city, price: price, ratingCount: ratingCount, averageRating: averageRating, photo: photo) } // ... } // Usage let myReview = Review(dictionary: document.data()) Without Codable struct Review: Codable { // ... } // Usage let myReview = try document.data(as: Review.self) With Codable

Slide 44

Slide 44 text

func signInAndGetProfile(usingEmail email: String, password: String, completion: @escaping (Result) -> Void) { Auth.auth().signIn(withEmail: email, password: password) { result, error in guard let result = result else { completion(.failure(error!)) return } let path = "\(result.user.uid)/fullProfile" let profileRef = Database.database().reference(withPath: path) profileRef.getData { error, snapshot in if let error = error { completion(.failure(error)) return } do { let profileData = try snapshot.data(as: UserProfile.self) completion(.success(profileData)) } catch { completion(.failure(error)) } } } } Using Callbacks: 20 lines of code func signInAndGetProfile(usingEmail email: String, password: String) async throws -> UserProfile { let result = try await Auth.auth().signIn(withEmail: email, password: password) let path = "\(result.user.uid)/fullProfile" let profileRef = Database.database().reference(withPath: path) return try await profileRef.getData().data(as: UserProfile.self) } async/await version: 4 lines of code

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

NEW! Firebase App Check General Availability

Slide 47

Slide 47 text

Firebase Google Cloud API endpoints

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

App Attestation Resource Access

Slide 50

Slide 50 text

SafetyNet App Check App Attestation 1 Cloud Storage App Check Resource Access 2

Slide 51

Slide 51 text

App Check Attestation Providers SafetyNet Device Check App Attest reCAPTCHA V3 reCAPTCHA Enterprise Custom Attestation

Slide 52

Slide 52 text

Play Integrity API NEW!

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Run your app with confidence

Slide 55

Slide 55 text

App Distribution

Slide 56

Slide 56 text

NEW! General availability

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

New build available!

Slide 59

Slide 59 text

NEW! Personalization

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

NEW! Real-time ale s General availability

Slide 64

Slide 64 text

App start time Network calls Screen renderings Web page loads Out-of-the-box Metrics

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

App Quality Insights window

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

d.android.com/studio/preview Download today!

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

Go to the Crashlytics dashboard to get started

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

Better Together

Slide 73

Slide 73 text

Thank you! GDE Firebase @jirawatee fb.com/FirebaseThailand fb.com/groups/FirebaseDevTH youtube.com/FirebaseThailand medium.com/FirebaseThailand Resources Jirawat Karanwittayakarn GDE Firebase @naluinui Somjintana Korbut