invertase / stripe-firebase-extensions

Repository of Firebase Extensions built by Stripe.
https://firebase.google.com/products/extensions
Apache License 2.0
425 stars 161 forks source link

Is this library actually maintained? #524

Closed ksnyder closed 11 months ago

ksnyder commented 1 year ago

Bug report

There are a number of important Issues in this repo which have not received attention, so is it worth building new code that relies on this package? It doesn't seem like Stripe is investing resources to keep it updated, but wants to make it an open-source collaboration, but not enough users are contributing to keep the library current and reliable.

Describe the bug

For example, this ticket was simply to upgrade this library to newer versions of packages it relies on, but no action has been taken since October of last year: https://github.com/stripe/stripe-firebase-extensions/issues/459 I think the problem addressed by this pull request may fix the issues I'm seeing, where installing this library breaks the standard 'firebase' package (version 9.18.0). API calls work in 'firebase' fine, until this library is installed, then basic calls like getFirestore() no longer work, but spit out "Service firestore is not available". Remove this package, and 'firebase' works fine again.

To Reproduce

I would be glad to provide more details but don't want to invest the time posting things here if they are going to languish as other Issues have. I already put a fair amount of information into this open Issue but no one at Stripe has yet responded: https://github.com/stripe/stripe-firebase-extensions/issues/509

Expected behavior

A clear and concise answer as to who supports this library -- Stripe promotes it, and an automated bot replied to my Tweet that I should use this library for Firebase integration, but if Stripe is not maintaining it, then it's not good for much.

MarkUnthank commented 1 year ago

+1. There are lots of things that work, but lots of things that don't. I've written so many patches on top of the functionality that I'm not sure if I'm saving time or building a house of cards.

ksnyder commented 1 year ago

Although it has become pretty obvious that this library is not maintained by Stripe in any meaningful way, I have now firm confirmation of this from "Jonathan" at Stripe support, after jumping through many hoops to hear from someone at the company who could offer more than vague suggestions about what to do. He confirms that this library is not production-ready, and I quote: "Anecdotally your observations are mostly on point. These extensions are largely unmaintained at this point and their future, and our support offering around them, is currently uncertain. If you're starting a new project today, my recommendation would be to roll your own Stripe + Firebase integration. You should be able to leverage the majority of the open source code from the extensions to your advantage as required."

In other words, this library is useless, stay away.

ksnyder commented 1 year ago

@MarkUnthank

+1. There are lots of things that work, but lots of things that don't. I've written so many patches on top of the functionality that I'm not sure if I'm saving time or building a house of cards.

Looks more and more like a house of cards, unfortunately. I found this library breaks the latest 'firebase' npm (9.18.0) -- even if you don't make any calls into this library, just having it installed will break any Firestore code you had working with plain 'firebase'. Remove this and it all works again. Meanwhile, Stripe keeps promoting this library if you inquire about Firebase integration -- they don't care they're wasting people's time.

cloudatlas9 commented 1 year ago

☹️ This extension was one of the reasons i went with Stripe... These building block sort of things that allow you to save time make it very appealing, especially for indie projects.

With the comments here the appeal is reduced quite much though.. Seems like better not to touch anything in terms of versions anymore while it's still working and look for alternatives

scole954387 commented 1 year ago

This is very disappointing. I've been developing a site using firebase and stripe for the last year and everything has been working great however to know they are not supporting this any longer is very concerning. It's very unprofessional to create products for developers to use and then just abandon them leaving people high and dry.

bdytx5 commented 1 year ago

@pc

thoarrown commented 1 year ago

I spent two to three workdays investigating why customers were not being created in the database, only to discover these comments later. It feels like a waste of time to have developed an app using an extension no longer supported.

I hope the extension can be continued to be developed, so I can use it in the future because it is really useful.

juhaodong commented 1 year ago

Same

vdegenne commented 1 year ago

I really don't understand, aren't Firebase and Stripe making microtransaction profits out of this extension? Why haven't them decide to nominate a developer to give this extension a brand new skin? It doesn't seem like a lot of work.

TasseDeCafe commented 1 year ago

Oh fuck, I just stumbled upon this thread. Well I guess it's better to lose a few hours than a few days.

CalHoll commented 1 year ago

Oh fuck, I just stumbled upon this thread. Well I guess it's better to lose a few hours than a few days.

