Bird
Raised Fist0
Firebasecloud~5 mins

Modular SDK (v9+) tree-shaking in Firebase - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is tree-shaking in the context of Firebase Modular SDK (v9+)?
Tree-shaking is a process that removes unused code from the final app bundle, making the app smaller and faster by only including the Firebase features you actually use.
Click to reveal answer
beginner
How does the Modular SDK (v9+) help with tree-shaking compared to older Firebase SDK versions?
The Modular SDK uses individual function imports instead of a big namespace, so bundlers can detect and remove unused parts easily, unlike older SDKs that imported everything at once.
Click to reveal answer
beginner
Why should you import only the Firebase functions you need in Modular SDK (v9+)?
Importing only needed functions helps tree-shaking work well, reducing app size and improving load speed by excluding unused Firebase code.
Click to reveal answer
beginner
Example: How to import Firestore's getDoc function in Modular SDK (v9+) for tree-shaking?
Use: import { getDoc } from 'firebase/firestore'; This imports only the getDoc function, allowing unused Firestore code to be removed.
Click to reveal answer
beginner
What is the main benefit of tree-shaking for mobile users of Firebase apps?
Smaller app size means faster downloads, quicker startup, and less data usage, which improves user experience especially on slow or limited networks.
Click to reveal answer
What does tree-shaking do in Firebase Modular SDK (v9+)?
ARemoves unused Firebase code from the app bundle
BAdds extra Firebase features automatically
CEncrypts Firebase data
DUpdates Firebase SDK to the latest version
Which import style helps tree-shaking in Firebase Modular SDK (v9+)?
AImporting only the specific functions you use
BImporting Firebase using require()
CImporting Firebase via CDN script tag
DImporting the whole Firebase namespace
Why is tree-shaking important for Firebase apps on mobile devices?
AIt increases app size
BIt slows down app startup
CIt disables Firebase features
DIt reduces app size and speeds up loading
Which Firebase SDK version introduced the Modular SDK with tree-shaking support?
Av7
Bv8
Cv9
Dv10
What happens if you import the entire Firebase SDK instead of specific functions in Modular SDK?
ATree-shaking removes all unused code anyway
BApp bundle size increases because unused code stays
CApp runs faster
DFirebase features stop working
Explain how tree-shaking works in Firebase Modular SDK (v9+) and why it matters.
Think about how only the code you use stays in your app.
You got /5 concepts.
    Describe best practices for importing Firebase features to maximize tree-shaking benefits.
    Focus on how to write your import statements.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main benefit of using Firebase Modular SDK (v9+) with tree-shaking?
      easy
      A. It reduces app size by including only needed Firebase features.
      B. It automatically backs up your Firebase database.
      C. It increases the number of Firebase services loaded by default.
      D. It disables Firebase authentication for faster login.

      Solution

      1. Step 1: Understand tree-shaking purpose

        Tree-shaking removes unused code to reduce app size and improve performance.
      2. Step 2: Apply to Firebase Modular SDK

        Using modular imports in Firebase v9+ allows only needed services to be included, enabling tree-shaking.
      3. Final Answer:

        It reduces app size by including only needed Firebase features. -> Option A
      4. Quick Check:

        Tree-shaking = smaller app size [OK]
      Hint: Remember: modular imports keep only what you use [OK]
      Common Mistakes:
      • Thinking tree-shaking adds features automatically
      • Confusing tree-shaking with backup or security
      • Assuming all Firebase services load by default
      2. Which import statement correctly uses Firebase Modular SDK (v9+) for Firestore to enable tree-shaking?
      easy
      A. import { Firestore } from 'firebase/app';
      B. import { getFirestore } from 'firebase/firestore';
      C. import firebase from 'firebase';
      D. import * as firestore from 'firebase/firestore';

      Solution

      1. Step 1: Identify modular import syntax

        Firebase v9+ uses named imports from specific service packages like 'firebase/firestore'.
      2. Step 2: Check each option

        import { getFirestore } from 'firebase/firestore'; correctly imports getFirestore from 'firebase/firestore' for modular usage. Others use old or incorrect syntax.
      3. Final Answer:

        import { getFirestore } from 'firebase/firestore'; -> Option B
      4. Quick Check:

        Modular import = named import from service path [OK]
      Hint: Use named imports from 'firebase/service' for modular SDK [OK]
      Common Mistakes:
      • Using default import from 'firebase' package
      • Importing from 'firebase/app' instead of service path
      • Using wildcard imports that prevent tree-shaking
      3. Given the code below, what will be the output in the console?
      import { initializeApp } from 'firebase/app';
      import { getAuth } from 'firebase/auth';
      
      const app = initializeApp({ apiKey: 'abc', authDomain: 'xyz' });
      const auth = getAuth(app);
      console.log(typeof auth.currentUser);
      medium
      A. 'null'
      B. 'undefined'
      C. 'function'
      D. 'object'

      Solution

      1. Step 1: Understand getAuth and currentUser

        getAuth returns an Auth instance; currentUser is a property that is either null or a user object.
      2. Step 2: Check typeof currentUser before login

        Before login, currentUser is null, and typeof null is 'object' in JavaScript.
      3. Final Answer:

        'object' -> Option D
      4. Quick Check:

        typeof null = 'object' in JS [OK]
      Hint: Remember: typeof null returns 'object' in JavaScript [OK]
      Common Mistakes:
      • Assuming currentUser is undefined before login
      • Confusing typeof null with 'null' string
      • Thinking currentUser is a function
      4. Identify the error in this Firebase Modular SDK (v9+) import code:
      import { initializeApp } from 'firebase/app';
      import { getFirestore } from 'firebase/firestore';
      
      const app = initializeApp(config);
      const db = getFirestore();
      medium
      A. getFirestore() requires the app instance as an argument.
      B. initializeApp should be imported from 'firebase/firestore'.
      C. config object is missing from the code.
      D. getFirestore must be called before initializeApp.

      Solution

      1. Step 1: Check usage of initializeApp

        initializeApp requires a config object to initialize Firebase app.
      2. Step 2: Verify presence of config object

        The code uses 'config' but does not define or import it, causing a ReferenceError.
      3. Final Answer:

        config object is missing from the code. -> Option C
      4. Quick Check:

        Missing config causes initialization error [OK]
      Hint: Always define config before initializeApp call [OK]
      Common Mistakes:
      • Forgetting to pass app to getFirestore (optional but recommended)
      • Importing initializeApp from wrong package
      • Calling getFirestore before app initialization
      5. You want to optimize your Firebase app bundle size by importing only Authentication and Firestore services using Modular SDK (v9+). Which code snippet correctly achieves this with tree-shaking?
      hard
      A. import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFirestore } from 'firebase/firestore'; const app = initializeApp(config); const auth = getAuth(app); const db = getFirestore(app);
      B. import firebase from 'firebase'; const app = firebase.initializeApp(config); const auth = firebase.auth(); const db = firebase.firestore();
      C. import { initializeApp, getAuth, getFirestore } from 'firebase/app'; const app = initializeApp(config); const auth = getAuth(app); const db = getFirestore(app);
      D. import { initializeApp } from 'firebase/app'; import { auth, firestore } from 'firebase'; const app = initializeApp(config); const authInstance = auth(app); const dbInstance = firestore(app);

      Solution

      1. Step 1: Use modular imports from correct packages

        Authentication and Firestore must be imported from 'firebase/auth' and 'firebase/firestore' respectively for tree-shaking.
      2. Step 2: Initialize app and pass it to service getters

        Initialize app with config, then pass app instance to getAuth and getFirestore functions.
      3. Step 3: Check each option

        import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFirestore } from 'firebase/firestore'; const app = initializeApp(config); const auth = getAuth(app); const db = getFirestore(app); correctly imports and initializes services modularly. Others use old syntax or wrong imports preventing tree-shaking.
      4. Final Answer:

        Option A code snippet -> Option A
      5. Quick Check:

        Modular imports + app passed = optimized bundle [OK]
      Hint: Import each service from its own package and pass app [OK]
      Common Mistakes:
      • Using default firebase import disables tree-shaking
      • Importing multiple services from 'firebase/app' only
      • Not passing app instance to service getters
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard