21 Awesome Web Features you’re not using yet
HTML-код
- Опубликовано: 29 авг 2024
- A breakdown of the most useful new features for web developers using HTML, CSS, and JavaScript. Learn about native dialog windows, WebGPU, CSS container queries, and more.
Check out clerk.com to build a beautiful user authentication system.
#webdevelopment #javascript #top10
💬 Chat with Me on Discord
/ discord
🔗 Resources
- Web Baseline web.dev/baseline/
- WebDev 101 • 100+ Web Development T...
- JavaScript 101 • 100+ JavaScript Concep...
- Web Performance • The ultimate guide to ...
🔥 Get More Content - Upgrade to PRO
Upgrade at fireship.io/pro
Use code YT25 for 25% off PRO access
🎨 My Editor Settings
- Atom One Dark
- vscode-icons
- Fira Code Font
🔖 Topics Covered
- Beginner web development tutorial
- What is WebGPU?
- Web development best practices
- New CSS features in 2023
- New JS features in 2023
- Measuring performance on the web
- How to build websites from scratch
Does your app need authentication? Check out Clerk - their platform is super impressive clerk.com
Ima just grab first reply rq
@@skifli no I'm first
It takes even less time to say uwu ! ooowooo!
Now That's what I'm TALKIN BOUT !!!!!
Fireship be 🔥
Can make a pwa with teleporthq in magic minutes 🪄
Fireship rolling out videos so fast, even javascript frameworks can't keep up.
lmao
😂😂😂😂
He's partnering with ChatGPT
another one
😂😂😂😮😮😮
This is insane, I can't wait to use all of these features in 9 years when they're fully implemented and everyone's browser is updated
This...The real problem.
All the major ones support it, filter out the non supported browers on connection and direct them to a site that’s compatable
0:00 Intro
0:30 Native HTML Dialog
1:20 Sponsor
2:03 Popover
2:29 WebGPU
3:11 Container Queries
4:00 Color-Mix
4:28 CSS Nesting
4:44 Color Fonts
5:11 Vitals Extension
5:35 Array. prototype. at
5:57 Deep Copy
6:56 TransformStream
7:01 Import maps
7:06 Json Imports
7:12 Transform Props
7:19 Trig Functions
7:26 Initial Letter
7:32 Viewport Units
7:38 :focus-visible
7:45 Inert Prop
7:54 View Transition API
8:02 Animation-Timeline
8:14 Outro
6:52
Not all heroes wear capes, some are named random.
Ffffffff I'll just use markdown now 😂
@@tryskacz 7:23 Circumsize
RUclips should add a save comment button before other comments bury this one.
2:54 "... and the WebGPU version is far more majestic!"
Me, who sees no difference: "Oh, yes indeed!"
I thought the same lol
Majestic may not have been the best word... At least for the example, but webGPU will offer MAJOR performance gains and new abilities such as ray tracing.
me watching in 240p: "Oh, yes indeed!"
Pretty sure it was meant kind of sarcastic.
@@chazbertino6102 webGPU doesnt have support for hardware raytracing right now
That structured clone for objects one is definitely one I’ll be using a lot. And will probably help new devs. It’s not as hard now that I know what reference types are. But at the beginning I remember having a hard time tracking down bugs due to me changing objects directly
Same bruh
I cant believe JS didnt have a proper copy semantics all this time, JS bad I guess.
Why no Object.clone but global function, meh.
@@peanut3645 Yes, I have worked in WordPress/PHP and Vue among other things. I really dislike how you have to keep global functions and variables in your mind.
Don't forget to footgun yourself by cloning an object with a custom prototype and spend a week debugging random bullshit
Best addition for me is #17 with the new viewport units. Implementing a fullscreen design that considers the toolbar is actually possible now.
TL;DR
1. 0:32 - element
2. 2:08 - popover attributes
3. 2:30 - WebGPU
4. 3:12 - container queries
5. 4:00 - color-mix
6. 4:28 - CSS Nesting
7. 4:46 - Color Fonts
8. 5:12 - Web Vitals Extension
9. 5:37 - Array.prototype .at
10. 5:59 - Deep Copy (structuredClone)
11. 6:57 - TransformStream
12. 7:02 - import maps
13. 7:06 - json imports
14. 7:12 - transform props
15. 7:19 - trig functions
16. 7:26 - CSS initial-letter property
17. 7:33 - viewport unit (svh, lvh)
18. 7:39 - :focus-visible
19. 7:45 - inert attributes
20. 7:54 - View Transitions API
21. 8:03 - animation-timeline
this.replace("TL;DR", "TL;DW");
@@Dev-Siri nice
after 10, fireship went too fast just reading the names of the features lmao
It should be called ToC, not TL;DR. The latter implies that you summarize what is said, this ain't no summarization. This is just the table of contents.
99 likes... Hmm i'm going to fix it.
100 now! 🎉🎉
Very nice to be kept up-to-date this way, please do more of this :D
06:48 I wouldn't be surprised if _structuredClone_ is basically just:
const structuredClone = (object) => JSON.parse(JSON.stringify(object))
That would be hilarious, but (un)fortunately it is not the case.
structuredClone has an ability to parse Maps, Sets or Dates for example, that would crash the simple JSON hack.
Also functions. The JSON hack doesn't work for them
why can't you clone by: newObj = { ...oldObj } ?
The object spread only works on the first level, If oldObj has properties which are non primitives e.g. objects, dates, functions, arrays then those would still point to the same memory in newObj as in oldObj
@@ctdesing it's explained in the video starting from 6:15
just got a job at google after showing your certificate 🙌🙌
I'm very grateful. now I just need to learn html
*HTML is the best programming language ever!*
That was you? I just LOST my job at Google because some schmuck showed up with one of those damn certificates! Thanks a lot.
There's also those non-mutating functions of arrays such as .toSorted() or .toReversed() that do the same as the equivalent but they make a full copy of the object
If I hadn't subscribed and enabled notifications for Fireship, I would have definitely learned about these Web features months later.
Which is fine, first adoption is not worth the trouble most of the time
can confirm
Hi @fireship, a correction: deep copy, more specific struturedClone is browser / window specific method, not part of ES / ECMAScript. As such will not be available in js runtime like nodejs, they have to implement.
And this feature exist and available to all browser almost more than two yrs, because already use it last yr.
And others few js things mention may also be browser / client specific too. ;)
And you forget to mention another cool feature very useful also like dialog, which is details ( to mimic accordions in booostrap), this exist since 2020 and already use in my website.
The first one got me crying of happiness. Building modals was always so annoying and time consuming! I’m excited about many of these new features!
Behind the scenes:
Export function structuredClone(input){
Return JSON.parse(JSON.stringify(input));
}
"Now it's not a hack."
**bruh sound effect**
Probably not too far of the truth
just in case anyone believes it, this is of course not true and the function does not behave in exactly the same way
@@cyber_chris obviously
javascript be like....
I always thought json imports using asserts keyword was supported everywhere but I guess it's supported by only chrome. Excited about view transitions api, been waiting for it and hopefully css-intrinsic-size and content-visibility get major support so we can finally get rid of virtualized tables just like we did with dialog and need for js based modals.
Container queries are a huge win! Way overdue. Unfortunately, they have a ways to go. Right now they are a challenge to work with within web components and still require Google's polyfill which Google recently abandoned. FireFox support is also iffy.
Polyfill is superseeded by Lit
@@whatsanimesh Thanks - Lit is great for Web Component development, but it doesn't solve the CSS Container Query issue
One of the rare channels (I got two or three max on youtube lol) that when I start watching, I first pause, take a notebook, like the video, then unpause and start watching. ❤
To be honest it took me quite some time to get used to these fast paced videos coz I am a slow learner. But it ultimately grew up on me and these days, I would rather watch these “concentrates” rather than fluffy and gimmicky ones. I just pause/unpause/rewind/slow down etc.. 😂
Seriously, I can’t thank you enough for your contributions man. Just know that there is atleast one person who likes these. Haters gonna hate anyway.
You can slow down the video.
@@tarcisiosmelo wow, yes I guess.
CSS Nesting is actually so sick because it is so needed LMFAO
Hell yeah, it's fucking amazing.
Nesting was the main reason I used SCSS.
The only RUclips channel so far where I fear if I need to slow down the playback speed.
Anyway, thanks for keeping us updated and I love your video styles. ❤
This sounds awesome. Many of the CSS improvements remind me of Sass. And a lot of the js improvements remind me of lodash.
Edit: Thank you for a gpt-free video.
It's insane that it took so long to get those new viewport units, I remember I used to do such weird hacks and still do to fix this issue on mobile
I wonder how libraries will be updated with these new web standard features. I use certain modal libraries for example and hope they will either not be needed or be way smaller as they won't need to recreate a lot of the features. Could you make a video on when to write it yourself vs using a library?
just use a maintained library, they will update eventually and you won't have to rewrite your code. they might already handle accessibility for you now, which you might just miss if you attempt to implement the new stuff yourself. Libraries also tend to implement progressive development, which will show the new stuff on supported browsers and the old stuff on the rest, handling a lot of the boring logic for you
Third-party libraries like modal, tooltip, accordion, ... became popular because they handled tedious things like animations and accessibility (keyboard friendly, screen reader/SEO friendly, not blocking the main thread, user preferences like reduced motion, dark/light theme, touch friendly). The problem with it was that they gave very little to no configuring on how it looks and feels or if it matches the project theme. Now, with new web standard features, we can build accessible web components with cool animations on our own that are highly customizable at the same time. You can build your own components once and use them across multiple projects.
Hope so, biggest issue ive found with the native dialog tag is the fact it doesn't use z-index it uses the new "Top layer" system and as such most component libraries who still use z-index for dropdowns and similar don't work at all with the new dialog component as they'll just show up under the dialog. Otherwise I think it's a nice feature.
Won’t ever work. Nothing can go on top.
Having dealt with popovers and dialogs lately, im so happy to see these additions
if you were asking what the arabic text at @05:06 means:
لما كان الإعتراف بالكرامة المتأصلة في جميع
it translates to: for what was the recognition of the inherent dignity of all
(it's incomplete sentence tho)
thank you :D
can't wait to use these new html features and find 99% users never updated their browser
That's why modern browsers update themselves without even asking you
@@ZoharYosef
True, my browser forced me to update a few days ago lol.
@@ZoharYosef
turns out malware had it right all along!
This is why I don't want to be obsessed over new features, it's unethical in a way for the client.
You can't just not innovate because some people don't want to keep up. They'll learn to keep up.
I love seeing native JS and HTML absorbing framework features. Half of the reason that JS frameworks experience so much churn is that they're constantly trying to make up for the lack of native features.
Very engaging, high quality videos Fireship! You are doing great!
I remember writing my own deepcopy function using recursion to create a decoupled new object.
JS has some really stupid holes in the development tooling. Deepcopy and the last array element accessing are great examples.
It's all so shit though. Anyone have a clue on why they didn't implement the array[-1] syntax, and rather opted to add a new .at() method to every array?
@@illyias .findIndex() returns -1 if it can't find the element we are looking for. I don't know for sure but that might be the reason.
@@illyias If they changed the behavior of the existing syntax (array subscript), that would break many websites and libraries that rely on the fact that currently array[negative_number] returns undefined. Unfortunate situation, but you can only ever add new APIs, never change the behavior of APIs that are already out in the wild.
The new viewport units that respect the toolbar make me so happy, I could cry.
I feel you... 😉
Finally, some good css updates!!!
I have been waiting for containers and nested css!
The new sizes are good to, mobile was always a pain to deal with the bars.
the timing for dialog was perfect for me, didn't know it even existed, now I'm gonna use it! thanks jeff!
Fun fact, in my language (Hungarian), we say "double v" instead of "double u". However, for a url, we say "v". Huge time saver. 🤯
Pont ezt akartam kommentelni lol
I asked for a sticky pseudo class in the official Google Chrome Developers channel, this will be useful to check if an element is sticky or not and apply styles accordingly. Surprisingly Una Cravets replied and said sticky will be the first state implemented for state queries
Something new that’s gonna be pretty cool is HTTP’s new QUERY method
Almost forgot that this one of the most awesome channels on RUclips.. Fireship 🔥🔥
Look at how realistic these AI-made videos are!
Look at how realistic these AI-made comments are!
Look at how realistic these AI-made replies are!
Look at how realistic these AI-made are
Look at how realistic these AI
Look realistic AI
Bruh, I was about to create a custom modal for a project and came across this video. You are a champion amongst men.
Ok somehow that mobile toolbar visibility css thing is what i see as most exciting
Css has been lacking, many of these things have been requested for 10+ years.
I remember in 2007 reading a book in the library that talked about how css needs nested styles...
Mobile has been pretty difficult with every device being different and js d8dnt really make it better sometimes.
Wow, so much new features making coding easier, Thanks Fireship!
My favorite thing about the dialog element is native focus trapping
I absolutely love your content. I am a passionate front-end web developer and this is fantastic!
You are passionate about the frontend. I have never heard anyone say that. What particularly draws you... Is it the writing of complex algorithms or the css or js
@@princeadigwe3764well, now you've heard it. First of all not a lot of people are actually "passionate" they say for some reason to convince their brain maybe. Secondly, yes people can be actually passionate about frontend development, for me personally its about how you can build your own stuff, easily and quickly.
@@princeadigwe3764 I mean I can understand people enjoying building shiny UI and front end of web pages/SPAs
@@princeadigwe3764 I've been a developer on the front-end for a good 15 years. At first, i was given a psd document and told to develop a functional php website that was compatible on all browsers at the time, including the dreaded IE8. Despite the frustration, there was a level of satisfaction that it finally worked. That, and using JS / Jquery to make the page do something sparked interest. I've enjoyed continuing to learn new web technologies, libraries and frameworks, new css features, etc. There's something magical about creating a good user experience (although i am not a fan of the actual designing aspect) and using (and understanding) different front end libraries and frameworks to achieve it.
Also, channels such as Fireship do a really good job at getting one excited to trying new things and exploring new territory.
Crazy how there's a dialog feature! My website's Modal is always a pain to deal with, with z-index bugs among other things.Will use this soon.
5:20 Nothing to see there, just normal goat weed.
True af 🤣
Inert is such an awesome feature in terms of accessibility - it can completely hide entire sections of e.g. a navigation without having to toggle tabindex on every single focusable element... Also one of the cool things included in Dialog (it will give you inert out of the box)
I'm wondering how you able to track all these developments and roll out videos so quickly. A video around keeping track of all these things would be great for Fireship Community..!!
Hes got staff.
He is replaced by A.i
I remember a time (not that long ago) when all bleeding-edge features were just "fantasy web" things with the hope that some of the features may actually be useful in 2-3 years. With Chrome, Edge and Firefox (and Mobile Safari to a lesser extent) staying pretty up to date with this stuff though, it all feels usable now or in the near future.
The death of Microsoft Internet Explorer has been very liberating, shall we say.
HTML got a huge update!
I’m a new Web Developer and feel a bit overwhelmed by the massive amount of stuff I need to learn
Welcome to the club. That feeling does not do anything other than worsen - embrace it. There's always going to be orders of magnitude more things you don't know than things you do.
Thankfully you don't need to know it all.
Same here. Just keep going and do stuff you like the most. xD
Now imagine how would you feel if you actually picked something more challenging
Tbh, you don't need to learn all the stuff available out here. In most cases as web dev you will write pretty simple things, but will have to fuck with other unrelated to this stuff (like not working third party tool, random shitty bug from the internal library that you are not allowed to touch or fix, etc.). And keep in mind that most businesses will require you to use old-fashioned things to achieve maximum support for the old browsers.
And also let's not forget that nowadays you can use AI tools to ask how to do things in modern way, like bing, phind or perplexity AI powered search engines.
Fireship, you videos are helping me so much complete a Coding Bootcamp. I can understand more easily, even though its only week 6 of 10
Love your content.
The sarcasm gets me everytime... The first Character is awesome!!! Thanks for the info
I am going to be honest and say I saw absolutely no difference between the webgl and webgpu stuff you showed 😅
Damn bro, that Clerk ad was actually really compelling. I use NextAuth rn, but I'm lowkey intrigued. Also, this video was fire(ship)!
I like how JS and CSS are becoming more of "something to avoid" while HTML is just getter better & better.
Can't wait for the day where JS & CSS bundles are at 200kb & the actual HTML document is 1MB (Brotli)
its always been like this why make a hacky js function that breaks accessibility and iphones instead of using the correct html tag
On the contrary, these new features are increasingly tied into CSS.
Why does FireshipX actually look good lol
i've heard about most of these but it's amazing to know that they're finally supported everywhere
Fireship Should be CEO of Space X.
This(dialog) is (was) an actual problem I was solving. Glad I subscribed to this channel
This video is a gem
Can't wait for all of these to come to Safari in 2030, but not before a few of them silently break with an OS update. Isn't web development fun?
Safari supports all of them except WebGPU and view transitions -- firefox is actually the main one lagging behind
7:33 Made my day. Just added mobile support for my web game. It's only played in landscape mode, the toolbar allowing you to scroll bothered me to no end.
Kids drink Tea 🍵 in Morning
Men drink Coffee ☕
Legends drink Beer 🍺
Valademir Putin drinks Vodka 🍷
Fireship (🔥 🚢 ) drinks this 5:20 📯 🐐 ☘️
Being updated with a summary of newest web features is awesome! Thanks for that
"structuredClone" wow this was so needed!
Great. I knew '-1' of the features mentioned. Lifesaver ♥
Love this video. Thanks for making it!
So excitiing, can't wait to use these new features in 2030 when all the people will have (maybe) updated their browsers/webviews.
Fireship is definitely excited about everything... The first 10 were slow and in detail... But the rapid fire others caught me off guard 😂
LOVE THE TIPS VIDEOS. do more. and about your sponsor, cleark i think i gonna use it
Fire hose ending.... lol. Great stuff.
Also - great to see the GL. Of course, we had that with Molehill around 2011.
Thank you for the free certificate at the end man, I really appreciate it
Finally, one more certificate! thanks Fireship!
This channel is God sent. Such quality content , what I need
Been waiting to be able to import json in js for yearssssssss. Excited about that one
6:41 "but I am happy to report that life doesn't need to be this way" 🤣🤣🤣 We love you Jeff! 😄
Thanks for the update. You give me the inspiration to stay up to date in web technologies. Can you please do a video on ViewTransitionsAPI
Wow dialogue is a massive game changer!
As your regular viewer I never knew your 2nd channel existed. You might want to push it a bit more on this channel. Anyways heading over there rn for more content.
Super helpful video. Always excited to watch your content. Very rewarding.
Been working on a website with lots of pop ups and the diolouge fewture is a game changer for me
Love the video! So many useful new features. At 6:00 you mentioned JS is pass-by-reference, isn't it pass-by-value?
Awesome.... 🎉 This is insightful.. lol, I am anxious... I feel the gush to start using these in my projects 😂
I’m probably going to use all the css ones when making my next CSS only web app
this is incredibly helpful. how does one find about about new stuff like this?
I am actually going to put that certificate on my LinkedIn even though I knew none of these :)
Nah this channel is gold, and I wasn't even looking for copper
OMG that's right ! You can use the stringify + parse to deep copy !
No more custom recursive copy function ! Thank you ! It might seem basic but a game changer for me ! I will give this old forgotten project a new live !
Easily one of the most useful videos that I watched in a while.
Cool fireship! these will help me a lot!!
So I took the certificate you gave us to one of the companies for my interview... They did not make me an employee.
Though for some reason, the boss came down, made me sign some papers and now I'm a major shareholder and part of the company's bureau, but they said I can just never come to meetings and get paid for life.
They also thanked me so much because the company's stock value rose by 27.3% (as of that moment) because of I let them post the certificate on the company's public twitter account.
Thank you Fireship.
3:11 that container feature is awesome
Great video.
Please make video on more new JavaScript APIs
10th one is the most needed one. It took two freaking days for me to know and debug that issue of pass by reference in JS
I love your videos man, it's always cool content that I actually don't know. It's fast but not overwhelming, and it's also funny. keep it up !
Looking forward to using some of these! Just discovered structuredClone myself, can't believe it was actually finally added!
I absolutely love containers ❤
Imma need more of these periodically pls
nice video, the frontend is progressing very fast as well.