Infinite Scrolling
Infinite scrolling is a software design technique that loads content continuously as the user scrolls down the page/screen.
There are a few ways to accomplish infinite scrolling with PowerSync, either by querying data from the local SQLite database, or by lazy-loading or lazy-syncing data from your backend.
Here is an overview of the different options with pros and cons:
1) Pre-sync all data and query the local database
PowerSync currently performs well with syncing up to 100,000 rows per client, with plans to scale to over 1,000,000 rows per client soon.
This means that in many cases, you can sync a sufficient amount of data to let a user keep scrolling a list or feed that basically feels "infinite" to them.
Pros | Cons |
---|---|
|
|
2) Sync limited data and then load more data from an API
Here we sync a much smaller number of rows, for example 100 rows. If the user reaches the end of the page/feed/list, we make an online API call to load additional data from the backend to display to the user.
Pros | Cons |
---|---|
|
|
3) Client-side triggers a server-side function to flag data to sync
You could add a flag to certain records in your backend database which are used by your Sync Rules to determine which records to sync to specific users. Then your app could make an API call which triggers a function that updates the flags on certain records, causing more records to be synced to the user.
Pros | Cons |
---|---|
|
|
4) [Future support] Control data sync using client parameters
PowerSync currently supports dynamic partial replication by means of token parameters that can be accessed in your Sync Rules (an example of a token parameter is a user ID). Since token parameters are embedded in the authentication token, they can be considered trusted and can be used for access control purposes.
We plan on expanding this and allowing other client parameters to be specified directly by the client (i.e. not only through the authentication token). It will be easier for the developer to dynamically change these parameters on the client-side and access them in Sync Rules on the server-side. The developer can use these parameters to limit/control which data is synced, but since they are not trusted they should not be used for access control. You should still filter data by e.g. user ID for access control purposes (using token parameters as mentioned above).
Usage example: To lazy-load/lazy-sync data for infinite scrolling, you could split your data into 'pages' and use a client parameter to specify which pages to sync to a user.
Pros | Cons |
---|---|
|
|
Questions, Comments, Suggestions?
Last updated