Archive

Archive for the ‘Others’ Category

The Mistakes of CSS

January 30th, 2025 No comments

Surely you have seen a CSS property and thought “Why?” For example:

Why doesn’t z-index work on all elements, and why is it “-index” anyways?

Or:

Why do we need interpolate-size to animate to auto?

You are not alone. CSS was born in 1996 (it can legally order a beer, you know!) and was initially considered a way to style documents; I don’t think anyone imagined everything CSS would be expected to do nearly 30 years later. If we had a time machine, many things would be done differently to match conventions or to make more sense. Heck, even the CSS Working Group admits to wanting a time-traveling contraption… in the specifications!

NOTE: If we had a time machine, this property wouldn’t need to exist.

CSS Values and Units Module Level 5, Section 10.4

If by some stroke of opportunity, I was given free rein to rename some things in CSS, a couple of ideas come to mind, but if you want more, you can find an ongoing list of mistakes made in CSS… by the CSS Working Group! Take, for example, background-repeat:

Not quite a mistake, because it was a reasonable default for the 90s, but it would be more helpful since then if background-repeat defaulted to no-repeat.

Right now, people are questioning if CSS Flexbox and CSS Grid should share more syntax in light of the upcoming CSS Masonry layout specifications.

Why not fix them? Sadly, it isn’t as easy as fixing something. People already built their websites with these quirks in mind, and changing them would break those sites. Consider it technical debt.

This is why I think the CSS Working Group deserves an onslaught of praise. Designing new features that are immutable once shipped has to be a nerve-wracking experience that involves inexact science. It’s not that we haven’t seen the specifications change or evolve in the past — they most certainly have — but the value of getting things right the first time is a beast of burden.


The Mistakes of CSS originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags:

The Role of Custom CMS Development in Improving Content Management for Enterprises

January 30th, 2025 No comments

Imagine a delicious dish that hits all the right flavors and textures next to a takeaway meal with similar ingredients but made to appeal to everyone. Which one would you choose? We bet it would be the former and it’s not even close.

Why: The first dish was made specifically for you by a seasoned chef who knows how to choose the freshest ingredients and satisfy your taste.

As this is a more impactful decision, why would you choose anything different for your content management system (CMS)? You don’t have to settle for a generic solution if you can choose custom CMS development.

But before you make a final decision, it’s time to explore why this is the best decision.

What Are Custom CMS Solutions?

A custom CMS is a platform software developers design specifically for your enterprise to match your existing tools and workflow to the T. This typically happens when off-the-shelf solutions lack the capabilities or features necessary for your business. 

Another common reason for this move is that you’ve outgrown your old platform and want to have a say in custom CMS development. Perhaps you already have a clear vision of what this new solution should do, its key characteristics, and the tools it should include. 

Unlike generic platforms, a custom content management system stands out because you can tweak it later on if your goals change. In essence, this means a tailored platform adapts to and grows with your enterprise.

It’s entirely in your control, and you can ask a software developer to add or remove a feature anytime. This eliminates unexpected cost surprises or having to change your enterprise to fit the CMS.

How Are CMS Solutions Different from CRM?

The difference between CMS and CRM platforms is that CMS helps create, store, and publish content, while CRM is about managing customer relationships, sales pipelines, and personalized interactions.

Benefits of Custom CMS Development

Custom CMS development services have multiple perks, but the main ones are:

1. Tailored to Fit Your Enterprise Like a Glove

A custom content management system doesn’t force your processes to adapt to pre-existing architecture, as it creates one that works with how your teams already operate. Whether you need it to simplify content approval processes across multiple departments or integrate with proprietary tools, it will do its job.

2. Full Control Over Development and Beyond

Nothing is left to chance with custom CMS development because you’re not working around the limitations of someone else’s design. Instead, your team gets to decide what gets built, tested, and deployed.

A tailored platform is a ticket to updating or expanding your CMS without waiting for a software vendor’s roadmap. Do you want to integrate with a new AI tool or need a custom analytics dashboard? Check and check.

3. Zero Risk of Unexpected Software Changes

To tell the truth, you’re at the mercy of the vendor when using third-party CMS platforms. You can’t prevent them from removing important features or altering pricing structures at their will while disrupting your workflows.

On the flip side, custom CMS solutions are synonymous with stability and predictability. You control the versioning, updates, and maintenance schedules. Moreover, you’re not tied to a service provider who may put their profit first and neglect your needs.

4. A Competitive Edge Tailored to Your Market

The CMS market will reach $23.17 billion this year, meaning it’s a crowded marketplace where differentiation is key. Custom CMS development gives you what no other solution does; it’s uniquely yours and leaves room for innovation.

You have the freedom to create solutions no one else has, whether you want advanced personalization or superb omnichannel publishing. You can also enjoy greater efficiency, as these platforms allow you to automate repetitive tasks like content scheduling or approval workflows.

5. Higher Security That Corresponds with Your Specific Needs

No enterprise should view security as just a feature because this should be a guaranteed necessity. A custom content management system? opens the door to a level of security that generic platforms simply can’t match.

While off-the-shelf CMS platforms rely on universal updates and plugins (which can introduce vulnerabilities), the design of a custom CMS matches your security requirements with utmost precision.

Why Custom CMS Development Services Are the Best Solution for Enterprise-Level Content Management?

As large-scale organizations, enterprises deal with complexities and scales that work best with equally complex and well-rounded platforms. These businesses typically approach every purchase as a strategic investment, giving an advantage to tailored solutions over generic platforms.

Custom CMS development comes with features and possibilities that simplify intricate workflows and connect diverse teams. Moreover, it makes global outreach much easier, which is often among the main goals of large enterprises.

Unlike off-the-shelf platforms that appeal to a wide audience and often sacrifice depth for breadth, a custom content management system? supports highly specific use cases. Besides integrating with an enterprise’s existing infrastructure, it addresses nuances thanks to its purpose-built structure.

This is what makes tailored platforms the best match for massive organizations, such as a global retail brand. These enterprises typically need a CMS that supports multilingual content, meets regional compliance requirements, and corresponds with localized marketing campaigns. Custom CMS solutions don’t only do that but also offer centralized oversight.

When and Why Should an Enterprise Choose a Custom CMS Solution?

Although custom CMS development unlocks many advantages, using it isn’t a decision you should take lightly. So, when is a tailored platform the best choice?

1. When Enterprise Operations Are Too Complex for Off-the-Shelf Solutions

Enterprises have various demanding responsibilities, from multi-tiered approval chains for content publishing to meeting industry-specific compliance requirements like GDPR. If your website requires frequent updates across departments or relies on continuous expansion, a standard CMS often falls short. Custom solutions accommodate intricate workflows and allow teams to stay agile while managing updates without bottlenecks.

2. When Scalability Is Mission-Critical

If your enterprise has reached a point where a CMS must not only handle increased traffic but also adapt to transformations, such as launching new product lines or expanding the number of website pages, a custom solution is often a must-have. Off-the-shelf platforms can quickly become bottlenecks, limiting growth when your architecture needs to scale fluidly alongside your business.

3. When Long-Term ROI Is More Important Than Initial Costs

Let’s not embellish things — custom CMS development can be pricey upfront. However, by eliminating recurring costs tied to licensing, third-party plugins, and inefficient processes, it becomes a long-term investment. For enterprises prioritizing ROI through operational efficiency and reduced dependency on external webmasters, a custom CMS provides a more sustainable, independent approach.

4. When User Experience Needs to Be Non-Negotiable

A CMS is often the bloodline of the CX because a subpar user experience can erode trust and engagement. According to Statista’s 2024 survey, 64 percent of consumers prefer buying from companies that tailor experiences to their wants and needs. Users also expect interfaces to comply with WCAG standards and be consistent across platforms, which custom CMS solutions can achieve.

5. When Security and Compliance Are Paramount

You may think you hear this every year, but 2024 was a notoriously bad time for ransomware and cyber warfare, starting with the National Public Data breach. Whether you have existing security issues or want to protect your enterprise from sophisticated digital threats, a custom CMS unlocks encryption, advanced access controls, and compliance checks.

How to Use Custom CMS Development to Improve Your Enterprise Operations?

