We recently introduced the AssetMapper component and Symfony UX to make the most of the web platform and reduce the amount of JavaScript code to the absolute minimum. This “radically simple” approach is generally the most efficient, and should be the go-to method for most new Symfony applications. However, API-based, JavaScript-heavy applications are still inevitable…
Category: JavaScript
Mitigate Attacks on your PHP Supply Chain
Here are the slides I presented at the AFUP Day Lille 2023 and the companion Pull Request on Composer: Abstract When you install a JavaScript library, it usually comes with hundreds of transitive dependencies, i.e. libraries that are installed as a side effect because they are essential to the operation of the library you want…
Symfony ImportMaps: Manage Your JavaScript Dependencies Without Node
View the recording of this talk (in French) View the Pull Request Yarn, NPM, pnpm, Babel, SWC, Webpack, TurboPack, Rollup, Parcel… Is it really necessary to introduce so much complexity to create a beautiful and interactive website? The Symfony UX initiative greatly simplified how to build frontend applications with Symfony by going back to the…
API Platform 2.5: revamped Admin, new API testing tool, Next.js and Quasar app generators, PATCH and JSON Schema support, improved OpenAPI and GraphQL support
I’m very excited to announce the immediate availability of API Platform 2.5! API Platform is a set of standalone server and client components for building and consuming REST (JSON-LD, Hydra, JSON:API…) and GraphQL APIs. The server components use PHP and Symfony while the client-side components (which support any Hydra-enabled web API, even the ones not…
Mercure: Real-Time APIs for Serverless and Beyond
Here is the slide deck I presented during API Days SF 2019: Mercure is a protocol allowing to push data updates to web browsers and other HTTP clients in a convenient, fast, reliable and battery-efficient way. It is especially useful to publish real-time updates of resources served through web APIs, to reactive web and mobile…
Using Next.js and Material UI Together
Next.js is a convenient and powerful framework for React. Its main benefit over using React directly is its transparent support for Server-Side Rendering.Material UI is a very popular set of React components implementing Google’s Material Design guidelines. Both libraries are impressive, but there are some tricks to know to make them playing well together. Bootstrapping…
React ESI: Blazing Fast SSR
React ESI is a super powerful cache library for vanilla React and Next.js applications, that can make highly dynamic applications as fast as static sites. It provides a straightforward way to boost your application’s performance by storing fragments of server-side rendered pages in edge cache servers. It means that after the first rendering, fragments of…
Symfony on steroids : Vue.js, Mercure, Panther (SymfonyLive Paris)
Watch the video (in French)! Thanks to the new capabilities of the web platform (web components, Progressive Web Apps…) and the rise of modern JS libraries (Vue, React, Angular) almost all modern Symfony applications must leverage the frontend ecosystem. Symfony 4 embed many gems that make it easy to integrate modern JavaScript within the framework,…
NPM dependency hell: comparison with Symfony, Laravel and API Platform
You may have noticed the recent fuss about the compromise of event-stream, a popular NPM package: event-stream is a transitive dependency of many popular JavaScript projects including Vue, Angular, Gatsby and VSCode (some of them are using a version that isn’t affected by the attack). This attack raised, again, the problem of the JS dependency…
Panther: test your Symfony apps with real web browsers
Panther: test your Symfony apps with real web browsers from Les-Tilleuls.coop From a few lines of jQuery to modern React/Vue… PWA, Symfony apps always contain JavaScript code. Unfortunately, the SF functional test helper and the Goutte web scrapping lib aren’t able to execute JS code. It means that they cannot assert on client-side generated HTML,…