EmberFire
Status
This repository is maintained by Googlers but is not a supported Firebase product. Issues here are answered by maintainers and other community members on GitHub on a best-effort basis.
WARNING: Master branch is the work in progress for version 3 of Emberfire. You can find version 2 here, if you're looking for documentation or to contribute to stable. Learn more about the rewrite effort here.
Why EmberFire?
- Developed by experts - Developed and maintained by the Firebase team
- Ember Data Adapters - Cloud Firestore and Realtime Database adapters for Ember Data allow you to persist your models in Firebase
- Ember Services -
firebase
andfirebase-app
services allow direct access to the underlying Firebase SDK instance - Realtime Bindings - Listen for realtime updates to your Firebase backed Ember Data models using the provided
realtime-listener
service or theRealtimeRouteMixin
- Authentication Providers - Integrate Firebase Authentication with your Ember application easily with providers for Ember Simple Auth and Torii
- Analytics Collection - The
AnalyticsRouteMixin
adds Google Analytics screen tracking to your Ember Router. - Offline Enabled - Persist Ember Data models offline automatically with
FirestoreAdapter
- Fastboot Compatible - Perform initial rendering and fetching of your models server-side to increase application performance
Installation
$ ember install emberfire@next
Example use
// app/adapters/application.js
import FirestoreAdapter from 'emberfire/adapters/firestore';
export default FirestoreAdapter.extend({
enablePersistence: true,
persistenceSettings: { synchronizeTabs: true }
});
// app/models/article.js
import DS from 'ember-data';
const { attr, belongsTo, hasMany } = DS;
export default DS.Model.extend({
title: attr('string'),
body: attr('string'),
publishedAt: attr('date'),
author: belongsTo('user'),
comments: hasMany('comments', { subcollection: true }),
});
// app/routes/articles.js
import Route from '@ember/routing/route';
import RealtimeRouteMixin from 'emberfire/mixins/realtime-route';
import PerformanceRouteMixin from 'emberfire/mixins/performance-route';
export default Route.extend(RealtimeRouteMixin, PerformanceRouteMixin, {
model() {
return this.store.query('article', { orderBy: 'publishedAt' });
}
});
// app/routes/application.js
import AnalyticsRouteMixin from 'emberfire/mixins/analytics-route';
import Route from '@ember/routing/route';
export default Route.extend(AnalyticsRouteMixin);
Documentation
Compatibility
Please consult this table when selecting your version of EmberFire and Firebase SDK:
Ember Data | EmberFire | Firebase SDK |
---|---|---|
3.0+ | 3.x | 5.x |
2.3+ | 2.x | 3.x |
2.0 - 2.2 | 1.6.x | 2.x |
1.13 | 1.5.x | 2.x |
Migration Guides
Contributing
If you'd like to contribute to EmberFire, please first read through our contribution guidelines. Local setup instructions are available here.