Here’s what implementing custom CMS development services can do for your enterprise:

Turn Data into Actionable Insights Across Teams

Your enterprise likely generates vast amounts of data across marketing, sales, customer support, etc. A custom CMS won’t only store your content but integrate with analytics platforms and AI-driven insights to:

  • Optimize workflows: A tailored solution can pinpoint bottlenecks in processes like content approval or publication and recommend changes necessary to keep your efficiency on point.
  • Connect disparate teams: One of the main perks of a CMS is that you can integrate it with CRMs, customer feedback systems, and internal databases, giving every department access to content and data in real-time.

Reduce Operational Complexity Through Process Automation

Say farewell to time-consuming and mundane tasks because custom CMS platforms make the following possible:

  • Content creators no longer need to publish localized versions of articles one by one because the CMS can automate translations and adapt formatting for specific regions or platforms.
  • AI can make legal and compliance reviews automatic while flagging content outside regulatory standards before it goes live.
  • Personalized workflows ensure that tasks, such as creation, editing, reviewing, and publishing, are routed to the right people at the right time, cutting back on delays.

Create an Agile Framework for Content Management

Technological changes have accelerated and become more drastic, presenting enterprises with unpredictable markets. A custom CMS can protect you by providing the much-needed ability through:

  • A quick integration of emerging technologies (e.g., AI-driven personalization or AR/VR interfaces) without imposing significant overhauls.
  • Workflows and user interfaces that adapt fast to new business models or priorities as your enterprise pivots in response to changing market demands.
  • A capability to support new products, services, or regional expansions effortlessly.

Improve Collaboration Across Geographies and Departments

You never have to worry that a custom CMS will be the cause of operational inefficiency, as it:

  • Provides centralized content libraries with role-based access and enables teams across geographies to collaborate without duplicating effort.
  • Offers multilingual capabilities for both content creation and system interfaces, meaning international teams can contribute hassle-free.
  • Integrates with communication tools like Slack or Microsoft Teams to create a real-time feedback loop during content development.

Common Challenges Enterprises Face and How Custom CMS Solutions Overcome Them

Let’s explore the most common hurdles and how custom CMS development solves them.

Managing Decentralized Teams Across Global Locations

Since enterprises typically have teams and collaborators in different time zones and locations, they tend to struggle with fragmented content management processes, misaligned messaging, and delays in approvals. Custom CMS solves this using:

  1. Localized Workflows: Organizations can easily automate content approval based on the team location and set the grounds for faster turnarounds while maintaining standards intact.
  2. Multi-Language and Localization Support: A custom CMS means no reliance on external plugins because it natively integrates features to manage multilingual content and cultural localization.

Balancing Speed with Quality in Content Creation

Fast content production is among the most sought-after demands in enterprises. However, generic CMS platforms rarely have what it takes to address the unique approval and compliance workflows.

Meanwhile, custom CMS development addresses it using:

  1. Advanced Automation Features: A custom CMS can integrate AI-powered tools that suggest edits, flag non-compliant content, and even auto-format content according to predefined brand guidelines.
  2. Collaborative Editing Environments: Features like real-time collaboration, task assignment, and change tracking allow multiple teams to work efficiently on the same project without losing control over content accuracy.

Dealing with Legacy Systems and Proprietary Infrastructure

Enterprises often rely on a mix of legacy systems and proprietary platforms vital to their workflows. Yet, standard CMS platforms frequently fail to integrate with these systems, mounting inefficiencies and redundant efforts.

A custom content management system? sorts this out through:

  1. Tailored Integrations: A custom CMS is built to blend with your specific technology stack. It bridges the gap between legacy systems and modern applications, translating into smooth communication and reduced manual data transfer efforts.
  2. Future-Ready Architecture: Unlike rigid, off-the-shelf solutions, custom CMS systems are designed with scalability and future integrations at their core.

Developer Satisfaction and Productivity

Every organization strives to maintain its top talents, and enterprises are no different. Generic CMS platforms often frustrate developers with their rigid frameworks and limited customization options, making it harder to tailor solutions or innovate.

Custom CMS solutions address this through:

  1. Flexible Design: A custom CMS platform is often the best choice for developers because it adapts to their coding preferences while promoting innovation.
  2. Streamlined APIs and Documentation: Custom CMS systems often include robust APIs and comprehensive documentation, making integrations and custom feature development far easier for technical teams.

Conclusion

Custom CMS development may start as a more demanding investment, but its long-term advantages more than justify it. As a flexible and well-rounded system, it’s the wisest choice for enterprises, as well as their developers.

The move to this architecture begins with finding the most reliable custom management systems and ends with breaking free from generic platforms that don’t offer the same value.

Featured image by Defrino Maasy on Unsplash

The post The Role of Custom CMS Development in Improving Content Management for Enterprises appeared first on noupe.

Categories: Others Tags:

The Digital Playbook: A Crucial Counterpart To Your Design System

January 30th, 2025 No comments

I recently wrote for Smashing Magazine about how UX leaders face increasing pressure to deliver more with limited resources. Let me show you how a digital playbook can help meet this challenge by enhancing our work’s visibility while boosting efficiency.

While a design system ensures visual coherence, a digital playbook lays out the strategic and operational framework for how digital projects should be executed and managed. Here’s why a digital playbook deserves a place in your organization’s toolbox and what it should include to drive meaningful impact.

What Is A Digital Playbook?

A digital playbook is essentially your organization’s handbook for navigating the complexities of digital work. As a user experience consultant, I often help organizations create tools like this to streamline their processes and improve outcomes. It’s a collection of strategies, principles, and processes that provide clarity on how to handle everything from website creation to content management and beyond. Think of it as a how-to guide for all things digital.

Unlike rigid rulebooks that feel constraining, you’ll find that a playbook evolves with your organization’s unique culture and challenges. You can use it to help stakeholders learn, standardize your work, and help everybody be more effective. Let me show you how a playbook can transform the way your team works.

Why You Need A Digital Playbook

Have you ever faced challenges like these?

  • Stakeholders with conflicting expectations of what the digital team should deliver.
  • Endless debates over project priorities and workflows that stall progress.
  • A patchwork of tools and inconsistent policies that create confusion.
  • Uncertainty about best practices, leading to inefficiencies and missed opportunities.

Let me show you how a playbook can help you and your team in four key ways:

  • It helps you educate your stakeholders by making digital processes transparent and building trust. I’ve found that when you explain best practices clearly, everyone gets on the same page quickly.
  • You’ll streamline your processes with clear, standardized workflows. This means less confusion and faster progress on your projects.
  • Your digital team gains more credibility as you step into a leadership role. You’ll be able to show your real value to the organization.
  • Best of all, you’ll reduce friction in your daily work. When everyone understands the policies, you’ll face fewer misunderstandings and conflicts.

A digital playbook isn’t just a tool; it’s a way to transform challenges into opportunities for greater impact.

But, no doubt you are wondering, what exactly goes into a digital playbook?

Key Components Of A Digital Playbook

Every digital playbook is unique, but if you’ve ever wondered where to start, here are some key areas to consider. Let’s walk through them together.

Engaging With The Digital Team

Have you ever had people come to you too late in the process or approach you with solutions rather than explaining the underlying problems? A playbook can help mitigate these issues by providing clear guidance on:

  • How to request a new website or content update at the right time;
  • What information you require to do your job;
  • What stakeholders need to consider before requesting your help.

By addressing these common challenges, you’re not just reducing your frustrations — you’re educating stakeholders and encouraging better collaboration.

Digital Project Lifecycle

Most digital projects can feel overwhelming without a clear structure, especially for stakeholders who may not understand the intricacies of the process. That’s why it’s essential to communicate the key phases clearly to those requesting your team’s help. For example:

  • Discovery: Explain how your team will research goals, user needs, and requirements to ensure the project starts on solid ground.
  • Prototyping: Highlight the importance of testing initial concepts to validate ideas before full development.
  • Build: Detail the process of developing the final product and incorporating feedback.
  • Launch: Set clear expectations for rolling out the project with a structured plan.
  • Management: Clarify how the team will optimize and maintain the product over time.
  • Retirement: Help stakeholders understand when and how to phase out outdated tools or content effectively.