I think I might be in the other camp and lost a few days 😕

TasseDeCafe commented 1 year ago

Sorry to hear. I find it really strange that a trillion-dollar company like Google wouldn't be able to maintain a library like that. At that point I expect them to kill off those extensions in the near future.

bdytx5 commented 1 year ago

@pc can we get a confirmation?

lucasyvas commented 1 year ago

I've received word from some community members that the state of this integration/library is rough. I was already prototyping/building out a suite of "missing" Firebase features and I'm now considering prioritizing this as a headliner based on what I've heard. If you're interested in helping me draft your needs/requirements so they can be prioritized, leave a thumbs up and subscribe to this issue. I'll swing back around and drop a discussion link in a little bit for anyone interested.

Edit 1: It is now, objectively, later

https://github.com/burners-dev/stripe/discussions

Edit 2: I've created a fork for experimentation

https://github.com/burners-dev/stripe-firebase-extensions

Priority for the fork will be getting it to a testable state - sort of a like a sandbox to inform how to proceed with a successor. Feedback is going to be critical here - from where I'm sitting the extensions are quite basic and way too "on the rails" for my taste (there's a lot I'd personally change to do with logic flow customization), but ready to hear arguments for or against in the discussion area.

bdytx5 commented 1 year ago

I mean I think its mainly just delivering the features that were promised, rather than expanding upon it (maybe thats what you mean?). Even just a repo (rather than extension) that implements the cloud functions and shows how to use them would probably suffice for most.

lucasyvas commented 1 year ago

@bdytx5 I'm in the process of planning a total replacement toolkit that is open source with the following characteristics:

  1. Can work with or without Functions
  2. Can work with or without Firestore
  3. Provides a common SDK for multiple payment processors and one set of webhook handling logic, starting with Stripe (parity with this repo is a first priority, but will be incremental)

The goal is to create a set of modular utilities and libraries so you can integrate them into your project in whatever way you see fit, or go with a paid cloud hosted version that I will offer (key to providing something that works without Functions or Firestore if some people want to go that route).

All libraries will be published with a permissive license, and the server component will be FLOSS and self-hostable as well.

I believe the modular and open source nature should satisfy all - there are several folks that don't like how the extension creates a non-customizable workflow so the approach will be code-first. If you have any requests or comments I'd love to hear them. My goal is a bit lofty and it's to create a first-class service for payment integration with Firebase that feels like it was built by Google 👀.

The documentation you are referring to will absolutely be key - we will have a full docs site showing how to consume the libraries for multiple scenarios and how to self-host if wanting to run it as a totally separate component.

bdytx5 commented 1 year ago

Like I say, everything they had originally was great, they just didn't execute. So if you could duplicate those features, my guess is you will make a lot of people happy.

lucasyvas commented 1 year ago

Schedule-wise, optimistically I'll have something modest working by early September since I have some other things to attend to over the summer. I'll likely be broadcasting the initial consumable via the Firebase community Slack as well as the firebase.me Discord. It will be a launching off point and likely not a parity release by that point, although I'm hopeful that it will be in a state that iteration can happen more quickly. It's worth mentioning that I personally don't necessarily need every feature here, so that point will be a good time to raise any requests so they can be prioritized. Code-wise, the approach is going to be a lot different so any particular implementation may require a bit of a minor rethink.

paulasjes-stripe commented 1 year ago

Hi folks, apologies for the radio silence here, we've been hard at work figuring out how to move this library and extension forward. We're still discussing internally but hopefully will have some good news to share very soon.

paulasjes-stripe commented 1 year ago

@lucasyvas would you mind emailing me at paulasjes [at] stripe [dot] com? I'd like to talk to you a bit more on what you're building.

lucasyvas commented 1 year ago

@paulasjes-stripe Sure

bagedaddy commented 12 months ago

@paulasjes-stripe , what does the stripe team recommend that develops who are building in firebase / stripe do in the meantime?

jelling commented 12 months ago

@paulasjes-stripe can you share the punch-list so far of what needs to be fixed to make this production-ready?

The issue that brought me to this thread indirectly is (#402). But Iafter reading this, I'm uncertain whether I can use this package (or Stripe) at all. It sounds like you inherited this situation, but this is not the usual high-quality dev ex that Stripe is known for.

jelling commented 11 months ago

For anyone stumbling into this, I took apart the extension while trying to debug issue #540 and discovered that there isn't much to it. Everything that does work could easily be extracted and hosted as a regular Firebase function webhook.

Stripe, not that you asked, but I would recommend ending any pretense of support for this extension. Reason being that 1) the point of the extension is acquire new customers, but 2) due to the lack of maintenance or support, the extension is instead is instead losing Stripe customers. Saying that because anyone that installs it is basically sold on Stripe already but odds are they will subsequently have a bad experience.

vdegenne commented 11 months ago

I made a video about how to install stripe manually (I still have to reupload the new version (even the title of the video is wrong...) and add a description but for people in a hurry):

https://youtu.be/B5X-Bj2QtHw

paulasjes-stripe commented 11 months ago

We've worked with the Firebase team to identify a new owner, Invertase, to take over maintenance of this extension and be its long-term steward.

Invertase is a seasoned developer shop that has worked closely with the Firebase team and actively maintains several other Firebase extensions. The Invertase team is committed to addressing this extension’s existing issues and providing long-term maintenance.

Note that once the transfer is complete, you’ll have to uninstall the stripe/firestore-stripe-payments extension from the Firebase Extension Hub and install the Invertase version to get any updates. Once the Invertase version is available, we’ll follow up in this issue and update the readme.

Thank you all for your patience, to @ksnyder for bringing this to our attention, and @lucasyvas for their willingness to support the community. We hope you continue participating in Invertase's upcoming update and help push this extension forward. We’re here if you have any questions or concerns.

dackers86 commented 11 months ago

Closing as the repository has now been transferred!

ve-varun-sharma commented 7 months ago

After reading through all of the previous comments + our own experiences:

image

justinh00k commented 5 months ago

Firebase continues to pimp "Extensions (New!)" - 99% of which are unupdated and running unsupported Node14. WHY?!

pr-Mais commented 5 months ago

@justinh00k Sorry for the frustration, the extension is maintained and has been updated to node 18, but under a new author, please find the migrated extension here, you would need to install it and uninstall the old one which still runs node 14.

jelling commented 5 months ago

Because no one at Google can get a promotion by incrementally improving a product. Otherwise how could you explain outsourcing support for the most popular checkout system on earth for a platform that is entirely based on making devs lives easier.

You can also find me talking crap about the increasing embarrassment that is Google / Firebase on the react Firebase UI project they abandoned without treating their paying customers with even the decent of ticket responses.

(No shade against the current outsourced support team.)

On Wed, Feb 14, 2024 at 4:10 PM Mais Alheraki @.***> wrote:

@justinh00k https://github.com/justinh00k Sorry for the frustration, the extension is maintained and has been updated to node 18, but under a new author, please find the migrated extension here https://extensions.dev/extensions/invertase/firestore-stripe-payments, you would need to install it and uninstall the old one which still runs node 14.

— Reply to this email directly, view it on GitHub https://github.com/invertase/stripe-firebase-extensions/issues/524#issuecomment-1944599687, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOMZ7XPJDDTF3ATTKA2B5DYTUR33AVCNFSM6AAAAAAWR3G7ZCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNBUGU4TSNRYG4 . You are receiving this because you commented.Message ID: @.***>

justinh00k commented 5 months ago

@jelling Yes I have several projects that I can't upgrade because I'd first have to rebuild FirebaseUI from scratch, and it's still the recommended method in the Firebase and Firebase Auth docs.

I spend more money on Firebase than the rest of my infrastructure costs combined and I'm starting to wonder why I bother when so many features are basically unusable.

jelling commented 5 months ago

@justinh00k react-social-login-buttons makes it easy to switch:

import { GoogleLoginButton } from 'react-social-login-buttons';
import { GoogleAuthProvider, getAuth, signInWithPopup } from 'firebase/auth';
import { useRouter, useSearchParams } from 'next/navigation';

const LoginOptions = () => {
  const router = useRouter();
  const searchParams = useSearchParams();

  const login = async () => {
    // redirect works too, but need to use pop-up if not hosting on firebase
    const result = await signInWithPopup(getAuth(), new GoogleAuthProvider());
    const user = result.user;

    if (!user) return;
    router.push(searchParams.get('redirect') ?? '/');
  };

  return (
    <Stack>
      <GoogleLoginButton onClick={login} />
    </Stack>
  );
};
justinh00k commented 4 months ago

@jelling I did just that, thank you.