🎉❤️ I just cracked $100k/yr on GitHub Sponsors. ❤️🎉
Life. Changed.
Huge thanks to everyone's generosity and the GH Sponsors team! ❤️🙏🏻
Did a writeup of the entire journey if you care:
🎉 My GitHub Sponsors account busted $70k/yr the other day.
I kinda can't believe it.
I think this open-source sustainability thing is gonna to work out for me.
So grateful to everyone who's sponsored ❤️, and the GH Sponsors team for all their hard work ❤️ cc
@devonzuegel
😍😱 What if you could use a Google Sheet as the table for an Eloquent Model in Laravel...
What is this world coming to?
Will DEFINITELY be doing this... like... maybe all the time...
🚀🎉🎁 It's finally ready...
Introducing: Livewire Version 2! 🎉
🧵 $queryString w/ pushState
🕐 wire:model.defer
📏 $rules property
🔌 $wire for Alpine
🧙♂️ @ entangle for Alpine
📦 And WAY more
Thanks for all the ❤️
✨ New Livewire feature just landed:
wire:confirm
Easily trigger a browser confirmation dialog before performing a dangerous action.
Super easy. Super powerful. 💪
Something I forgot to say during my talk:
Livewire 3's entire JS file weighs only 33kb!
That's including Alpine and all its plugins
Isn't that insane?
V2 weighed 38k and didn't include Alpine at all.
Your entire app's frontend now weighs 33Kb 🤯
That's pretty hard to beat
🚀🎉🎁
@LaravelLivewire
(v1.2) now supports File Uploads!
FINALLY
Check these out for more deets:
Blog Post:
Docs:
Screencasts:
(All have unique content)
RTs and replies with your experience are 👍🏻👌🏻🙏🏻
So... after my tweetfest about the studio display, I got a text from a Livewire Partner last night saying: go buy yourself one, on me. Like who does that? So freaking generous ❤️❤️❤️
💅 FINALLY...some branding that does this little tool justice
I still use Sushi in nearly every single Laravel app I build
Check out Sushi's new site:
Beautiful design by
@HassanZahirnia
One of my favorite things about Laravel has always been Taylor's obsessive 3-line code comments. (those pretty little comments where each line is exactly 3 chars less than the previous)
To honor them, I made a quick tool:
And did some digging for fun 🧵
🚀🚀 New Alpine plugin drop today: Intersect 🎉🎉
A simple, declarative way to trigger some JS when an element enters the viewport (scroll-triggered animations, etc...)
Oh, also it (currently) weighs only 311 bytes!
Check it oooouuuut:
🚀✍️ New Post: "Easy, Free, Serverless Laravel With Vercel"
📂 Add 3 files to your Laravel app
🖥️ Run the "vercel" command
✨ Visit your new serverless app 🤩
It's blowing my mind how easy and powerful this is 🤯
Livewire 3 Alpine Dusk test passing 🎉
That means every weird little Alpine/Livewire nook and cranny is taken care of:
Everything relating to .$wire, @ entangle, x-transition, nesting, and all of these things combined. Done. Wew
🚀📦 It's here folks: Screencasts for everything you could ever want to build in your data tables.
I don't think I wrote a SINGLE line of JavaScript in the entire series. 🔥
@LaravelLivewire
+ Alpine/Blade Components + Tailwind UI = Bliss 😍
👌🏻I do this kind of thing all the time in PHP:
Little inline caches for when a method is called multiple times within a request and don't want to "re-compute" that value.
It's called "memoization", but I call it "inline static caching"
Ok, I finally have the vision for the near future of Livewire and Alpine.
I've been doing a ton of internal experimentation and rewriting and I FINALLY feel like I've settled on things.
Some goals for the next releases:
I finally found my use-case for chatGPT: working with AWS
So insanely useful. It's telling me where to go in the console, writing IAM policies for me, giving me shell scripts to access the API.
Boy oh boy...
☝️If you are relatively new to Testing in Laravel. Here are 3 methods you NEED to be familiar with.
Understanding these will make your life much easier.
✨ Just discovered this sick tool called Popmotion (during the state of js survey)
Simple, low-level animator
You give it two values and a callback
Now it will run your callback as it animates those values
(It's actually what drives Framer Motion)
🥳 New Alpine Plugin: Persist 🍾
Easily persist data across page loads by using a nifty little decorator function: $persist()
Think data-table filters, currently active tab, preserving a user's decision to hide a notification, etc.
Dig it:
🔥 Super clean little way to disable submit buttons while a form is posting 👌
Just learned that you can reference an input element in the handler by "name" (no long document.querySelector) 🙌
(Video in reply)
☝️ Good habit: always add [type="button"]
Otherwise random forms get submitted and things get confusing
Probably common knowledge... sharing just in case it's not
✨ Alpine & Tailwind are such a magical combo
Was having so much fun building something, I had to record it.
Also demoed a new "minimum collapse" feature I added to Alpine yesterday. Dig it.
Docs for the new feature here:
Learned a crazy performance thing the other day:
Adding lots of event listeners to "window" or any single element is SLOOOWWWW
50k listeners on window takes 5 seconds
50k listeners on different elements: < .05 seconds
100x slower. Wild.
🤯 Proof Of Concept:
I built a basic version of Trello with
@LaravelLivewire
.
If I made a plugin for this draggable behavior, you could pretty easily re-create Trello without writing a single line of JavaScript or a single manual axios call. Pretty wicked stuff.
My
@github
sponsor's account is up to $32.5k/year.
Definitely not an insignificant sum of 💰
Big thanks to all you generous folks ❤️ who are making the work I love so much sustainable.
Received my first payout from GitHub sponsors 🎉
- The first payout takes 3 months (I opened the account Dec. 12)
- It includes the up-to-$5k match (future payouts will be MUCH smaller)
Super grateful to everyone who's been supporting me on GitHub ❤️👏👌
Means so much.
Livewire V3 docs progress:
V2 docs word count: 20,808
V3 docs word count: 38,401
I feel like I'm barely halfway done, and there's already twice as much content.
Trying my darnedest to pack them full of context and useful code examples 👌
✨ Probably my favorite new Livewire feature shipped today:
@ assets and @ script
- assets only load once per page
- scripts run for every component
- scripts have access to "$wire"
- no need for "document.addEventListener" anymore
- all this works with lazy loaded components
One of the awesome things about Livewire V3 is that `$wire` is real now.
An actual JS object that has all the methods and properties your PHP class has.
You can get/set anything you want.
wire:model="title" under the hood is actually: x-model="$wire.title"
And because it's
Mmmkay, gonna throw out a series on creating a data-table in
@LaravelLivewire
with shared-modal editing. (probably a bunch more stuff too)
Alpine, Blade Components, Tailwind UI, etc...
Shootin' for next week, stay tuned 📺
🎨 Borderless inputs look so clean, but lack "separation"
Add a small bottom border to them to add separation without sacrificing those sexy crisp edges. (like .shadow would do)
(I'm channelling my inner
@steveschoger
)
I don't use VS Code's "Git" panel for a lot.
But I LOVE "Undo Last Commit"
As a git command line user, an operation like this typically takes some googling/pasting/breaking things.
Now just a simple click.
Just realized Livewire is 5 years old now. 😳
Wild how a little proof of concept basically derailed every other pursuit in my life and has occupied my mind and keyboard full-time for five years straight.
Lotta code. Lotta videos. Lotta talks. Lotta friends.
🥂 to the next five
🚀🔥 Stealth drop for
@Alpine_JS
:
New "Portal" plugin!
Plop x-portal somewhere and send that DOM to another part of the page.
Works with everything you think it should 👌
Check it:
🚀🎉 Launch day baby!
New Livewire screencasts are live and 50% off!
📹 Watch 4+ hours of content
🧑💻 Access all the source code
❤️ Support this lil project
Lemme show you around the new content 🫴
✨ New screencast series:
BUILDING DATA TABLES AND A TON MORE RELATED STUFF IN LIVEWIRE AHHH
What's in it?
Welp, here's the entire course condensed into a few minutes while I play with my deluge in the background 😎
I'm working on a Laracasts series called "Livewire Uncovered" where I build a working version of Livewire from scratch.
Kinda nuts how little JavaScript I ended up with in the end to make the whole thing work 🤯
You know how software companies give student discounts?
They should also give "kid" discounts:
100% off for people under ~17yrs old
I don't know where I'd be without all the cracked software of my youth. I sure as hell couldn't pay for any of it. (Photoshop, etc...)