I’ve structured the lifecycle this way to help stakeholders understand what to expect. When they know what’s happening at each stage, it builds trust and helps the working relationship. Stakeholders will see exactly what role you play and how your team adds value throughout the process.

Publishing Best Practices

Writing for the web isn’t the same as traditional writing, and it’s critical for your team to help stakeholders understand the differences. Your playbook can include practical advice to guide them, such as:

  • Planning and organizing content to align with user needs and business goals.
  • Crafting content that’s user-friendly, SEO-optimized, and designed for clarity.
  • Maintaining accessible and high-quality standards to ensure inclusivity.

By providing this guidance, you empower stakeholders to create content that’s not only effective but also reflects your team’s standards.

Understanding Your Users

Helping stakeholders understand your audience is essential for creating user-centered experiences. Your digital playbook can support this by including:

  • Detailed user personas that highlight specific needs and behaviors.
  • Recommendations for tools and methods to gather and analyze user data.
  • Practical tips for ensuring digital experiences are inclusive and accessible to all.

By sharing this knowledge, your team helps stakeholders make decisions that prioritize users, ultimately leading to more successful outcomes.

Recommended Resources

Stakeholders often are unaware of the wealth of resources that can help them improve their digital deliverables. Your playbook can help by recommending trusted solutions, such as:

  • Tools that enable stakeholders to carry out their own user research and testing.
  • Analytics tools that allow stakeholders to track the performance of their websites.
  • A list of preferred suppliers in case stakeholders need to bring in external experts.

These recommendations ensure stakeholders are equipped with reliable resources that align with your team’s processes.

Policies And Governance

Uncertainty about organizational policies can lead to confusion and missteps. Your playbook should provide clarity by outlining:

  • Accessibility and inclusivity standards to ensure compliance and user satisfaction.
  • Data privacy and security protocols to safeguard user information.
  • Clear processes for prioritizing and governing projects to maintain focus and consistency.

By setting these expectations, your team establishes a foundation of trust and accountability that stakeholders can rely on.

Of course, you can have the best digital playbook in the world, but if people don’t reference it, then it is a wasted opportunity.

Making Your Digital Playbook Stick

It falls to you and your team to ensure as many stakeholders as possible engage with your playbook. Try the following:

  • Make It Easy to Find
    How often do stakeholders struggle to find important resources? Avoid hosting the playbook in a forgotten corner of your intranet. Instead, place it front and center on a well-maintained, user-friendly site that’s accessible to everyone.
  • Keep It Engaging
    Let’s face it — nobody wants to sift through walls of text. Use visuals like infographics, short explainer videos, and clear headings to make your playbook not only digestible but also enjoyable to use. Think of it as creating a resource your stakeholders will actually want to refer back to.
  • Frame It as a Resource
    A common pitfall is presenting the playbook as a rigid set of rules. Instead, position it as a helpful guide designed to make everyone’s work easier. Highlight how it can simplify workflows, improve outcomes, and solve real-world problems your stakeholders face daily.
  • Share at Relevant Moments
    Don’t wait for stakeholders to find the playbook themselves. Instead, proactively share relevant sections when they’re most needed. For example, send the discovery phase documentation when starting a new project or share content guidelines when someone is preparing to write for the website. This just-in-time approach ensures the playbook’s guidance is applied when it matters most.

Start Small, Then Scale

Creating a digital playbook might sound like a daunting task, but it doesn’t have to be. Begin with a few core sections and expand over time. Assign ownership to a specific team or individual to ensure it remains updated and relevant.

In the end, a digital playbook is an investment. It saves time, reduces conflicts, and elevates your organization’s digital maturity.

Just as a design system is critical for visual harmony, a digital playbook is essential for operational excellence.

Further Reading On SmashingMag

Categories: Others Tags:

5 Strategies for Securing Board Meeting Data with Cloud Storage Solutions

January 29th, 2025 No comments

Board meetings are an essential process in the company’s life. They are where vital decisions are made, and the company’s direction is decided. These meetings can be financial, technical, or managerial.

Because of this, board meetings can be a potential target for hackers. The valuable data e shared and created during the meetings can be misused in many ways. Leveraging secure cloud storage solutions can help businesses protect that data.

To protect your board meetings, you should start by understanding the importance of secure cloud storage for board data and finding the best strategy to protect it. 

Importance of protecting board meeting data

cloud storage encryption

Source

A board meeting usually revolves around an important topic. Whether that’s something technical about the product’s lifecycle, future marketing campaigns, handling a problem, or devising a financial plan, the meeting is likely to contain valuable information.

While there’s always a human risk, even in physical meetings, that someone will leak information, online board meetings have additional problems. For example, there are chances that someone is using a stolen account to join the meeting or that a compromised note-taking app is being used by the meeting members. 

Data generated and stored during and after the meeting can contain information that could compromise the company. A hacker who steals this data can use it to blackmail the board members or sell it to your competition. 

On the other hand, having your cloud storage hacked and data stolen counts as data leakage. You can also be eligible for fines because data regulations could be broken. 

Cloud storage solutions explainedcloud storage features

Source

One of the most practical ways to share files and collaborate with others is through cloud storage solutions. These scalable and flexible solutions allow users to share, store, and access data. 

Cloud storage providers often offer several security features. However, they often aren’t enough, as data leaks can occur due to oversights in other aspects. For example, Google Workspace has an SSL/TLS certificate that encrypts data between a user and a client.

Furthermore, it allows you to implement a multi-factor authentication procedure quickly. However, your company’s computer network could be compromised, which is why it’s important to implement additional data security strategies such as real-time monitoring and strong password policies. 

Strategies for Securing Board Meeting Data

Once you understand why your business should pay attention to board meeting data security, you should move on to implementing effective strategies to achieve it. 

Some methods mentioned on this list require technical personnel, while others can be implemented as policies or with minimal training. 

1. Real-time monitoring and response

One of the best ways to protect your data is through security solutions that provide you with real-time monitoring and protection. This type of software often leverages artificial intelligence and machine learning to detect unusual patterns in user behavior.

Real-time monitoring tools can send alerts whenever there’s suspicious traffic or behavior. When these occur or unauthorized attempts are detected, the system can instantly trigger alerts and apply extra security measures without manual oversight.

Leveraging event-driven architecture allows organizations to automate these critical safeguards, ensuring data stays secure and accessible only to authorized individuals. Many cloud storage services offer these features by default, but combining them with third-party apps is always great. 

2. Encrypted cloud storage

When choosing business cloud storage, always choose providers offering robust security measures. This includes advanced encryption protocols such as the latest AES, which secures data.

It’s also important that your cloud storage provider has features that protect data at rest and in transit. This way, transferring data such as board meeting notes is secure, and the risk of someone reading the data while in transit is minimized.

If the provider uses such encryption methods, your data will be protected even if unauthorized access occurs. This is because data will be unreadable without the decryption key. 

3. End-to-end encryption for file sharing

encrypted data

Source

It’s important that your files are encrypted during sharing and that only you and the recipient can read them. End-to-end encryption ensures this, and many cloud storage options offer this functionality.

However, a problem occurs when the files are shared on risky platforms. For example, an employee uses their social media to share board meeting files rather than a company-approved platform. 

4. Compliance audits

While your business must implement cybersecurity measures to guarantee the safety of board meeting data, compliance regulations need to be considered as well. Depending on the location of your business, you should acknowledge and comply with relevant data processing regulations.

This is GPDR for businesses that operate with customers and clients from Europe. On the other hand, we have regulations such as HIPAA, PIPEDA, and CCPA. Regular compliance audits ensure that the company complies with regulations.

Furthermore, these audits should apply to confirm whether your file-sharing and cloud-storage solutions are compliant with the relevant regulations.

5. Data privacy policies

Hackers and external actors aren’t the only threat to your data. Everyone in your company should understand how to handle data and which information shouldn’t be shared outside the company. 

Data privacy policies outline acceptable use, access limitations, and data handling procedures. They can also include acceptable platforms and software for communication and file sharing. 

Adopting a data privacy policy isn’t a one-time action. Instead, it should be regularly enforced and updated according to the updates in laws, regulatory requirements, and your company’s direction and culture. 

