Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is this library actually maintained? #524

Closed
ksnyder opened this issue Apr 3, 2023 · 34 comments
Closed

Is this library actually maintained? #524

ksnyder opened this issue Apr 3, 2023 · 34 comments

Comments

@ksnyder
Copy link

ksnyder commented Apr 3, 2023

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: #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: #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
Copy link

+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
Copy link
Author

ksnyder commented Apr 4, 2023

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
Copy link
Author

ksnyder commented Apr 4, 2023

@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
Copy link

☹️ 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
Copy link

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
Copy link

bdytx5 commented Apr 27, 2023

@pc

@thoarrown
Copy link

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
Copy link

Same

@vdegenne
Copy link

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
Copy link

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

@CalHoll
Copy link

CalHoll commented Jul 2, 2023

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
Copy link

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
Copy link

bdytx5 commented Jul 3, 2023

@pc can we get a confirmation?

@lucasyvas
Copy link

lucasyvas commented Jul 7, 2023

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
Copy link

bdytx5 commented Jul 11, 2023

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
Copy link

lucasyvas commented Jul 11, 2023

@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
Copy link

bdytx5 commented Jul 13, 2023

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
Copy link

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
Copy link
Contributor

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
Copy link
Contributor

@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
Copy link

@paulasjes-stripe Sure

@bagedaddy
Copy link

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

@jelling
Copy link

jelling commented Jul 27, 2023

@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
Copy link

jelling commented Aug 1, 2023

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
Copy link

vdegenne commented Aug 8, 2023

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
Copy link
Contributor

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
Copy link
Member

Closing as the repository has now been transferred!

@ve-varun-sharma
Copy link

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

image

@justinh00k
Copy link

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

@pr-Mais
Copy link
Member

pr-Mais commented Feb 14, 2024

@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
Copy link

jelling commented Feb 15, 2024 via email

@justinh00k
Copy link

@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
Copy link

jelling commented Feb 15, 2024

@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
Copy link

@jelling I did just that, thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests