https://kotlinlang.org logo
Join Slack
Powered by
# store
  • j

    Jeffrey Dawes

    10/29/2024, 4:04 PM
    Hey everyone, just dipping my toes into Store5 and wondering what pattern most people follow when it comes to writing Repository interfaces. I see some examples where people leverage
    StoreResponse
    as their returns types and others where they use their own types. In this case, I'm specifically curious about
    Flow
    return types. What is the guidance on this topic, if any? I was planning to map the
    StoreResponse
    to my
    Result
    type class to simplify since it only has a loading, success, and error state. But then I would lose the nice things like the response origin. What has been other people's experience with this? Do you commit to exposing
    Store
    classes from your repositories or do you map to a similar or identical local class?
    m
    b
    • 3
    • 6
  • j

    Jeffrey Dawes

    11/01/2024, 4:03 PM
    Copy code
    interface Fetcher<Key : Any, Network : Any>
    Because
    Network
    is non-null how do we represent a value that does not exist or is not found? Do you wrap the response in a result type? Do you return a
    Fetcher.Error
    of some kind?
    b
    • 2
    • 1
  • m

    Matthew Ramotar

    11/05/2024, 5:33 PM
    Hey all, just published a two-part guide on handling CRUD operations with Store. Lmk what you think
    m
    b
    • 3
    • 7
  • m

    Matthew Ramotar

    11/13/2024, 8:32 PM
    Docs are now here! https://store.mobilenativefoundation.org
    👀 2
    kodee happy 5
    🎉 3
    kodee loving 2
    r
    • 2
    • 6
  • m

    Matthew Ramotar

    11/24/2024, 7:30 PM
    Hey all - New decision guide: https://store.mobilenativefoundation.org/docs/best-practices/store5/single-or-multiple-stores. It’s motivated by this Q&A opened up a few days ago: https://github.com/MobileNativeFoundation/Store/discussions/675. These sorts of questions are important for the library and community. Sharing the guide here and want to express that we really appreciate contributions of any kind - whether it’s code changes, bug reports, feature requests, proposals, or questions. Please keep asking questions, raising issues, and starting discussions. And if you’re interested in getting more involved with the development of Store, don’t hesitate to DM me directly. We would love to have you join us
  • r

    rocketraman

    11/26/2024, 2:43 PM
    Is there an example somewhere of implementing conflict resolution with Store5? The docs say that the Mutable Store "Conflict Resolution: Works with the Bookkeeper and Updater to resolve conflicts that arise from concrruent modifications or offline changes.". However, its unclear to me how it does this? I'm not seeing the relevant API surface. I want to implement a conflict resolution mechanism that combines data from the conflicted entities to create a new entity.
    m
    • 2
    • 9
  • a

    amitkma

    01/11/2025, 4:56 PM
    When is stable version 5.1.0 supposed to be released? Pardon me if it's already been discussed or shared. Couldn't find it.
    👀 1
    m
    a
    • 3
    • 5
  • s

    Simone

    02/19/2025, 7:47 PM
    Hi there! Enjoying a lot the new documentation. One question, there is any workaround for this issue? If I’m not missing anything, multi-device support in my app should be impossible at the moment
    m
    • 2
    • 6
  • b

    blakelee

    02/21/2025, 5:54 PM
    How might we use store to keep a server in sync with the client -- more specifically handling deleted data on the server? The bookkeeper keeps tracks of syncs which maybe could be used to determine an item was deleted since the server wouldn't give it any data. I was thinking of an approach of sending up all of the id's and keeping a graveyard of those id's on the server to look up against. It seems like store5 gets me just shy of all the way there for being able to do this. This is something I've never implemented and due to this I've found it hard to even find solutions from searching because I'm likely not searching the right things. Perhaps articles or your experience might help. Conflict strategy is hard 🙂
    m
    g
    p
    • 4
    • 13
  • a

    André Thiele

    02/27/2025, 8:55 AM
    also, is it possible to set up a milestone maven repository? i see the pipeline publishes artifacts
    m
    • 2
    • 2
  • a

    André Thiele

    02/27/2025, 8:55 AM
    @Matthew Ramotar
  • m

    Matthew Ramotar

    02/27/2025, 2:17 PM
    Hi all - 5.1.0-alpha06 is out. Thanks to @blakelee and Roman for contributions and @Shabinder Singh for surfacing the deadlock in eager conflict resolution. This is the last planned alpha for 5.1.0. Targeting 5.1.0-beta01 in ~1 week and then 5.1.0 stable ~2-3 weeks after if no issues. Please keep surfacing issues, questions, requests. Thanks all 🙏 https://github.com/MobileNativeFoundation/Store/releases/tag/5.1.0-alpha06
    🤝 1
    ❤️ 3
    a
    • 2
    • 2
  • m

    Matthew Ramotar

    02/27/2025, 2:18 PM
    Hey, this is a relevant discussion: https://kotlinlang.slack.com/archives/C06007Z01HU/p1730218067633409?thread_ts=1730217896.818949&amp;cid=C06007Z01HU
    a
    • 2
    • 4
  • m

    Matthew Ramotar

    02/27/2025, 2:20 PM
    Do you have a sample I can look at?
    a
    t
    • 3
    • 17
  • f

    F

    03/16/2025, 12:13 PM
    Hi all, loving the library. I have a kmp chat application with supabase as a backend. I query messages with pagination and have a realtime listener for new/updated messages. I am having trouble of implementing paging with store while updating the SOT with new messages. Any sample with storex paging and/or combining of realtime updates? Thanks for all the hardwork @Matthew Ramotar
    m
    • 2
    • 1
  • b

    blakelee

    03/21/2025, 11:54 PM
    What should the expected behavior be for
    StoreReadRequest.cached(key, refresh = true)
    ? I figured it would hit my SoT first then try to refresh. However without a network connection it fails to return any data — even the SoT data
    m
    • 2
    • 3
  • a

    André Thiele

    04/01/2025, 6:12 AM
    Is it a common pattern to use something like sealed interfaces as keys? i want to be able to fetch all items using a key like Operation.GetAll which will then write all objects to the cache, but also be able to get a single object from the cache afterwards if i need to. Or is this not supported?
    m
    • 2
    • 6
  • s

    Stew Boling

    04/14/2025, 7:26 PM
    Looking for feedback on if my use case is supported by StoreX paging: I have data from three sources I need to combine into one coherent collection. The key for each entry will be timestamped with an Instant 2 of the data sources are from a WebSocket and need to be appended to the collection and the third source is an endpoint that I need to query for paginated data as the user scrolls backwards in time. Would the correct way to implement this with Store and Paging be: • Create a mutable store ◦ The two Websocket data sources would write their data to store as it comes in • Pass that MutableStore to the PagingBuilder and implement backwards pagination following the normal patterns. Will Paging get notified of the data added by the WebSocket correctly? Thanks 🙂
    • 1
    • 1
  • v

    vovkab

    04/29/2025, 7:00 PM
    Hi all, we are using store4 and trying to update to kotlin2. Looks like store4 is still using experimental/deprecated api's (stable since 1.5), and if we try to use it with kotlin2 it would crash in runtime:
    Copy code
    Caused by: java.lang.NoSuchMethodError: No virtual method hours-UwyO8pc(I)J in class Lkotlin/time/Duration$Companion;
    	at com.dropbox.android.external.store4.StoreDefaults.<clinit>(StoreDefaults.kt:14)
    	at com.dropbox.android.external.store4.RealStoreBuilder.<init>(StoreBuilder.kt:86)
    We are trying to stay on store4 so we don't have to retest everything at the same time. Is it possible to do a quick hot fix release for store4? I've created a change to switch to a stable api and remove experimental time: https://github.com/vovkab/Store/commit/1af730553be7133e71736758dc8c67e2922b3fc3 But I'm not sure against which branch should I created a PR? As I can see there is
    release/4.0.0
    branch, but it's missing everything all the way up to 4.0.7? Thanks.
    j
    • 2
    • 2
  • p

    Pranathi

    05/08/2025, 4:06 AM
    hi all, I am currently working on a data collection app. where user has to fill data in a series of screens and at the last screen we are supposed to make an api call. So we have decided on using viewmodel per screen architecture since we use the same screens for the edit flow as well and store the data filled my user to the Local DB before they move to next screen(This decision is made because we saw significant users facing process death). If I can keep this simple I have drafts in my localDB which I update at the end of each screen which has only LocalID and not serverID. Though currently we are not actually going for offline support but that is definitely in pipeline so I am looking into store. But I am not sure if store fits to our usecase and if yes how to manage two different keys
  • j

    Jan-Patrick

    07/03/2025, 6:35 AM
    Hi everyone, we’re considering using Store5 as the main caching solution in our Kotlin Multiplatform project. I really like the structure and flexibility it offers, but I’m a bit concerned about the current activity level in the repo. Does it still make sense to rely on Store5 for a long-term project? I’m especially worried about future compatibility with new Kotlin versions if maintenance slows down.
  • s

    svt ttytth

    07/05/2025, 10:57 PM
    I have the same concern about the compatibility too
  • t

    Tepes Lucian Victor

    07/07/2025, 7:20 PM
    I've integrated store5 last year in an android project and haven't run into any issues. Can't speak for KMP though
  • m

    Manuel Lorenzo

    07/09/2025, 1:36 PM
    hello! I'm creating a new app and I want to use RevenueCat paywalls. However I need to facilitate Google Play store a way to test the whole app, bypassing the paywalls and I'm not sure how to do this 🤔
    c
    • 2
    • 2
  • m

    Matthew Ramotar

    07/20/2025, 11:10 PM
    Hey all - Hope everyone’s well. Sorry to be slow. Extremely busy few months. A few things • Re concerns about activity - Activity has been minimal as Store 5.0 has been stable. I’m working on a fix for the recent breaking change to Kotlinx datetime • Re concerns about long-term project - Store will turn 9 years old this November! It has survived multiple ownership transfers. It has been contributed to by hundreds of developers across dozens of companies. It is trusted in prod at the largest possible scale • There are ongoing discussions about new features and other API improvements but enhancements in general will be slower without additional help. Please reach out if you want to get involved Thank you 🙏
    👍 8
    👍🏻 1
  • a

    audax

    08/26/2025, 6:56 AM
    I am a tiny bit confused: You are saying that Store 5.0 is stable, but I can't find a Store 5.0 stable release, neither a 5.1 stable release. Which version should I use in a new multiplatform application?
    t
    m
    • 3
    • 2
  • a

    audax

    08/26/2025, 10:06 AM
    Does my use case fit the library? For now, I don't have any stream responses for local storages or my remote APIs. I want to observe a Query in my app, e.g. for a key X. When I send a StoreWriteRequest to Store and it succeeds (in some way, maybe just locally), then I want my initial query to receive the new value. Do I need to implement this logic myself via a Source of Truth or can I already achieve this with just a MutableStore and the caches?
    m
    • 2
    • 4
  • d

    darkmoon_uk

    09/13/2025, 12:00 AM
    I'm interested in using Store, and recognise the problems it is solving. I've also started out my project using kRPC; is Store transport agnostic in this respect; and the
    Flow
    ability offered by kRPC elide nicely with Store, if my server is already sending a reactive stream?
    m
    • 2
    • 1
  • m

    Matthew Ramotar

    09/20/2025, 7:45 PM
    https://github.com/MobileNativeFoundation/Store/releases/tag/5.1.0-alpha07
  • m

    Matthew Ramotar

    09/21/2025, 9:54 PM
    https://github.com/matt-ramotar/meeseeks/releases/tag/0.6.0-alpha02
    • 1
    • 2