Cloud storage solutions play an essential role in a company’s effectiveness

Your Google Drive or other cloud storage options can lead to significant problems without adequate protection. To solve this, you should implement at least one of the strategies mentioned in this article.

A company’s security methods should be based on informed decisions based on its weak points. It’s best to consult with an external cybersecurity professional or agency. However, this can be costly.
If you can’t afford proper cybersecurity vetting of your business systems, it’s best to implement the fundamental and recommended cybersecurity measures. Furthermore, anti-virus and anti-fraud solutions can help you protect your business for a fee.

Featured Image by Caspar Camille Rubin on Unsplash

The post 5 Strategies for Securing Board Meeting Data with Cloud Storage Solutions appeared first on noupe.

Categories: Others Tags:

What on Earth is the `types` Descriptor in View Transitions?

January 29th, 2025 No comments

Have you ever stumbled upon something new and went to research it just to find that there is little-to-no information about it? It’s a mixed feeling: confusing and discouraging because there is no apparent direction, but also exciting because it’s probably new to lots of people, not just you. Something like that happened to me while writing an Almanac’s entry for the @view-transition at-rule and its types descriptor.

You may already know about Cross-Document View Transitions: With a few lines of CSS, they allow for transitions between two pages, something that in the past required a single-app framework with a side of animation library. In other words, lots of JavaScript.

To start a transition between two pages, we have to set the @view-transition at-rule’s navigation descriptor to auto on both pages, and that gives us a smooth cross-fade transition between the two pages. So, as the old page fades out, the new page fades in.

@view-transition {
  navigation: auto;
}

That’s it! And navigation is the only descriptor we need. In fact, it’s the only descriptor available for the @view-transition at-rule, right? Well, turns out there is another descriptor, a lesser-known brother, and one that probably envies how much attention navigation gets: the types descriptor.

What do people say about types?

Cross-Documents View Transitions are still fresh from the oven, so it’s normal that people haven’t fully dissected every aspect of them, especially since they introduce a lot of new stuff: a new at-rule, a couple of new properties and tons of pseudo-elements and pseudo-classes. However, it still surprises me the little mention of types. Some documentation fails to even name it among the valid  @view-transition descriptors. Luckily, though, the CSS specification does offer a little clarification about it:

The types descriptor sets the active types for the transition when capturing or performing the transition.

To be more precise, types can take a space-separated list with the names of the active types (as ), or none if there aren’t valid active types for that page.

  • Name: types
  • For: @view-transition
  • Value: none | +
  • Initial: none

So the following values would work inside types:

@view-transition {
  navigation: auto;
  types: bounce;
}

/* or a list */

@view-transition {
  navigation: auto;
  types: bounce fade rotate;
}

Yes, but what exactly are “active” types? That word “active” seems to be doing a lot of heavy lifting in the CSS specification’s definition and I want to unpack that to better understand what it means.

Active types in view transitions

The problem: A cross-fade animation for every page is good, but a common thing we need to do is change the transition depending on the pages we are navigating between. For example, on paginated content, we could slide the content to the right when navigating forward and to the left when navigating backward. In a social media app, clicking a user’s profile picture could persist the picture throughout the transition. All this would mean defining several transitions in our CSS, but doing so would make them conflict with each other in one big slop. What we need is a way to define several transitions, but only pick one depending on how the user navigates the page.

The solution: Active types define which transition gets used and which elements should be included in it. In CSS, they are used through :active-view-transition-type(), a pseudo-class that matches an element if it has a specific active type. Going back to our last example, we defined the document’s active type as bounce. We could enclose that bounce animation behind an :active-view-transition-type(bounce), such that it only triggers on that page.

/* This one will be used! */
html:active-view-transition-type(bounce) {
  &::view-transition-old(page) {
    /* Custom Animation */
  }

  &::view-transition-new(page) {
    /* Custom Animation */
  }
}

This prevents other view transitions from running if they don’t match any active type:

/* This one won't be used! */
html:active-view-transition-type(slide) {
  &::view-transition-old(page) {
    /* Custom Animation */
  }

  &::view-transition-new(page) {
    /* Custom Animation */
  }
}

I asked myself whether this triggers the transition when going to the page, when out of the page, or in both instances. Turns out it only limits the transition when going to the page, so the last bounce animation is only triggered when navigating toward a page with a bounce value on its types descriptor, but not when leaving that page. This allows for custom transitions depending on which page we are going to.

The following demo has two pages that share a stylesheet with the bounce and slide view transitions, both respectively enclosed behind an :active-view-transition-type(bounce) and :active-view-transition-type(slide) like the last example. We can control which page uses which view transition through the types descriptor.

The first page uses the bounce animation:

@view-transition {
  navigation: auto;
  types: bounce;
}

The second page uses the slide animation:

@view-transition {
  navigation: auto;
  types: slide;
}

You can visit the demo here and see the full code over at GitHub.

The types descriptor is used more in JavaScript

The main problem is that we can only control the transition depending on the page we’re navigating to, which puts a major cap on how much we can customize our transitions. For instance, the pagination and social media examples we looked at aren’t possible just using CSS, since we need to know where the user is coming from. Luckily, using the types descriptor is just one of three ways that active types can be populated. Per spec, they can be:

  1. Passed as part of the arguments to startViewTransition(callbackOptions)
  2. Mutated at any time, using the transition’s types
  3. Declared for a cross-document view transition, using the types descriptor.

The first option is when starting a view transition from JavaScript, but we want to trigger them when the user navigates to the page by themselves (like when clicking a link). The third option is using the types descriptor which we already covered. The second option is the right one for this case! Why? It lets us set the active transition type on demand, and we can perform that change just before the transition happens using the pagereveal event. That means we can get the user’s start and end page from JavaScript and then set the correct active type for that case.

I must admit, I am not the most experienced guy to talk about this option, so once I demo the heck out of different transitions with active types I’ll come back with my findings! In the meantime, I encourage you to read about active types here if you are like me and want more on view transitions:


What on Earth is the `types` Descriptor in View Transitions? originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags:

What’s Next for Web Development? Top Trends You Need to Know in 2025

January 29th, 2025 No comments

As we step into 2025, the world of web development seems to be ready for many exciting advances, each driven by a combination of innovative technology and changing user preferences. Right from the expanding role of AI in web development and shifts in preferred programming languages to the emergence of decentralized technologies, keeping up with the latest web development trends is important for web developers as the speed of innovation increases. In this blog post, we will see a list of key trends that will shape the world of web development in 2025. So, let’s set off: 

10 Best Web Development Trends Your Business Must Adopt   

AI Integration into Web Development  

Needless to say, Artificial Intelligence is set to remain a revolutionary technology in web development throughout 2025. Developing on unprecedented advancements in 2024, AI continues to transform web development by improving workflows, enhancing user experiences, and redefining how websites are created, maintained, and scaled. While the influence of AI in web development has spread in every stage, its impact is set to upsurge down the line. Tools such as Tabnine and GitHub Copilot are already extensively used to automate repeated coding tasks, offering real-time suggestions so that professional developers can focus on more complicated challenges.    

Programming Languages Evolution

In 2025, the coding ecosystem will undergo a significant transformation, with top web development technologies, such as Kotlin, Rust, and Go gaining ground alongside popular players, like Python and JavaScript. This evolution shows the growing need for languages that resolve specific issues and discover new opportunities in web development. For instance, Python continues to lead in Artificial Intelligence, Machine Learning, and Data Science, flourishing in data-intensive environments that demand fast prototyping. Its versatility and powerful library make it paramount for applications ranging from predictive analytics to automation.         

Headless CMS Adoption

Building on the evolution of coding languages, the growth of API-first approaches, including headless CMS architecture, is reshaping the web dev trends, providing new methods for developers to leverage flexibility and scalability. The headless technique separates the frontend and backend, allowing developers to utilize the latest programming languages, tools, and frameworks to create customized solutions that excel across various platforms and devices. In a headless system, content is handled in a backend CMS and delivered to the front end through Application Programming Interfaces. This enables developers to create unique user interfaces without being restricted by traditional CMS templates.   

