Prefab is democratizing the core internal services that make product engineering teams go fast at big orgs that can afford 20 engineers on developer experience. Today we help organizations:
- Improve MTTR by changing log levels instantly
- Reduce Datadog bills by only logging / tracing when you need it or targeted to a particular user or transaction.
- Save 90% vs LaunchDarkly for a robust feature flag solution
- Improve local developer experience with shared secrets
- Manage microservice configuration at scale with dynamic configuration.
This quarter we shipped a ton of great stuff, much of it coming straight from customer requests.
Improved UI
Sometimes it's the little things that make the difference. We made a ton of small tweak based on your feedback this quarter and the product is feeling tighter than ever.
Search for a user AND change their flags
Some users reported that while it was great that they could see all of the flag values for a given user, what they really wanted to be able to do was change those values. They we're pleasantly surprised when we told them they could already do that! They just needed to click the pill that didn't look clickable. Talk about hiding our light under a bushel. As much as we like secret off-menu features, we decided to go ahead and make this look clickable.
Improvements for dynamic LLM prompts
And for all of you using Prefab to instantly change your LLM prompts without shipping new code. Suffer no longer with a text box sized for ants!
Well, it's all better now, with dynamically resizing text areas.
Search for loggers
Huge improvement for those of you with tons of loggers. Have 500+ loggers? (I'm looking at you Java). Find the one you want to turn on instantly with a quick little search.
Production Release of Python client
Our Python client got a huge overhaul this quarter and is ready to roll. Check out the full docs. The code is tighter, the telemetry is in and the integration with standard Python logging frameworks is much improved.
prefab_cloud_python.get_client().get("max-jobs-per-second", default=10) # => 10
Ruby Client Logging Overhaul to use SemanticLogger
In a similar vein, we did a big overhaul of the ruby client as well and we now work out of the box with the best ruby logging library out there. We were able to reduce the surface area of the library and really focus in on what we can bring to your ruby logging: being a smart filter that decides what logs to output.
Read more in Ruby Dynamic Logging With Semantic Logger
Support For Okta & Other SAML Providers
If you wanted to use Prefab, but really needed to use Okta or another SAML provider, we're so excited to have removed this blocker for you.
SAML is live and we're welcoming new signups with open arms. What's particularly exciting about this to me is that we're running it ourselves. We're doing it internally, because it seems to us that everyone should be able to support SAML and this is kinda our thing: write the code one last time so that it all plays well together and we can all use it.
Durations
Ever written http.connect(timeout: Prefab.get("my.timeout'))
and been worried that someone might use millisecond or seconds or minutes? Naming all your time duration configs kafka.retry.timeout-in-seconds
to try to be really explicit? Well, good news because Durations are coming to Prefab.
Durations is a new type of config that acts like the java.time.Duration
object or ActiveSupport::Duration
in Ruby. You can specify it in whatever units you like and then retrieve it in whatever units you like. Under the covers it's stored as an ISO 8601 duration.
And in your code you can just ask the duration in whatever unit you need. Unit mismatch crises averted.
duration = Prefab.get("mysql.timeout") # P80S # a Prefab duration object that quacks like ActiveSupport::Duration
mysql.connect(timeout: duration.in_milliseconds) // 80000
mysql.connect(timeout: duration.in_seconds) // 80
mysql.connect(timeout: duration.in_minutes) // 1.5
mysql.connect(timeout: duration.in_days) // 0.00001
Updated Pricing & PricingCompared.com
We heard you loud and clear. Our pricing was... confusing. We've re-packaged it and we think it's a lot clearer now. Getting into pricing made us really wonder how we stacked up to other tools in the space. It turns out the answer is... complicated. We started building the spreadsheet to help us figure out how we really compared and then decided it should really be code and then decided we might as well just share it with everyone.
Thus Feature Flag Pricing Compared was born. Check it out!
Send To Frontend
Why should backend libraries like Python, Java and Ruby have all the fun? What if you want to make dynamic configuration updates to content on your website. We agreed, so we added an opt-in flag to configuration that will send config to front end libraries.
Drunk/Lazy CEO mode for the CLI
What's that command line argument again? I could never remember the exact CLI command and now that we support setting secrets via the CLI, I was getting annoyed. The solution! Something we affectionately called "drunk ceo" mode. Wouldn't it be great if all CLIs also had a mode where you could just type in what you wanted it to do and it would find the right combination of flags for you and prompt for missing information? We thought so too and Jeffrey made it happen.
Secret Management
Early in the quarter we shipped a big secret management release and we've been enjoying using it ever since.
Truly it's tough to remember that updating secrets used to involve some hand-rolled kubernetes yaml and a call to base64 --encode
. Shudder.
Improved Support for Jamstack hosting providers
Last but not least, we made some nice improvements to the libraries and the documentation around Feature Flags for our Jamstack customers. Whether you're on Clouflare, Vercel or Netlify, you should be able to get started quickly with Prefab for Feature Flags, Dynamic Logging or Configuration.
Feature Flags for Netlify Functions and Change Log Levels instantly in Netlify
Wrap
Q1 was awesome, and we are hard at work on a whole host of improvements for Q2. Our focus will be squarely on our existing customers, giving you all the tools you need to feel confident and assured that Prefab respects the core role that you're entrusted us with in your stack.