Heightened Regulatory Scrutiny 

As data privacy emerges as a global priority, regulatory scrutiny is poised to strengthen in 2025, impacting more industries than ever before. High-profile regulations like the EU’s General Data Protection Regulation have already changed how companies manage user data. Expansions of current laws and the inclusion of new regional standards, like the Digital Markets Act (DMA) in the European Union or stringent privacy protocols in the US will require organizations to implement more holistic compliance strategies. For developers, this means data privacy and protection must be incorporated into every phase of the software development lifecycle. Developers will have to ensure websites are designed with current trends in web development like opt-in/opt-out mechanisms, cookie consent management, and strong data encryption to fulfill regulatory requirements.  

DevSecOps Integration into Cybersecurity 

DevSecOps stands for Development, Security, and Operations, which is a framework that incorporates security into software building processes. As 2025 approaches, you will see this framework strengthen its role in modern web development, integrating best security practices into the development lifecycle. As cyber threats have become more frequent and sophisticated, treating traditional approaches to security as an afterthought checklist is no longer adequate. Developers need to leverage DevSecOps to embed security in every phase of development, ensuring web applications featuring modern web development trends remain resilient from the start.       

Just to let you know, DevSecOps integrates security into CI/CD pipelines, allowing teams to recognize and resolve vulnerabilities early. Automated tools for static code analysis, vulnerability scanning, and dependency management are important components of this approach, offering real-time feedback to developers without interrupting workflows. Solutions such as Checkmarx and Synk scan open-source libraries and app code for possible risks, minimizing the chance of breaches caused by unfixed vulnerabilities. Besides this, if you are experiencing repeated cyber attacks on your existing website or web application, you can hire a web development company to fix this issue effectively.     

Decentralized Web Technologies 

In 2025, you will witness web3 trends like decentralized web technologies shifting from niche adoption to widespread implementation, completely transforming how digital systems operate. Tools comprising blockchain and peer-to-peer networks guarantee to sort out major problems in data privacy, security, and control. Decentralized identity systems, such as W3C’s Decentralized Identifiers (DIDs) and Microsoft’s Azure AD Verifiable Credentials, enable users to securely authenticate without third-party agents. They lower the scope of data breaches while ensuring granular control over sensitive information. These shifts provide golden opportunities for WordPress users to incorporate decentralized technologies into their websites and digital experiences.      

In case you don’t know what granular control is, we must let you know that it is an approach to handle access to data, features, or permissions in a detailed manner. It is a more specific method than broad control, which provides high-level access. 

7. Progressive Web Apps (PWAs) 

Web development trends like Progressive Web Apps have been gaining popularity over the past few years and the global PWA market size is set to grow from USD 5.23 billion in 2025 to USD 21.44 billion in 2033 according to GlobeNewswire. PWAs bring together the best of both worlds, like top features of web and mobile apps, offering an app-like experience with quicker loading speeds, offline functionality, and smooth performance across different devices. Embracing Progressive Web Apps means achieving higher user engagement, enhanced SEO, and reduced bounce rates for your company. Given the increase in mobile internet consumption, if you decide not to invest in PWAs, you will be left behind your competitors very soon.

However, if you have made up your mind to build a Progressive Web App, you must learn these tips to choose web development company to attain the best return on investment:

  1. Clearly define your needs and goals 
  2. Review the portfolio and past projects of the company 
  3. Check their client testimonials and reviews 
  4. Evaluate their technical expertise
  5. Understand their pricing structure, and 
  6. Assess their post-launch support and maintenance abilities    

8. Single Page Applications (SPAs) 

Web dev trends like Single Page Applications continue to grow, and it will be a top priority for many organizations in 2025. SPAs enable users to navigate through a website without reloading the whole page, which lowers load times and improves the user experience. If you put your money into SPAs, it can provide a smoother, quicker, and more interactive experience, enhancing user satisfaction and engagement at the same time. SPAs are extremely beneficial for you if your establishment prioritizes delivering dynamic content, like eCommerce websites or social networks.    

9. API-First Development 

The demand for streamlined cross-platform communication has placed API-first development at the forefront of web development industry trends. When working on such web development trends, developers focus on creating powerful APIs prior to building the frontend. This ensures seamless integration between various platforms and devices. Companies that will embrace API-first development will experience swifter development cycles and better scalability. This trend is specifically important if you are planning to develop multi-platform web apps, as APIs facilitate interaction and data sharing between multiple systems.       

10. Motion UI 

As users look for more interactive experiences, Motion UI will play a significant role in web design and web development trends in 2025. This trend allows developers to design seamless transitions, animations, and engaging interactions on websites. These dynamic elements help hold users’ attention and enhance overall engagement. By incorporating Motion UI, you can offer pleasing and enjoyable experiences to users that suit your brand identity and boost customer retention.   

The Rundown

Through this blog, you must have learned that 2025 is going to be a year of evolution, as developers sail through an ecosystem fraught with innovation and complexity. From AI-driven advancements to the rise of decentralized technologies, these web dev trends project a future where adaptability and creativity will drive success in web development. If you also want to make your digital presence ready for a stellar 2025, do not forget to get into a conversation with a leading web development company to turn your vision into reality.

Featured image by Jakub ?erdzicki on Unsplash

The post What’s Next for Web Development? Top Trends You Need to Know in 2025 appeared first on noupe.

Categories: Others Tags:

Wholesaler vs. Investor: What Real Estate Suppliers Need to Know

January 29th, 2025 No comments

Real estate investments allow you to choose from different paths to start your career in the property sector.

The most popular option is to be a landlord, which entails buying residential or commercial property to lease out.

Real estate investment trusts (REITs) are also options you can consider if you’re uninterested in managing commercial or residential spaces. By working with a REIT company, you can own or finance income-generating properties that let you buy shares and earn dividends.

If you want shorter commitments, you can look into wholesaling, which involves finding great deals on properties and assigning them to buyers for a fee.

Becoming a real estate supplier is another route you can consider. A supplier connects buyers with people selling properties, giving wholesalers and investors more options and opportunities to earn more profits from their investments.

These approaches offer different benefits that make real estate an advantageous choice that can help you achieve your career and financial goals.

Wholesale vs. Traditional Real Estate Investing

Wholesale real estate investing involves looking for properties priced lower than the current market value, getting them under contract, and assigning them to other investors.

Wholesalers act as middlemen since they earn a fee for connecting sellers with buyers.

The wholesale real estate investment process starts with identifying motivated sellers and entering into an agreement with them. Once the property is under contract, the wholesaler markets it to investors interested in buying it.

The wholesaler earns the difference between the agreed-upon purchase price and the amount the end buyer pays.

On the other hand, traditional real estate investing pertains to buying, owning, and managing properties to generate income or profit through monthly rent or by selling them at higher prices. REITs are included in this strategy.

To succeed in this traditional real estate business, you need significant upfront capital, sufficient market understanding, and management skills. If you’re successful, you can enjoy steady cash flow and tax benefits. You can also build your wealth over time.

Wholesale real estate and traditional real estate investing differ in various ways.

Firstly, in wholesale real estate investing, you don’t own the property, which means there’s lower financial risk and lower upfront capital. It offers quick payouts, but finding deals and buyers can be challenging. You also need to have strong market knowledge, networking, and negotiation skills.

On the other hand, the traditional approach requires significant capital, either from one’s savings or through financing. It also typically comes with market downturns, unexpected maintenance costs, and tenant-related challenges. However, it offers the potential for steady cash flow and tax benefits. You can use it as a wealth-building strategy as well.  

The Role of a Supplier in Wholesale and Traditional Real Estate Investing

In both real estate investment strategies, suppliers have the important role of finding and providing the properties for transactions between sellers and buyers.

In wholesale real estate, suppliers provide wholesalers with opportunities to secure below-market properties, which allows the latter to assign them to end buyers. The supplier’s willingness to sell the property at a discount enables the wholesaler to earn higher profits.

For traditional real estate investors, suppliers provide properties they can purchase for rental income, flipping, or long-term holding. With ready homes or commercial spaces to sell, buyers can grow their portfolios with fewer challenges.

Suppliers form the foundation of real estate transactions, which makes this role indispensable for successful deals. As such, it is a career path worth exploring.

How Suppliers Can Provide Top-Notch Services for Real Estate Wholesalers and Investors

If you want to be a successful supplier and succeed in real estate, you must know how to customize your services to meet the needs of wholesalers and traditional investors. 

Since wholesalers prioritize quick transactions and discounted properties, you can meet their needs by offering short-term engagements. For instance, you can streamline the process with flexible contracts to allow wholesalers to acquire a property and assign it to the buyer quickly. You can also encourage wholesalers to make faster decisions by providing accurate and truthful information about the property, such as its repair needs and market potential.  

For traditional investors, offer bulk discounts on multiple properties to help them build their portfolios. You can also collaborate with them on property developments or renovations for shared profits and form project partnerships.

Investors value suppliers who deliver high-quality properties, so gain their trust by being consistent and dependable.

Whether you work with a wholesaler or investor, be flexible, understanding, and practice transparency to sell your services faster and ensure a mutually beneficial outcome and long-term success for all parties.

What Citizenship by Investment Programs Offer to Suppliers

Citizenship by investment programs (CIPs) offer a unique opportunity for suppliers who want to expand their resources. These pathways allow wholesale and traditional real estate investors to own a property in another country and legally gain a second passport.

These pathways are offered by some of the most sought-after destinations, including five countries in the West Indies that offer Caribbean citizenship by investment programs, which are:

  • Antigua and Barbuda
  • Dominica
  • Grenada
  • St. Lucia
  • St. Kitts and Nevis

Through the CIP, property buyers can own commercial or residential property in one of the participating countries and become citizens without renouncing their nationality. They can legally hold two passports and choose the best one to use when traveling.

These passports are some of the most powerful in the world and allow visa-free entry to different countries across the globe.

In addition to the expanded portfolio and second passport, investors in these programs can enjoy several tax benefits, including not paying wealth, inheritance, and capital gain taxes.

As a supplier, you can look for properties eligible for this program and sell them to buyers who want to establish themselves internationally. In addition to owning property in another country, investors can look for more lucrative opportunities in a new market and expand their portfolios.

Moreover, anyone who opts for a citizenship-by-investment program can live in a beautiful country where they can relax and have peace of mind.

As a supplier, you can leverage the benefits offered by citizenship by investment programs to expand your offerings to wholesalers and traditional real estate investors.

Featured image by Veronika Koroleva on Unsplash

The post Wholesaler vs. Investor: What Real Estate Suppliers Need to Know appeared first on noupe.

Categories: Others Tags:

Are Logos Becoming Irrelevant in Modern Branding?

January 29th, 2025 No comments

Logos are no longer the sole defining element of a brand, as dynamic branding, AI personalization, and social media dominance challenge their relevance. While still valuable as anchors of identity, logos must evolve into adaptable, integrated tools to thrive in today’s fluid and experience-driven branding landscape.

Categories: Designing, Others Tags:

Transitioning Top-Layer Entries And The Display Property In CSS

January 29th, 2025 No comments

Animating from and to display: none; was something we could only achieve with JavaScript to change classes or create other hacks. The reason why we couldn’t do this in CSS is explained in the new CSS Transitions Level 2 specification:

“In Level 1 of this specification, transitions can only start during a style change event for elements that have a defined before-change style established by the previous style change event. That means a transition could not be started on an element that was not being rendered for the previous style change event.”

In simple terms, this means that we couldn’t start a transition on an element that is hidden or that has just been created.

What Does transition-behavior: allow-discrete Do?

allow-discrete is a bit of a strange name for a CSS property value, right? We are going on about transitioning display: none, so why isn’t this named transition-behavior: allow-display instead? The reason is that this does a bit more than handling the CSS display property, as there are other “discrete” properties in CSS. A simple rule of thumb is that discrete properties do not transition but usually flip right away between two states. Other examples of discrete properties are visibility and mix-blend-mode. I’ll include an example of these at the end of this article.

To summarise, setting the transition-behavior property to allow-discrete allows us to tell the browser it can swap the values of a discrete property (e.g., display, visibility, and mix-blend-mode) at the 50% mark instead of the 0% mark of a transition.

What Does @starting-style Do?

The @starting-style rule defines the styles of an element right before it is rendered to the page. This is highly needed in combination with transition-behavior and this is why:

When an item is added to the DOM or is initially set to display: none, it needs some sort of “starting style” from which it needs to transition. To take the example further, popovers and dialog elements are added to a top layer which is a layer that is outside of your document flow, you can kind of look at it as a sibling of the element in your page’s structure. Now, when opening this dialog or popover, they get created inside that top layer, so they don’t have any styles to start transitioning from, which is why we set @starting-style. Don’t worry if all of this sounds a bit confusing. The demos might make it more clearly. The important thing to know is that we can give the browser something to start the animation with since it otherwise has nothing to animate from.

A Note On Browser Support

At the moment of writing, the transition-behavior is available in Chrome, Edge, Safari, and Firefox. It’s the same for @starting-style, but Firefox currently does not support animating from display: none. But remember that everything in this article can be perfectly used as a progressive enhancement.

Now that we have the theory of all this behind us, let’s get practical. I’ll be covering three use cases in this article:

  • Animating from and to display: none in the DOM.
  • Animating dialogs and popovers entering and exiting the top layer.
  • More “discrete properties” we can handle.

Animating From And To display: none In The DOM

For the first example, let’s take a look at @starting-style alone. I created this demo purely to explain the magic. Imagine you want two buttons on a page to add or remove list items inside of an unordered list.

This could be your starting HTML:

<button type="button" class="btn-add">
  Add item
</button>
<button type="button" class="btn-remove">
  Remove item
</button>
<ul role="list"></ul>

Next, we add actions that add or remove those list items. This can be any method of your choosing, but for demo purposes, I quickly wrote a bit of JavaScript for it:

document.addEventListener("DOMContentLoaded", () => {
  const addButton = document.querySelector(".btn-add");
  const removeButton = document.querySelector(".btn-remove");
  const list = document.querySelector('ul[role="list"]');

  addButton.addEventListener("click", () => {
    const newItem = document.createElement("li");
    list.appendChild(newItem);
  });

  removeButton.addEventListener("click", () => {
    if (list.lastElementChild) {
      list.lastElementChild.classList.add("removing");
      setTimeout(() => {
        list.removeChild(list.lastElementChild);
      }, 200);
    }
  });
});

When clicking the addButton, an empty list item gets created inside of the unordered list. When clicking the removeButton, the last item gets a new .removing class and finally gets taken out of the DOM after 200ms.

With this in place, we can write some CSS for our items to animate the removing part:

ul {
    li {
      transition: opacity 0.2s, transform 0.2s;

      &.removing {
        opacity: 0;
        transform: translate(0, 50%);
      }
    }
  }

This is great! Our .removing animation is already looking perfect, but what we were looking for here was a way to animate the entry of items coming inside of our DOM. For this, we will need to define those starting styles, as well as the final state of our list items.

First, let’s update the CSS to have the final state inside of that list item:

ul {
    li {
      opacity: 1;
      transform: translate(0, 0);
      transition: opacity 0.2s, transform 0.2s;

      &.removing {
        opacity: 0;
        transform: translate(0, 50%);
      }
    }
  }

Not much has changed, but now it’s up to us to let the browser know what the starting styles should be. We could set this the same way we did the .removing styles like so:

ul {
    li {
      opacity: 1;
      transform: translate(0, 0);
      transition: opacity 0.2s, transform 0.2s;

      @starting-style {
        opacity: 0;
        transform: translate(0, 50%);
      }

      &.removing {
        opacity: 0;
        transform: translate(0, 50%);
      }
    }
  }

Now we’ve let the browser know that the @starting-style should include zero opacity and be slightly nudged to the bottom using a transform. The final result is something like this:

But we don’t need to stop there! We could use different animations for entering and exiting. We could, for example, update our starting style to the following:

@starting-style {
  opacity: 0;
  transform: translate(0, -50%);
}

Doing this, the items will enter from the top and exit to the bottom. See the full example in this CodePen:

See the Pen @starting-style demo – up-in, down-out [forked] by utilitybend.

When To Use transition-behavior: allow-discrete

In the previous example, we added and removed items from our DOM. In the next demo, we will show and hide items using the CSS display property. The basic setup is pretty much the same, except we will add eight list items to our DOM with the .hidden class attached to it:

  <button type="button" class="btn-add">
    Show item
  </button>
  <button type="button" class="btn-remove">
    Hide item
  </button>

<ul role="list">
  <li class="hidden"></li>
  <li class="hidden"></li>
  <li class="hidden"></li>
  <li class="hidden"></li>
  <li class="hidden"></li>
  <li class="hidden"></li>
  <li class="hidden"></li>
  <li class="hidden"></li>
</ul>

Once again, for demo purposes, I added a bit of JavaScript that, this time, removes the .hidden class of the next item when clicking the addButton and adds the hidden class back when clicking the removeButton:

document.addEventListener("DOMContentLoaded", () => {
  const addButton = document.querySelector(".btn-add");
  const removeButton = document.querySelector(".btn-remove");
  const listItems = document.querySelectorAll('ul[role="list"] li');

  let activeCount = 0;

  addButton.addEventListener("click", () => {
    if (activeCount < listItems.length) {
      listItems[activeCount].classList.remove("hidden");
      activeCount++;
    }
  });

  removeButton.addEventListener("click", () => {
    if (activeCount > 0) {
      activeCount--;
      listItems[activeCount].classList.add("hidden");
    }
  });
});

Let’s put together everything we learned so far, add a @starting-style to our items, and do the basic setup in CSS:

ul {
    li {
      display: block;
      opacity: 1;
      transform: translate(0, 0);
      transition: opacity 0.2s, transform 0.2s;

      @starting-style {
        opacity: 0;
        transform: translate(0, -50%);
      }

      &.hidden {
        display: none;
        opacity: 0;
        transform: translate(0, 50%);
      }
    }
  }

This time, we have added the .hidden class, set it to display: none, and added the same opacity and transform declarations as we previously did with the .removing class in the last example. As you might expect, we get a nice fade-in for our items, but removing them is still very abrupt as we set our items directly to display: none.

This is where the transition-behavior property comes into play. To break it down a bit more, let’s remove the transition property shorthand of our previous CSS and open it up a bit:

ul {
    li {
      display: block;
      opacity: 1;
      transform: translate(0, 0);
      transition-property: opacity, transform;
      transition-duration: 0.2s;
    }
  }

All that is left to do is transition the display property and set the transition-behavior property to allow-discrete:

ul {
    li {
      display: block;
      opacity: 1;
      transform: translate(0, 0);
      transition-property: opacity, transform, display;
      transition-duration: 0.2s;
      transition-behavior: allow-discrete;
      /* etc. */
    }
  }

We are now animating the element from display: none, and the result is exactly as we wanted it:

We can use the transition shorthand property to make our code a little less verbose:

transition: opacity 0.2s, transform 0.2s, display 0.2s allow-discrete;

You can add allow-discrete in there. But if you do, take note that if you declare a shorthand transition after transition-behavior, it will be overruled. So, instead of this:

transition-behavior: allow-discrete;
transition: opacity 0.2s, transform 0.2s, display 0.2s;

…we want to declare transition-behavior after the transition shorthand:

transition: opacity 0.2s, transform 0.2s, display 0.2s;
transition-behavior: allow-discrete;

Otherwise, the transition shorthand property overrides transition-behavior.

See the Pen @starting-style and transition-behavior: allow-discrete [forked] by utilitybend.

Animating Dialogs And Popovers Entering And Exiting The Top Layer

Let’s add a few use cases with dialogs and popovers. Dialogs and popovers are good examples because they get added to the top layer when opening them.

What Is That Top Layer?

We’ve already likened the “top layer” to a sibling of the element, but you might also think of it as a special layer that sits above everything else on a web page. It’s like a transparent sheet that you can place over a drawing. Anything you draw on that sheet will be visible on top of the original drawing.

The original drawing, in this example, is the DOM. This means that the top layer is out of the document flow, which provides us with a few benefits. For example, as I stated before, dialogs and popovers are added to this top layer, and that makes perfect sense because they should always be on top of everything else. No more z-index: 9999!

But it’s more than that:

  • z-index is irrelevant: Elements on the top layer are always on top, regardless of their z-index value.
  • DOM hierarchy doesn’t matter: An element’s position in the DOM doesn’t affect its stacking order on the top layer.
  • Backdrops: We get access to a new ::backdrop pseudo-element that lets us style the area between the top layer and the DOM beneath it.

Hopefully, you are starting to understand the importance of the top layer and how we can transition elements in and out of it as we would with popovers and dialogues.

Transitioning The Dialog Element In The Top Layer

The following HTML contains a button that opens a element, and that element contains another button that closes the . So, we have one button that opens the and one that closes it.

<button class="open-dialog" data-target="my-modal">Show dialog</button>

<dialog id="my-modal">
  <p>Hi, there!</p>
  <button class="outline close-dialog" data-target="my-modal">
    close
  </button>
</dialog>

A lot is happening in HTML with invoker commands that will make the following step a bit easier, but for now, let’s add a bit of JavaScript to make this modal actually work:

// Get all open dialog buttons.
const openButtons = document.querySelectorAll(".open-dialog");
// Get all close dialog buttons.
const closeButtons = document.querySelectorAll(".close-dialog");

// Add click event listeners to open buttons.
openButtons.forEach((button) =< {
  button.addEventListener("click", () =< {
    const targetId = button.getAttribute("data-target");
    const dialog = document.getElementById(targetId);
    if (dialog) {
      dialog.showModal();
    }
  });
});

// Add click event listeners to close buttons.
closeButtons.forEach((button) =< {
  button.addEventListener("click", () =< {
    const targetId = button.getAttribute("data-target");
    const dialog = document.getElementById(targetId);
    if (dialog) {
      dialog.close();
    }
  });
});

I’m using the following styles as a starting point. Notice how I’m styling the ::backdrop as an added bonus!

dialog {
  padding: 30px;
  width: 100%;
  max-width: 600px;
  background: #fff;
  border-radius: 8px;
  border: 0;
  box-shadow: 
    rgba(0, 0, 0, 0.3) 0px 19px 38px,
    rgba(0, 0, 0, 0.22) 0px 15px 12px;

  &::backdrop {
    background-image: linear-gradient(
      45deg in oklab,
      oklch(80% 0.4 222) 0%,
      oklch(35% 0.5 313) 100%
    );
  }
}

This results in a pretty hard transition for the entry, meaning it’s not very smooth:

Let’s add transitions to this dialog element and the backdrop. I’m going a bit faster this time because by now, you likely see the pattern and know what’s happening:

dialog {
  opacity: 0;
  translate: 0 30%;
  transition-property: opacity, translate, display;
  transition-duration: 0.8s;

  transition-behavior: allow-discrete;

  &[open] {
    opacity: 1;
    translate: 0 0;

    @starting-style {
      opacity: 0;
      translate: 0 -30%;
    }
  }
}

When a dialog is open, the browser slaps an open attribute on it:

<dialog open> ... </dialog>

And that’s something else we can target with CSS, like dialog[open]. So, in this case, we need to set a @starting-style for when the dialog is in an open state.

Let’s add a transition for our backdrop while we’re at it:

dialog {
  /* etc. */
  &::backdrop {
    opacity: 0;
    transition-property: opacity;
    transition-duration: 1s;
  }

  &[open] {
    /* etc. */
    &::backdrop {
      opacity: 0.8;

      @starting-style {
        opacity: 0;
      }
    }
  }
}

Now you’re probably thinking: A-ha! But you should have added the display property and the transition-behavior: allow-discrete on the backdrop!

But no, that is not the case. Even if I would change my backdrop pseudo-element to the following CSS, the result would stay the same:

 &::backdrop {
    opacity: 0;
    transition-property: opacity, display;
    transition-duration: 1s;
    transition-behavior: allow-discrete;
  }

It turns out that we are working with a ::backdrop and when working with a ::backdrop, we’re implicitly also working with the CSS overlay property, which specifies whether an element appearing in the top layer is currently rendered in the top layer.

And overlay just so happens to be another discrete property that we need to include in the transition-property declaration:

dialog {
  /* etc. */

&::backdrop {
  transition-property: opacity, display, overlay;
  /* etc. */
}

Unfortunately, this is currently only supported in Chromium browsers, but it can be perfectly used as a progressive enhancement.

And, yes, we need to add it to the dialog styles as well:

dialog {
  transition-property: opacity, translate, display, overlay;
  /* etc. */

&::backdrop {
  transition-property: opacity, display, overlay;
  /* etc. */
}

See the Pen Dialog: starting-style, transition-behavior, overlay [forked] by utilitybend.

It’s pretty much the same thing for a popover instead of a dialog. I’m using the same technique, only working with popovers this time:

See the Pen Popover transition with @starting-style [forked] by utilitybend.

Other Discrete Properties

There are a few other discrete properties besides the ones we covered here. If you remember the second demo, where we transitioned some items from and to display: none, the same can be achieved with the visibility property instead. This can be handy for those cases where you want items to preserve space for the element’s box, even though it is invisible.

So, here’s the same example, only using visibility instead of display.

See the Pen Transitioning the visibility property [forked] by utilitybend.

The CSS mix-blend-mode property is another one that is considered discrete. To be completely honest, I can’t find a good use case for a demo. But I went ahead and created a somewhat trite example where two mix-blend-modes switch right in the middle of the transition instead of right away.

See the Pen Transitioning mix-blend-mode [forked] by utilitybend.

Wrapping Up

That’s an overview of how we can transition elements in and out of the top layer! In an ideal world, we could get away without needing a completely new property like transition-behavior just to transition otherwise “un-transitionable” properties, but here we are, and I’m glad we have it.

But we also got to learn about @starting-style and how it provides browsers with a set of styles that we can apply to the start of a transition for an element that’s in the top layer. Otherwise, the element has nothing to transition from at first render, and we’d have no way to transition them smoothly in and out of the top layer.

Categories: Others Tags:

Svelte 5 And The Future Of Frameworks: A Chat With Rich Harris

January 28th, 2025 No comments

Svelte occupies a curious space within the web development world. It’s been around in one form or another for eight years now, and despite being used by the likes of Apple, Spotify, IKEA, and the New York Times, it still feels like something of an upstart, maybe even a black sheep. As creator Rich Harris recently put it,

“If React is Taylor Swift, we’re more of a Phoebe Bridges. She’s critically acclaimed, and you’ve heard of her, but you probably can’t name that many of her songs.”

— Rich Harris

This may be why the release of Svelte 5 in October this year felt like such a big deal. It tries to square the circle of convention and innovation. Can it remain one of the best-loved frameworks on the web while shaking off suspicions that it can’t quite rub shoulders with React, Vue, and others when it comes to scalability? Whisper it, but they might just have pulled it off. The post-launch reaction has been largely glowing, with weekly npm downloads doubling compared to six months ago.

Still, I’m not in the predictions game. The coming months and years will be the ultimate measure of Svelte 5. And why speculate on the most pressing questions when I can just ask Rich Harris myself? He kindly took some time to chat with me about Svelte and the future of web development.

Not Magic, But Magical

Svelte 5 is a ground-up rewrite. I don’t want to get into the weeds here — key changes are covered nicely in the migration guide — but suffice it to say the big one where day-to-day users are concerned is runes. At times, magic feeling $ has given way to the more explicit $state, $derived, and $effect.

A lot of the talk around Svelte 5 included the sentiment that it marks the ‘maturation’ of the framework. To Harris and the Svelte team, it feels like a culmination, with lessons learned combined with aspirations to form something fresh yet familiar.

“This does sort of feel like a new chapter. I’m trying to build something that you don’t feel like you need to get a degree in it before you can be productive in it. And that seems to have been carried through with Svelte 5.”

— Rich Harris

Although raw usage numbers aren’t everything, seeing the uptick in installations has been a welcome signal for Harris and the Svelte team.

“For us, success is definitely not based around adoption, though seeing the number go up and to the right gives us reassurance that we’re doing the right thing and we’re on the right track. Even if it’s not the goal, it is a useful indication. But success is really people building their apps with this framework and building higher quality, more resilient, more accessible apps.”

— Rich Harris

The tenets of a Svelte philosophy outlined by Harris earlier this year reinforce the point:

  1. The web matters.
  2. Optimise for vibes.
  3. Don’t optimise for adoption.
  4. HTML, The Mother Language.
  5. Embrace progress.
  6. Numbers lie.
  7. Magical, not magic.
  8. Dream big.
  9. No one cares.
  10. Design by consensus.

Click the link above to hear these expounded upon, but you get the crux. Svelte is very much a qualitative project. Although Svelte performs well in a fair few performance metrics itself, Harris has long been a critic of metrics like Lighthouse being treated as ends in themselves. Fastest doesn’t necessarily mean best. At the end of the day, we are all in the business of making quality websites.

Frameworks are a means to that end, and Harris sees plenty of work to be done there.

Software Is Broken

Every milestone is a cause for celebration. It’s also a natural pause in which to ask, “Now what?” For the Svelte team, the sights seem firmly set on shoring up the quality of the web.

“A conclusion that we reached over the course of a recent discussion is that most software in the world is kind of terrible. Things are not good. Half the stuff on my phone just doesn’t work. It fails at basic tasks. And the same is true for a lot of websites. The number of times I’ve had to open DevTools to remove the disabled attribute from a button so that I can submit a form, or been unclear on whether a payment went through or not.”

— Rich Harris

This certainly meshes with my experience and, doubtless, countless others. Between enshittification, manipulative algorithms, and the seemingly endless influx of AI-generated slop, it’s hard to shake the feeling that the web is becoming increasingly decadent and depraved.

“So many pieces of software that we use are just terrible. They’re just bad software. And it’s not because software engineers are idiots. Our main priority as toolmakers should be to enable people to build software that isn’t broken. As a baseline, people should be able to build software that works.”

— Rich Harris

This sense of responsibility for the creation and maintenance of good software speaks to the Svelte team’s holistic outlook and also looks to influence priorities going forward.

Brave New World

Part of Svelte 5 feels like a new chapter in the sense of fresh foundations. Anyone who’s worked in software development or web design will tell you how much of a headache ground-up rewrites are. Rebuilding the foundations is something to celebrate when you pull it off, but it also begs the question: What are the foundations for?

Harris has his eyes on the wider ecosystem around frameworks.

“I don’t think there’s a lot more to do to solve the problem of taking some changing application state and turning it into DOM, but I think there’s a huge amount to be done around the ancillary problems. How do we load the data that we put in those components? Where does that data live? How do we deploy our applications?”

— Rich Harris

In the short to medium term, this will likely translate into some love for SvelteKit, the web application framework built around Svelte. The framework might start having opinions about authentication and databases, an official component library perhaps, and dev tools in the spirit of the Astro dev toolbar. And all these could be precursors to even bigger explorations.

“I want there to be a Rails or a Laravel for JavaScript. In fact, I want there to be multiple such things. And I think that at least part of Svelte’s long-term goal is to be part of that. There are too many things that you need to learn in order to build a full stack application today using JavaScript.”

— Rich Harris

Onward

Although Svelte has been ticking along happily for years, the release of version 5 has felt like a new lease of life for the ecosystem around it. Every day brings new and exciting projects to the front page of the /r/sveltejs subreddit, while this year’s Advent of Svelte has kept up a sense of momentum following the stable release.

Below are just a handful of the Svelte-based projects that have caught my eye:

Despite the turbulence and inescapable sense of existential dread surrounding much tech, this feels like an exciting time for web development. The conditions are ripe for lovely new things to emerge.

And as for Svelte 5 itself, what does Rich Harris say to those who might be on the fence?

“I would say you have nothing to lose but an afternoon if you try it. We have a tutorial that will take you from knowing nothing about Svelte or even existing frameworks. You can go from that to being able to build applications using Svelte in three or four hours. If you just want to learn Svelte basics, then that’s an hour. Try it.”

— Rich Harris

Further Reading On SmashingMag

Categories: Others Tags: